- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
- <meta name="format-detection" content="telephone=no, email=no, adress=no">
- <meta name="apple-mobile-web-app-capable" content="yes">
- <meta name="apple-touch-fullscreen" content="yes">
- <meta name="apple-mobile-web-app-status-bar-style" content="black">
- <meta name="description" content="">
- <meta name="keywords" content="">
- <link type="text/css" rel="stylesheet" href="./css/reset.css" />
- <link type="text/css" rel="stylesheet" href="./css/index.css" />
- <title></title>
- </head>
- <body>
- <div id="wrapper">
- <div id="scroller">
- <ul>
- <li>1</li>
- <li>2</li>
- <li>3</li>
- <li>4</li>
- <li id="a">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>14</li>
- <li>15</li>
- <li>16</li>
- <li>17</li>
- <li>18</li>
- <li>19</li>
- <li>20</li>
- </ul>
- </div>
- </div>
- <div class="footer">
- <p>上面的容器是可以滾動的區域</p>
- </div>
- <script src="js/jquery-2.0.3.min.js"></script>
- <script src="js/iScroll.js"></script>
- <script>
- //IScroll會獲取容器內的第一個子元素進行滾動,其它子元素會被忽略,且該子元素(scroller)必須有固定的高度(或寬度),在這里,即ID為scroller的元素可以滾動
- var myScroll = new IScroll('#wrapper',{
- mouseWheel : true, //鼠標滾輪支持
- scrollbars : true, //滾動條支持
- scrollY : true, //滾動方向(垂直)
- scrollX : true, //滾動方向(水平)
- bounce : true, //邊界時的反彈動畫,默認true
- click : true, //IScroll默認禁止了點擊事件,如需綁定點擊事件,請將該參數值設為true
- freeScroll : true, //當需要執行兩個緯度上的滾動時(即橫向、縱向都開啟),設置該參數,默認為false
- startX : 0, //滾動條開始的位置(橫坐標)
- startY : 0, //滾動條開始的位置(縱坐標)
- tap : true, //設置為true時,允許為用戶點擊或者觸摸(並沒有滾動時)觸發一個自定義事件,或者設置值為一個自定義事件名稱的字符串
- snap : 'li' //對齊(根據元素li對齊切割整個容器)
- });
- console.log(myScroll.options); //通過options對象訪問myScroll實例的配置信息
- //給li綁定點擊事件
- $('#scroller ul li').on('click',function(){
- console.log($(this).html());
- })
- //綁定tap自定義事件
- $('#wrapper').on('tap',function(){
- console.log('開始滾動了');
- })
- myScroll.scrollTo(0,-250); //控制滾動條到任意的位置
- myScroll.scrollBy(0,-10); //從當前位置向下滾動10個像素
- //滾動到該元素的位置,第二個參數為時間,第三個第四個參數為偏移量(如果設置這兩個參數為true,該元素將會顯示在容器的中間)
- myScroll.scrollToElement('#a',1000,0,0);
- //關於snap對齊后操作的方法
- myScroll.goToPage(0,5,1000); //滾動到對齊后的第五頁(即第五個li的位置)
- myScroll.next(); //當前位置的下一頁
- myScroll.prev(); //當前位置的上一頁
- //IScroll需要知道容器確切的尺寸,如果容器大小發生了變化,需要使用刷新方法
- myScroll.refresh();
- //自定義事件
- myScroll.on('scrollEnd',function(){
- console.log('滾動結束');
- console.log(this.x + '&' + this.y); //當前位置
- console.log(this.directionX + '&' + this.directionY); //最后的方向
- console.log(this.currentPage); //當前對齊捕獲點
- })
- //銷毀
- //myScroll.destroy();
- //當滾動到底部時的myScroll.x/y
- console.log(myScroll.maxScrollX + '&' + myScroll.maxScrollY);
- </script>
- </body>
- </html>
index.css
- #wrapper{width:100%; height:500px; overflow:hidden;}
- #scroller{width:500px; height:60rem;}
- ul li{width:500px; height:3rem; line-height:3rem; border-bottom:1px solid #CCC; text-align:center; box-sizing:border-box;}
- .footer p{line-height:3rem; text-align:center;}
使用IScroll5實現上拉加載、下拉刷新
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
- <meta name="format-detection" content="telephone=no, email=no, adress=no">
- <meta name="apple-mobile-web-app-capable" content="yes">
- <meta name="apple-touch-fullscreen" content="yes">
- <meta name="apple-mobile-web-app-status-bar-style" content="black">
- <meta name="description" content="">
- <meta name="keywords" content="">
- <link type="text/css" rel="stylesheet" href="./css/reset.css" />
- <link type="text/css" rel="stylesheet" href="./css/index.css" />
- <title></title>
- </head>
- <body>
- <div id="wrapper">
- <div id="scroller">
- <ul>
- <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>14</li>
- <li>15</li>
- <li>16</li>
- <li>17</li>
- <li>18</li>
- <li>19</li>
- <li>20</li>
- </ul>
- </div>
- <p class="p-1">下拉刷新</p>
- <p class="p-2">上拉加載</p>
- </div>
- <div class="footer">
- <p>上面的容器是可以滾動的區域</p>
- </div>
- <script src="js/jquery-2.0.3.min.js"></script>
- <script src="js/iScroll.js"></script>
- <script>
- //實現上拉加載、下拉刷新
- var myScroll = new IScroll('#wrapper',{
- scrollY : true,
- scrollX : false
- })
- myScroll.on('scrollEnd',function(){
- //因為值為負數,所以使用小於等於
- if(this.y <= this.maxScrollY){
- console.log('滑動到最底部了');
- var li = '<li>新的內容</li><li>新的內容</li><li>新的內容</li><li>新的內容</li><li>新的內容</li>';
- $('#scroller ul').append(li);
- $('#scroller').css({height : $('#scroller').height() + (42 * 5) + 'px'});
- this.refresh();
- }
- })
- </script>
- </body>
- </html>
index.css
- #wrapper{width:100%; height:500px; overflow:hidden; position:relative;}
- #scroller{width:100%; height:840px; background-color:#FFF; position:absolute; z-index:1;}
- ul li{width:100%; height:42px; line-height:42px; border-bottom:1px solid #CCC; text-align:center; box-sizing:border-box;}
- #wrapper p{position:absolute; text-align:center; height:3rem; line-height:3rem; color:red; width:100%;}
- #wrapper p.p-1{top:0;}
- #wrapper p.p-2{bottom:0;}
- .footer p{line-height:3rem; text-align:center;}
參考地址: