iScroll 下拉刷新

//自己iScroll刷新,样式比较拙,想试试效果的弟兄请自行下载 iScroll4和jQuery然后修改一下src的值

一下是完整html和js代码,如有不明白可以加我qq:40466911问我,一起研究

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
     <script type="text/javascript" src="../lib/iscroll.js"></script>
     <script type="text/javascript" src="jquery-1.9.1.js"></script>
     <style>
         body{
             font-family: helvetica;
             overflow: hidden;
         }
         header{
             left: 0;
             text-shadow: 0px 1px 0px #EBE9E9;
             top:0px;
             line-height: 48px;
             font-size: 30px;
             text-align: center;
             font-weight: bold;
             background-color: brown;
             position: absolute;
             z-index: 2;
             width: 100%;
             height: 48px;
         }
         footer{
             left: 0;
             background-color: brown;
             position: absolute;
             z-index: 2;
             width: 100%;
             height: 48px;
             bottom: 0px;
         }
         #outer{
             <!--left:0 这个参数很重要,不然看不到滚动条-->
             left:0;
             background-color: darkgrey;
             overflow: hidden;
             top:48px;
             bottom:48px;
             position: absolute;
             z-index: 1;
            width: 100%;
             /*height: 600px;*/
         }
         #inner{
             position: absolute;
             z-index: 1;
             width: 100%;
             padding: 0px;
             -webkit-tap-highlight-color:rgba(0,0,0,0);


         }
         ul{
             list-style: none;
             margin: 0px;
             padding: 0px;
         }
         li{
             height: 40px;
             margin: 3px;
             background-color: #ffffff;
             border-bottom: 1px solid #000000;
             border-top: 1px solid gainsboro;
         }
         #pull-down{
             text-align: center;
             height: 50px;
             line-height: 50px;
             color: #ffffff;
             font-size: 30px;
             font-weight: bold;
         }
     </style>
    <script>
      document.addEventListener('DOMContentLoaded',loaded,false);
       //$(document).ready(loaded); //在这里,作用跟上一句作用相同,它们之间有区别,想知道去百度
       var count = 0;
       function pullDown(){
           count ++;
           console.log(count);
           setTimeout(function(){
               var html = "";
               for(var i=0;i<12;i++){    //新增多少条记录由你决定,改变i的取值范围就行了
                   html += "<li>新增内容"+count+"</li>"
               }
                $("ul").prepend(html);
               myScroll.refresh();   //重新计算iScroll
           },2000)


       } ;
        var myScroll,pullDownEl;
        function loaded(){
            //检查iScroll和jQuery是否已加载
            if(!window.iScroll || !window.jQuery) {
                alert("iScroll.js或jQuery.js不存在,请自行下载iScroll.js和jQuery.js同时修改src的值")
            }
            pullDownEl = $('#pull-down');
            myScroll = new iScroll("outer",{
                 topOffset: 50, //这个是滚动条的起始位置,用于隐藏刷新提示框
                onScrollMove: function(){
                     if(this.y > 5 && !pullDownEl.hasClass('flag')){
                         pullDownEl.addClass('flag');
                         this.minScrollY = 0;  //这个值是为了看见刷新提示框
                     }else if(this.y < 5 && pullDownEl.hasClass('flag')){
                         pullDownEl.removeClass('flag');
                         this.minScrollY = 50;  //隐藏刷新提示框 跟这个参数一样 topOffset: 50
                     }
                },
                onScrollEnd:function(){
                    if(pullDownEl.hasClass('flag')){
                        pullDownEl.text("正在刷新............");
                        pullDown();
                    }
                },
                onRefresh:function(){
                    pullDownEl.removeClass('flag');
                    pullDownEl.text("松手刷新............");
                    console.log("重新计算列表");
                }
            }) ;
        }
    </script>
</head>
<body>
    <header>测试下拉刷新</header>
     <div id="outer">
           <div id="inner">
               <div id="pull-down">松手刷新............</div>
               <ul>
                   <li>test1</li>
                   <li>test2</li>
                   <li>test3</li>
                   <li>test4</li>
                   <li>test5</li>
                   <li>test6</li>
                   <li>test7</li>
                   <li>test8</li>
                   <li>test9</li>
                   <li>test10</li>
                   <li>test11</li>
                   <li>test12</li>
                   <li>test13</li>
                   <li>test14</li>
                   <li>test15</li>
                   <li>test16</li>
                   <li>test17</li>
                   <li>test18</li>
                   <li>test19</li>
                   <li>test20</li>
                   <li>test21</li>
                   <li>test22</li>
                   <li>test23</li>
                   <li>test24</li>
                   <li>test25</li>
                   <li>test26</li>
                   <li>test27</li>
                   <li>test28</li>
                   <li>test29</li>
                   <li>test30</li>
                   <li>test31</li>
                   <li>test32</li>
                   <li>test33</li>
                   <li>test34</li>
                   <li>test35</li>
                   <li>test36</li>
                   <li>test37</li>
                   <li>test38</li>
                   <li>test39</li>
                   <li>test40</li>
                   <li>test41</li>
               </ul>
           </div>
     </div>
    <footer></footer>
</body>
</html>


### 使用 iScroll 实现下拉刷新 为了实现下拉刷新的效果,可以按照以下方式构建 HTML 结构并编写 JavaScript 代码: #### 构建HTML结构 首先,在页面中创建一个容器用于包裹可滚动的内容。此容器通常具有固定的宽度和高度,并设置 `overflow` 属性来隐藏超出部分。 ```html <div id="wrapper"> <div id="scroller"> <!-- 列表项 --> <ul> <li>Item 1</li> <li>Item 2</li> ... </ul> <!-- 下拉提示符 --> <div class="pull-to-refresh">Pull to refresh...</div> </div> </div> ``` #### 初始化iScroll对象 通过JavaScript初始化iScroll实例时,需指定要应用滚动行为的目标元素ID(即外层的 wrapper)。这里使用了延迟执行的方式确保DOM完全加载后再启动插件[^2]。 ```javascript var myscroll; function loaded() { setTimeout(function () { myscroll = new IScroll('#wrapper', { probeType: 3, pullDownRefresh: true, // 启用下拉刷新功能 bounce: false // 关闭回弹效果以优化体验 }); // 绑定下拉刷新完成后的回调函数 myscroll.on('refresh', function(){ console.log('Data refreshed'); // 模拟数据更新操作... updateContent(); // 完成刷新动作 this.finishPullToRefresh(); }); }, 100); } window.addEventListener('load', loaded, false); ``` 上述代码片段展示了如何配置 iScroll 来支持下拉刷新特性,并定义了一个简单的回调机制以便在新内容被获取之后通知组件结束刷新状态[^3]。 #### 更新内容逻辑 当触发刷新事件后,应该有一个实际的数据请求过程去获取最新的条目列表。这一步骤可以根据具体的应用场景自定义实现。例如发送AJAX请求到服务器端API接口取得最新资讯或动态消息等。 ```javascript function updateContent() { // 假设这是异步获取的新数据 const newData = ['New Item A', 'New Item B']; // 将新的项目添加至现有列表顶部 let ul = document.querySelector("#scroller ul"); newData.forEach(item => { let li = document.createElement("LI"); li.textContent = item; ul.insertBefore(li, ul.firstChild); }); // 调整IScroll视图使其适应新增加的高度变化 myscroll.refresh(); } ``` 以上就是完整的基于 iScroll下拉刷新方案介绍以及相应的编码实践指南[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值