使用iscroll插件实现下拉刷新功能

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5     <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
  6     <meta name="apple-mobile-web-app-capable" content="yes">
  7     <meta name="apple-mobile-web-app-status-bar-style" content="black">
  8     <title>html5+css3实现上拉和下拉刷新</title>
  9 
 10     <script type="text/javascript" src="http://statics.webkfa.com/js/iscroll.js"></script>
 11 
 12     <script type="text/javascript">
 13 
 14             var myScroll,
 15                 pullDownEl,
 16                 pullDownOffset,
 17                 pullUpEl,
 18                 pullUpOffset,
 19                 generatedCount = 0;
 20 
 21         function pullDownAction () {
 22             setTimeout(function () {    // <-- Simulate network congestion, remove setTimeout from production!
 23                 var el, li, i;
 24                 el = document.getElementById('thelist');
 25 
 26                 for (i=0; i<3; i++) {
 27                     li = document.createElement('li');
 28                     li.innerText = 'Generated row ' + (++generatedCount);
 29                     el.insertBefore(li, el.childNodes[0]);
 30                 }
 31 
 32                 myScroll.refresh();        // Remember to refresh when contents are loaded (ie: on ajax completion)
 33             }, 1000);    // <-- Simulate network congestion, remove setTimeout from production!
 34         }
 35 
 36         function pullUpAction () {
 37             setTimeout(function () {    // <-- Simulate network congestion, remove setTimeout from production!
 38                 var el, li, i;
 39                 el = document.getElementById('thelist');
 40 
 41                 for (i=0; i<3; i++) {
 42                     li = document.createElement('li');
 43                     li.innerText = 'Generated row ' + (++generatedCount);
 44                     el.appendChild(li, el.childNodes[0]);
 45                 }
 46 
 47                 myScroll.refresh();        // Remember to refresh when contents are loaded (ie: on ajax completion)
 48             }, 1000);    // <-- Simulate network congestion, remove setTimeout from production!
 49         }
 50 
 51         function loaded() {
 52             pullDownEl = document.getElementById('pullDown');
 53             pullDownOffset = pullDownEl.offsetHeight;
 54             pullUpEl = document.getElementById('pullUp');
 55             pullUpOffset = pullUpEl.offsetHeight;
 56 
 57             myScroll = new iScroll('wrapper', {
 58                 useTransition: true,
 59                 topOffset: pullDownOffset,
 60                 onRefresh: function () {
 61                     if (pullDownEl.className.match('loading')) {
 62                         pullDownEl.className = '';
 63                         pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...';
 64                     } else if (pullUpEl.className.match('loading')) {
 65                         pullUpEl.className = '';
 66                         pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Pull up to load more...';
 67                     }
 68                 },
 69                 onScrollMove: function () {
 70                     if (this.y > 5 && !pullDownEl.className.match('flip')) {
 71                         pullDownEl.className = 'flip';
 72                         pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Release to refresh...';
 73                         this.minScrollY = 0;
 74                     } else if (this.y < 5 && pullDownEl.className.match('flip')) {
 75                         pullDownEl.className = '';
 76                         pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...';
 77                         this.minScrollY = -pullDownOffset;
 78                     } else if (this.y < (this.maxScrollY - 5) && !pullUpEl.className.match('flip')) {
 79                         pullUpEl.className = 'flip';
 80                         pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Release to refresh...';
 81                         this.maxScrollY = this.maxScrollY;
 82                     } else if (this.y > (this.maxScrollY + 5) && pullUpEl.className.match('flip')) {
 83                         pullUpEl.className = '';
 84                         pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Pull up to load more...';
 85                         this.maxScrollY = pullUpOffset;
 86                     }
 87                 },
 88                 onScrollEnd: function () {
 89                     if (pullDownEl.className.match('flip')) {
 90                         pullDownEl.className = 'loading';
 91                         pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Loading...';
 92                         pullDownAction();    // Execute custom function (ajax call?)
 93                     } else if (pullUpEl.className.match('flip')) {
 94                         pullUpEl.className = 'loading';
 95                         pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Loading...';
 96                         pullUpAction();    // Execute custom function (ajax call?)
 97                     }
 98                 }
 99             });
100 
101             setTimeout(function () { document.getElementById('wrapper').style.left = '0'; }, 800);
102         }
103 
104         document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
105 
106         document.addEventListener('DOMContentLoaded', function () { setTimeout(loaded, 200); }, false);
107     </script>
108 
109     <style type="text/css" media="all">
110         body,ul,li {
111             padding:0;
112             margin:0;
113             border:0;
114         }
115 
116         body {
117             font-size:12px;
118             -webkit-user-select:none;
119             -webkit-text-size-adjust:none;
120             font-family:helvetica;
121         }
122 
123         #header {
124             position:absolute; z-index:2;
125             top:0; left:0;
126             100%;
127             height:45px;
128             line-height:45px;
129             background-color:#d51875;
130             background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e));
131             background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
132             background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
133             padding:0;
134             color:#eee;
135             font-size:20px;
136             text-align:center;
137         }
138 
139         #header a {
140             color:#f3f3f3;
141             text-decoration:none;
142             font-weight:bold;
143             text-shadow:0 -1px 0 rgba(0,0,0,0.5);
144         }
145 
146         #footer {
147             position:absolute; z-index:2;
148             bottom:0; left:0;
149             100%;
150             height:48px;
151              padding: 0px; line-height: 1.5 !important;">;
152             background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #999), color-stop(0.02, #666), color-stop(1, #222));
153             background-image:-moz-linear-gradient(top, #999, #666 2%, #222);
154             background-image:-o-linear-gradient(top, #999, #666 2%, #222);
155             padding:0;
156             border-top:1px solid #444;
157         }
158 
159         #wrapper {
160             position:absolute; z-index:1;
161             top:45px; bottom:48px; left:-9999px;
162             100%;
163             background:#aaa;
164             overflow:auto;
165         }
166 
167         #scroller {
168             position:absolute; z-index:1;
169             /*    -webkit-touch-callout:none;*/
170             -webkit-tap-highlight-color:rgba(0,0,0,0);
171             100%;
172             padding:0;
173         }
174 
175         #scroller ul {
176             list-style:none;
177             padding:0;
178             margin:0;
179             100%;
180             text-align:left;
181         }
182 
183         #scroller li {
184             padding:0 10px;
185             height:40px;
186             line-height:40px;
187             border-bottom:1px solid #ccc;
188             border-top:1px solid #fff;
189             background-color:#fafafa;
190             font-size:14px;
191         }
192 
193         #myFrame {
194             position:absolute;
195             top:0; left:0;
196         }
197 
198 
199 
200         /**
201          *
202          * Pull down styles
203          *
204          */
205         #pullDown, #pullUp {
206             background:#fff;
207             height:40px;
208             line-height:40px;
209             padding:5px 10px;
210             border-bottom:1px solid #ccc;
211             font-weight:bold;
212             font-size:14px;
213             color:#888;
214         }
215         #pullDown .pullDownIcon, #pullUp .pullUpIcon  {
216             display:block; float:left;
217             40px; height:40px;
218             background:url(http://statics.webkfa.com/img/pull-icon@2x.png) 0 0 no-repeat;
219             -webkit-background-size:40px 80px; background-size:40px 80px;
220             -webkit-transition-property:-webkit-transform;
221             -webkit-transition-duration:250ms;
222         }
223         #pullDown .pullDownIcon {
224             -webkit-transform:rotate(0deg) translateZ(0);
225         }
226         #pullUp .pullUpIcon  {
227             -webkit-transform:rotate(-180deg) translateZ(0);
228         }
229 
230         #pullDown.flip .pullDownIcon {
231             -webkit-transform:rotate(-180deg) translateZ(0);
232         }
233 
234         #pullUp.flip .pullUpIcon {
235             -webkit-transform:rotate(0deg) translateZ(0);
236         }
237 
238         #pullDown.loading .pullDownIcon, #pullUp.loading .pullUpIcon {
239             background-position:0 100%;
240             -webkit-transform:rotate(0deg) translateZ(0);
241             -webkit-transition-duration:0ms;
242 
243             -webkit-animation-name:loading;
244             -webkit-animation-duration:2s;
245             -webkit-animation-iteration-count:infinite;
246             -webkit-animation-timing-function:linear;
247         }
248 
249         @-webkit-keyframes loading {
250             from { -webkit-transform:rotate(0deg) translateZ(0); }
251             to { -webkit-transform:rotate(360deg) translateZ(0); }
252         }
253 
254     </style>
255 </head>
256 <body>
257 
258 <div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
259 <div id="wrapper">
260     <div id="scroller">
261         <div id="pullDown">
262             <span class="pullDownIcon"></span><span class="pullDownLabel">Pull down to refresh...</span>
263         </div>
264 
265         <ul id="thelist">
266             <li>Pretty row 1</li>
267             <li>Pretty row 2</li>
268             <li>Pretty row 3</li>
269             <li>Pretty row 4</li>
270             <li>Pretty row 5</li>
271             <li>Pretty row 6</li>
272             <li>Pretty row 7</li>
273             <li>Pretty row 8</li>
274             <li>Pretty row 9</li>
275             <li>Pretty row 10</li>
276             <li>Pretty row 11</li>
277             <li>Pretty row 12</li>
278             <li>Pretty row 13</li>
279             <li>Pretty row 14</li>
280             <li>Pretty row 15</li>
281             <li>Pretty row 16</li>
282             <li>Pretty row 17</li>
283             <li>Pretty row 18</li>
284             <li>Pretty row 19</li>
285             <li>Pretty row 20</li>
286             <li>Pretty row 21</li>
287             <li>Pretty row 22</li>
288             <li>Pretty row 23</li>
289             <li>Pretty row 24</li>
290             <li>Pretty row 25</li>
291             <li>Pretty row 26</li>
292             <li>Pretty row 27</li>
293             <li>Pretty row 28</li>
294             <li>Pretty row 29</li>
295             <li>Pretty row 30</li>
296             <li>Pretty row 31</li>
297             <li>Pretty row 32</li>
298             <li>Pretty row 33</li>
299             <li>Pretty row 34</li>
300             <li>Pretty row 35</li>
301             <li>Pretty row 36</li>
302             <li>Pretty row 37</li>
303             <li>Pretty row 38</li>
304             <li>Pretty row 39</li>
305             <li>Pretty row 40</li>
306         </ul>
307         <div id="pullUp">
308             <span class="pullUpIcon"></span><span class="pullUpLabel">Pull up to refresh...</span>
309         </div>
310     </div>
311 </div>
312 <div id="footer"></div>
313 
314 </body>
315 </html>
业精于勤荒于嬉,形成思毁于随
原文地址:https://www.cnblogs.com/libaoli/p/4913204.html