Created
November 12, 2011 13:26
-
-
Save lbj96347/1360519 to your computer and use it in GitHub Desktop.
iScroll Pull to Refresh.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0"> | |
<meta name="apple-mobile-web-app-capable" content="yes"> | |
<meta name="apple-mobile-web-app-status-bar-style" content="black"> | |
<title>iScroll demo: simple</title> | |
<script type="text/javascript" src="iscroll.js"></script> | |
<!-- you should notice this file without this file and you should add it by yourself --> | |
<script type="text/javascript"> | |
var myScroll, | |
pullDownEl, pullDownOffset, | |
pullUpEl, pullUpOffset, | |
generatedCount = 0; | |
function pullDownAction () { | |
setTimeout(function () { // <-- Simulate network congestion, remove setTimeout from production! | |
var el, li, i; | |
el = document.getElementById('thelist'); | |
for (i=0; i<3; i++) { | |
li = document.createElement('li'); | |
li.innerText = 'Generated row ' + (++generatedCount); | |
el.insertBefore(li, el.childNodes[0]); | |
} | |
myScroll.refresh(); // Remember to refresh when contents are loaded (ie: on ajax completion) | |
}, 1000); // <-- Simulate network congestion, remove setTimeout from production! | |
} | |
function pullUpAction () { | |
setTimeout(function () { // <-- Simulate network congestion, remove setTimeout from production! | |
var el, li, i; | |
el = document.getElementById('thelist'); | |
for (i=0; i<3; i++) { | |
li = document.createElement('li'); | |
li.innerText = 'Generated row ' + (++generatedCount); | |
el.appendChild(li, el.childNodes[0]); | |
} | |
myScroll.refresh(); // Remember to refresh when contents are loaded (ie: on ajax completion) | |
}, 1000); // <-- Simulate network congestion, remove setTimeout from production! | |
} | |
function loaded() { | |
pullDownEl = document.getElementById('pullDown'); | |
pullDownOffset = pullDownEl.offsetHeight; | |
pullUpEl = document.getElementById('pullUp'); | |
pullUpOffset = pullUpEl.offsetHeight; | |
myScroll = new iScroll('wrapper', { | |
useTransition: true, | |
topOffset: pullDownOffset, | |
onRefresh: function () { | |
if (pullDownEl.className.match('loading')) { | |
pullDownEl.className = ''; | |
pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...'; | |
} else if (pullUpEl.className.match('loading')) { | |
pullUpEl.className = ''; | |
pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Pull up to load more...'; | |
} | |
}, | |
onScrollMove: function () { | |
if (this.y > 5 && !pullDownEl.className.match('flip')) { | |
pullDownEl.className = 'flip'; | |
pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Release to refresh...'; | |
this.minScrollY = 0; | |
} else if (this.y < 5 && pullDownEl.className.match('flip')) { | |
pullDownEl.className = ''; | |
pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...'; | |
this.minScrollY = -pullDownOffset; | |
} else if (this.y < (this.maxScrollY - 5) && !pullUpEl.className.match('flip')) { | |
pullUpEl.className = 'flip'; | |
pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Release to refresh...'; | |
this.maxScrollY = this.maxScrollY; | |
} else if (this.y > (this.maxScrollY + 5) && pullUpEl.className.match('flip')) { | |
pullUpEl.className = ''; | |
pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Pull up to load more...'; | |
this.maxScrollY = pullUpOffset; | |
} | |
}, | |
onScrollEnd: function () { | |
if (pullDownEl.className.match('flip')) { | |
pullDownEl.className = 'loading'; | |
pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Loading...'; | |
pullDownAction(); // Execute custom function (ajax call?) | |
} else if (pullUpEl.className.match('flip')) { | |
pullUpEl.className = 'loading'; | |
pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Loading...'; | |
pullUpAction(); // Execute custom function (ajax call?) | |
} | |
} | |
}); | |
setTimeout(function () { document.getElementById('wrapper').style.left = '0'; }, 800); | |
} | |
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false); | |
document.addEventListener('DOMContentLoaded', setTimeout(function () { loaded(); }, 200), false); | |
</script> | |
<style type="text/css" media="all"> | |
body,ul,li { | |
padding:0; | |
margin:0; | |
border:0; | |
} | |
body { | |
font-size:12px; | |
-webkit-user-select:none; | |
-webkit-text-size-adjust:none; | |
font-family:helvetica; | |
} | |
#header { | |
position:absolute; z-index:2; | |
top:0; left:0; | |
width:100%; | |
height:45px; | |
line-height:45px; | |
background-color:#d51875; | |
background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e)); | |
background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e); | |
background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e); | |
padding:0; | |
color:#eee; | |
font-size:20px; | |
text-align:center; | |
} | |
#header a { | |
color:#f3f3f3; | |
text-decoration:none; | |
font-weight:bold; | |
text-shadow:0 -1px 0 rgba(0,0,0,0.5); | |
} | |
#footer { | |
position:absolute; z-index:2; | |
bottom:0; left:0; | |
width:100%; | |
height:48px; | |
background-color:#222; | |
background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #999), color-stop(0.02, #666), color-stop(1, #222)); | |
background-image:-moz-linear-gradient(top, #999, #666 2%, #222); | |
background-image:-o-linear-gradient(top, #999, #666 2%, #222); | |
padding:0; | |
border-top:1px solid #444; | |
} | |
#wrapper { | |
position:absolute; z-index:1; | |
top:45px; bottom:48px; left:-9999px; | |
width:100%; | |
background:#aaa; | |
overflow:auto; | |
} | |
#scroller { | |
position:absolute; z-index:1; | |
/* -webkit-touch-callout:none;*/ | |
-webkit-tap-highlight-color:rgba(0,0,0,0); | |
width:100%; | |
padding:0; | |
} | |
#scroller ul { | |
list-style:none; | |
padding:0; | |
margin:0; | |
width:100%; | |
text-align:left; | |
} | |
#scroller li { | |
padding:0 10px; | |
height:40px; | |
line-height:40px; | |
border-bottom:1px solid #ccc; | |
border-top:1px solid #fff; | |
background-color:#fafafa; | |
font-size:14px; | |
} | |
#myFrame { | |
position:absolute; | |
top:0; left:0; | |
} | |
/** | |
* | |
* Pull down styles | |
* | |
*/ | |
#pullDown, #pullUp { | |
background:#fff; | |
height:40px; | |
line-height:40px; | |
padding:5px 10px; | |
border-bottom:1px solid #ccc; | |
font-weight:bold; | |
font-size:14px; | |
color:#888; | |
} | |
#pullDown .pullDownIcon, #pullUp .pullUpIcon { | |
display:block; float:left; | |
width:40px; height:40px; | |
background:url([email protected]) 0 0 no-repeat; | |
-webkit-background-size:40px 80px; background-size:40px 80px; | |
-webkit-transition-property:-webkit-transform; | |
-webkit-transition-duration:250ms; | |
} | |
#pullDown .pullDownIcon { | |
-webkit-transform:rotate(0deg) translateZ(0); | |
} | |
#pullUp .pullUpIcon { | |
-webkit-transform:rotate(-180deg) translateZ(0); | |
} | |
#pullDown.flip .pullDownIcon { | |
-webkit-transform:rotate(-180deg) translateZ(0); | |
} | |
#pullUp.flip .pullUpIcon { | |
-webkit-transform:rotate(0deg) translateZ(0); | |
} | |
#pullDown.loading .pullDownIcon, #pullUp.loading .pullUpIcon { | |
background-position:0 100%; | |
-webkit-transform:rotate(0deg) translateZ(0); | |
-webkit-transition-duration:0ms; | |
-webkit-animation-name:loading; | |
-webkit-animation-duration:2s; | |
-webkit-animation-iteration-count:infinite; | |
-webkit-animation-timing-function:linear; | |
} | |
@-webkit-keyframes loading { | |
from { -webkit-transform:rotate(0deg) translateZ(0); } | |
to { -webkit-transform:rotate(360deg) translateZ(0); } | |
} | |
</style> | |
</head> | |
<body> | |
<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div> | |
<div id="wrapper"> | |
<div id="scroller"> | |
<div id="pullDown"> | |
<span class="pullDownIcon"></span><span class="pullDownLabel">Pull down to refresh...</span> | |
</div> | |
<ul id="thelist"> | |
<li>Pretty row 1</li> | |
<li>Pretty row 2</li> | |
<li>Pretty row 3</li> | |
<li>Pretty row 4</li> | |
<li>Pretty row 5</li> | |
<li>Pretty row 6</li> | |
<li>Pretty row 7</li> | |
<li>Pretty row 8</li> | |
<li>Pretty row 9</li> | |
<li>Pretty row 10</li> | |
<li>Pretty row 11</li> | |
<li>Pretty row 12</li> | |
<li>Pretty row 13</li> | |
<li>Pretty row 14</li> | |
<li>Pretty row 15</li> | |
<li>Pretty row 16</li> | |
<li>Pretty row 17</li> | |
<li>Pretty row 18</li> | |
<li>Pretty row 19</li> | |
<li>Pretty row 20</li> | |
<li>Pretty row 21</li> | |
<li>Pretty row 22</li> | |
<li>Pretty row 23</li> | |
<li>Pretty row 24</li> | |
<li>Pretty row 25</li> | |
<li>Pretty row 26</li> | |
<li>Pretty row 27</li> | |
<li>Pretty row 28</li> | |
<li>Pretty row 29</li> | |
<li>Pretty row 30</li> | |
<li>Pretty row 31</li> | |
<li>Pretty row 32</li> | |
<li>Pretty row 33</li> | |
<li>Pretty row 34</li> | |
<li>Pretty row 35</li> | |
<li>Pretty row 36</li> | |
<li>Pretty row 37</li> | |
<li>Pretty row 38</li> | |
<li>Pretty row 39</li> | |
<li>Pretty row 40</li> | |
</ul> | |
<div id="pullUp"> | |
<span class="pullUpIcon"></span><span class="pullUpLabel">Pull up to refresh...</span> | |
</div> | |
</div> | |
</div> | |
<div id="footer"></div> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
If
how to solve this problem?