• 使用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>
    业精于勤荒于嬉,形成思毁于随
  • 相关阅读:
    JDBC 复习4 批量执行SQL
    JDBC 复习3 存取Oracle大数据 clob blob
    Oracle复习
    Linux命令(1)grep
    JDBC 复习2 存取mysql 大数据
    JDBC 复习1 DBUtil
    php 环境搭建问题
    Windows 批处理 bat 开启 WiFi 菜单选项 设置ID PWD
    Bat 批处理启动和停止Oracle 服务
    docker 学习1 WSL docker ,Windows docker
  • 原文地址:https://www.cnblogs.com/libaoli/p/4913204.html
Copyright © 2020-2023  润新知