test

博客园 首页 新随笔 联系 订阅 管理
  109 随笔 :: 0 文章 :: 1 评论 :: 16万 阅读
第一步: 引入iscroll-probe.js和jquery.min.js
第二步:html文档结构
复制代码
        <div id="wrapper">
            <div id="scroller">
                <div id="pullDown" class="">
                    <div class="pullDownLabel"></div>
                </div>
                <div class="pulldown-tips">下拉刷新</div>
                <ul id="list">
                    <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 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>
                </ul>
                <div id="pullUp" class="">
                    <div class="pullUpLabel">加载更多</div>
                </div>
            </div>
        </div>
复制代码

 

第三步:css样式

复制代码
<style type="text/css">
            * {
                -webkit-box-sizing: border-box;
                -moz-box-sizing: border-box;
                box-sizing: border-box;
            }
            
            html {
                -ms-touch-action: none;
            }
            
            body,
            ul,
            li {
                padding: 0;
                margin: 0;
                border: 0;
            }
            
            body {
                font-size: 12px;
                font-family: ubuntu, helvetica, arial;
                overflow: hidden;
                /* this is important to prevent the whole page to bounce */
            }
            
            #header {
                position: absolute;
                z-index: 2;
                top: 0;
                left: 0;
                width: 100%;
                height: 45px;
                line-height: 45px;
                background: #CD235C;
                padding: 0;
                color: #eee;
                font-size: 20px;
                text-align: center;
                font-weight: bold;
            }
            
            #footer {
                position: absolute;
                z-index: 2;
                bottom: 0;
                left: 0;
                width: 100%;
                height: 48px;
                background: #444;
                padding: 0;
                border-top: 1px solid #444;
            }
            
            #wrapper {
                position: absolute;
                z-index: 1;
                top: 0;
                bottom: 0;
                left: 0;
                width: 100%;
                background: #fff;/*上拉下拉背景颜色*/
                overflow: hidden;
            }
            
            #scroller {
                position: absolute;
                z-index: 1;
                -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
                width: 100%;
                -webkit-transform: translateZ(0);
                -moz-transform: translateZ(0);
                -ms-transform: translateZ(0);
                -o-transform: translateZ(0);
                transform: translateZ(0);
                -webkit-touch-callout: none;
                -webkit-user-select: none;
                -moz-user-select: none;
                -ms-user-select: none;
                user-select: none;
                -webkit-text-size-adjust: none;
                -moz-text-size-adjust: none;
                -ms-text-size-adjust: none;
                -o-text-size-adjust: none;
                text-size-adjust: none;
            }
            
            #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;
            }
            
            #pullDown,
            #pullUp,
            .pulldown-tips {
                height: 40px;
                line-height: 40px;
                text-align: center;
            }
            
            .pulldown-tips {
                position: absolute;
                top: -40px;
                left: 0;
                width: 100%;
            }
        </style>
复制代码

第四步:js部分

复制代码
function load() {
    var myScroll,
        pullDown = $("#pullDown"),
        pullUp = $("#pullUp"),
        pullDownLabel = $(".pullDownLabel"),
        pullUpLabel = $(".pullUpLabel"),
        container = $('#list'),
        loadingStep = 0; //加载状态0默认,1显示加载状态,2执行加载数据,只有当为0时才能再次加载,这是防止过快拉动刷新  
 
    pullDown.hide();
    pullUp.hide();
 
    myScroll = new IScroll("#wrapper", {
        scrollbars: true,
        mouseWheel: true,
        interactiveScrollbars: true,
        shrinkScrollbars: 'scale',
        fadeScrollbars: true,
        scrollY: true,
        probeType: 2,
        bindToWrapper: true
    });
    myScroll.on("scroll", function() {
        if(loadingStep == 0 && !pullDown.attr("class").match('refresh|loading') && !pullUp.attr("class").match('refresh')) {
            if(this.y > 40) { //下拉刷新操作  
                $(".pulldown-tips").hide();
                pullDown.addClass("refresh").show();
                pullDownLabel.text("松手刷新数据");
                loadingStep = 1;
                myScroll.refresh();
            } else if(this.y < (this.maxScrollY - 14)) { //上拉加载更多  
                pullUp.addClass("refresh").show();
                pullUpLabel.text("正在加载");
                loadingStep = 1;
                pullUpAction();
            }
        }
    });
    myScroll.on("scrollEnd", function() {
        if(loadingStep == 1) {
            if(pullDown.attr("class").match("refresh")) { //下拉刷新操作  
                pullDown.removeClass("refresh").addClass("loading");
                pullDownLabel.text("正在刷新");
                loadingStep = 2;
                pullDownAction();
            }
        }
    });
    /**
     * 下拉加载事件
     */
    function pullDownAction() {
        setTimeout(function() {
            var li, i;
            for(i = 0, li = ""; i < 3; i++) {
                li += "<li>" + "new Add " + new Date().toLocaleString() + " !" + "</li>";
            }
            container.prepend(li);
            pullDown.attr('class', '').hide();
            myScroll.refresh();
            loadingStep = 0;
            $(".pulldown-tips").show();
        }, 1000);
    }
    /**
     * 上拉加载
     */
    function pullUpAction() {
        setTimeout(function() {
            var li, i;
            for(i = 0, li = ""; i < 3; i++) {
                li += "<li>" + "new Add " + new Date().toLocaleString() + " !" + "</li>";
            }
            container.append(li);
            pullUp.attr('class', '').hide();
            myScroll.refresh();
            loadingStep = 0;
        }, 1000);
    }
 
    document.addEventListener('touchmove', function(e) {
        e.preventDefault();
    }, false);
}
复制代码

 

posted on   testgogogo  阅读(208)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示