iscroll上拉加載下拉刷新

iScroll的產生完全是因爲移動版webkit瀏覽器,例如在iPhone,Android 的移動設備上。
iScroll的原理是外層有一個溢出隱藏(overflow:hidden;)的DOM,然後這個區域內的第一個DOM結構會被實例化,其包裹的內容可以縱向或者橫向的滾動,所以在使用iScroll的時候,滾動元素要儘量的簡單,減少DOM個數,減少嵌套,因爲DOM結構越是複雜iScroll運行起來就越是吃力,有可能會造成某些節點顯示不正常的情況。 所以,推薦使用的DOM結構如下:

<div id="wrapper">//overflow:hidden;
    <ul>
    //只有第一個DOM結構(ul)被實例化,這個DOM可以縱向或者橫向的滾動,
    //多出的內容會被wrapper的樣式hidden。
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
</div>

注意:再次重申,只有wrapper裏的第一個子元素(ul)纔可以被實例化滾動,並且要結合外層的DOM(wrapper)才能實現滾動。

iscroll上拉加載下拉刷新

附上代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
    <style type="text/css">
        html,body{
            height:100%;
        }
        html,body,div,ul,li{
            padding: 0;
            margin: 0;
        }
        ul,li{
            list-style-type: none;
        }
        #wrapper{
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            width: 100%;
            overflow: auto;
            -webkit-overflow-scrolling:touch;
        }
        #scroller {
            position:relative;
            -webkit-tap-highlight-color:rgba(0,0,0,0);

            float:left;
            width:100%;
            padding:0;
        }

        #scroller ul {
            position:relative;
            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;
        }

        #scroller li > a {
            display:block;
        }

        /**
         *
         * 下拉樣式 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);
        }


        /**
         * 動畫效果css3代碼
         */
        #pullDown.flip .pullDownIcon {
            -webkit-transform:rotate(-180deg) translateZ(0);
        }

        #pullUp.flip .pullUpIcon {
            -webkit-transform:rotate(0deg) translateZ(0);
        }

    </style>
</head>
<body>
    <div id="wrapper">
        <div id="scroller">

            <div id="pullDown">
                <span class="pullDownIcon"></span><span class="pullDownLabel">下拉刷新...</span>
            </div>

            <ul id="thelist">
                <li>數據 1</li>
                <li>數據 2</li>
                <li>數據 3</li>
                <li>數據 4</li>
                <li>數據 5</li>
                <li>數據 6</li>
                <li>數據 7</li>
                <li>數據 8</li>
                <li>數據 9</li>
                <li>數據 10</li>
                <li>數據 11</li>
                <li>數據 12</li>
                <li>數據 13</li>
                <li>數據 11</li>
                <li>數據 12</li>
                <li>數據 13</li>
                <li>數據 6</li>
                <li>數據 7</li>
                <li>數據 8</li>
                <li>數據 9</li>
                <li>數據 10</li>
                <li>數據 11</li>
                <li>數據 12</li>
                <li>數據 13</li>
                <li>數據 11</li>
                <li>數據 12</li>
                <li>數據 13</li>
            </ul>

            <div id="pullUp">
                <span class="pullUpIcon"></span><span class="pullUpLabel">上拉加載更多...</span>
            </div>

        </div>
    </div>
    <script type="text/javascript" src="../dist/js/jquery-1.11.1.min.js"></script>
    <script type="text/javascript" src="../dist/js/iscroll-probe.js"></script>
    <script type="text/javascript">
    $(function(){
        // 初始化並配置 iscroll
        var upFlag = false;
        var downFlag = false;
        var myScroll = new IScroll("#wrapper",{
            mouseWheel: true,
            bounch:true
        });
        // 滾動綁定事件
        myScroll.on("scrollEnd",function(){
            if(this.y <= this.maxScrollY && !upFlag){
                upFlag = true;
                setTimeout(function(){
                    $("#thelist").append("<li>上拉加載數據</li><li>上拉加載數據</li><li>上拉加載數據</li>");
                    myScroll.refresh();
                    upFlag = false;
                },1000);
            }
            if(this.y <= 0 && !downFlag){
                downFlag = true;
                setTimeout(function(){
                    $("#thelist").prepend("<li>下拉刷新</li>");
                    myScroll.refresh();
                    downFlag = false;
                },1000);
            }
        });
        // 這個scroll要在iscroll-probe.js中才有用,但是貌似沒用,監聽滾動
        myScroll.on("scroll",function(){

        });
    });

    </script>
</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章