iscroll.js-简

来源:互联网 发布:淘宝发货时间投诉 编辑:程序博客网 时间:2024/05/18 13:24

iscroll.js是Matteo Spinelli开发的一个js文件,使用原生js编写,不依赖与任何js框架。旨在解决移动webkit系浏览器的区域滚动问题,兼容mobile safari、android默认浏览器、safari、chrome、firefox5+、opera11+、IE9+及其他webkit核心浏览器。

iscroll的理解

1、

最佳的HTML结构如下:

复制代码
<div id="wrapper">    <ul>        <li>...</li>        <li>...</li>        ...    </ul></div>
复制代码

iScroll作用于滚动区域的外层。在上面的例子中,UL元素能进行滚动。只有容器元素的第一个子元素能进行滚动,其他子元素完全被忽略。

最基本的脚本初始化的方式如下:

<script type="text/javascript">  var myScroll = new IScroll('#wrapper');</script>

第一个参数可以是滚动容器元素的DOM选择器字符串,也可以是滚动容器元素的引用对象。下面是一个有效的语法:

var wrapper = document.getElementById('wrapper');var myScroll = new IScroll(wrapper);

所以基本上你要么直接传递元素,要么传递一个querySelector字符串。因此可以使用css名称代替ID去选择一个滚动器容器,如下:

var myScroll = new IScroll('.wrapper');

注意,iScroll使用的是querySelector 而不是 querySelectorAll,所以iScroll只会作用到选择器选中元素的第一个。如果你需要对多个对象使用iScroll,你需要构建自己的循环机制

2、初始化

当DOM准备完成后iScroll需要被初始化。最保险的方式是在window的onload事件中启动它。在DOMContentLoaded事件中或者inline initialization中做也可以,需要记住的是脚本需要知道滚动区域的高度和宽度。如果你有一些图片在滚动区域导致不能立马获取区域的高度和宽度,iScroll的滚动尺寸有可能会错误。

为滚动起容器增加position:relative或者absolute样式。这将解决大多数滚动器容器大小计算不正确的问题。

综上所述,最小的iScroll配置如下:

复制代码
   <head>    ...    <script type="text/javascript" src="iscroll.js"></script>    <script type="text/javascript">      var myScroll;      function loaded() {          myScroll = new IScroll('#wrapper');      }    </script>    </head>      ...    <body onload="loaded()">    <div id="wrapper">        <ul>            <li>...</li>            <li>...</li>            ...        </ul>  </div>
复制代码

如果你有一个复杂的DOM结构,最好在onload事件之后适当的延迟,再去初始化iScroll。最好给浏览器100或者200毫秒的间隙再去初始化iScroll。

三、配置iScroll

在iScroll初始化阶段可以通过构造函数的第二个参数配置它。

var myScroll = new IScroll('#wrapper', {    mouseWheel: true,    scrollbars: true});

上面的例子示例了在iScroll初始化时开启鼠标滚轮支持和滚动条支持。

在初始化后你可以通过options对象访问标准化值。例如:

console.dir(myScroll.options);

上面的语句将返回myScroll实例的配置信息。所谓的标准化意味着如果你设置useTransform:true,但是浏览器并不支持CSS transforms,那么useTransform属性值将为false。

四、基本功能

options.bounce

当滚动器到达容器边界时他将执行一个小反弹动画。在老的或者性能低的设备上禁用反弹对实现平滑的滚动有帮助。

默认值:true

options.click

为了重写原生滚动条,iScroll禁止了一些默认的浏览器行为,比如鼠标的点击。如果你想你的应用程序响应click事件,那么该设置次属性为true。请注意,建议使用自定义的tap 事件来代替它(见下面)。

默认属性:false

options.disableMouse
options.disablePointer
options.disableTouch

默认情况下,iScroll监听所有的指针事件,并且对这些事件中第一个被触发的做出反应。这看上去是浪费资源,但是在大量的浏览器/设备上兼容,特定的事件侦测证明是无效的,所以listen-to-all是一个安全的做法。

如果你有一种设备侦测的内部机制,或者你知道你的脚本将在什么地方运行,你可以把你不需要的事件禁用(鼠标,指针或者触摸事件)。

下面的例子是禁用鼠标和指针事件:

var myScroll = new IScroll('#wrapper', {    disableMouse: true,    disablePointer: true});

默认值:false

options.eventPassthrough

有些时候你想保留原生纵向的滚动条但想为横向滚动条增加iScroll功能(比如走马灯)。设置这个属性为true并且iScroll区域只将影响横向滚动,纵向滚动将滚动整个页面。

在移动设备上访问event passthrough demo。注意,这个值也可以设置为'horizontal',其作用和上面介绍的相反(横向滚动条保持原生,纵向滚动条使用iScroll)。

options.freeScroll

此属性针对于两个两个纬度的滚动条(当你需要横向和纵向滚动条)。通常情况下你开始滚动一个方向上的滚动条,另外一个方向上会被锁定不动。有些时候,你需要无约束的移动(横向和纵向可以同时响应),在这样的情况下此属性需要设置为true。请参考 2D scroll demo。

默认值:false

options.keyBindings

此属性为true时激活键盘(和远程控制)绑定。请参考下面的Key bindings内容。

默认值:false

options.invertWheelDirection

当鼠标滚轮支持激活后,在有些情况下需要反转滚动的方向。(比如,鼠标滚轮向下滚动条向上,反之亦然)。

默认值:false

options.momentum

在用户快速触摸屏幕时,你可以开/关势能动画。关闭此功能将大幅度提升性能。

默认值:true

options.mouseWheel

侦听鼠标滚轮事件。

默认值:false

options.preventDefault

当事件触发时是否执行preventDefault()。此属性应该设置为true,除非你真的知道你需要怎么做。

请参考Advanced features中的preventDefaultException,可以获取更多控制preventDefault行为的信息。

Default: true 默认值:true

options.scrollbars

是否显示为默认的滚动条。更多信息请查看Scrollbar

默认值:false

options.scrollX
options.scrollY

默认情况下只有纵向滚动条可以使用。如果你需要使用横向滚动条,需要将scrollX 属性值设置为 true。请参考示例horizontal demo。

也可以参考freeScroll选项。

默认值:scrollX: falsescrollY: true

注意属性 scrollX/Y: true 与overflow: auto有相同的效果。设置一个方向上的值为 false 可以节省一些检测的时间和CPU的计算周期。

options.startX
options.startY

默认情况下iScroll从0, 0 (top left)位置开始,通过此属性可以让滚动条从不同的位置开始滚动。

默认值:0

options.tap

设置此属性为true,当滚动区域被点击或者触摸但并没有滚动时,可以让iScroll抛出一个自定义的tap事件。

这是处理与可以点击元素之间的用户交互的建议方式。侦听tap事件和侦听标准事件的方式一致。示例如下:

element.addEventListener('tap', doSomething, false); \\ Native$('#element').on('tap', doSomething); \\ jQuery

你可以通过传递一个字符串来自定义事件名称。比如:

tap: 'myCustomTapEvent'

在这个示例里你应该侦听名为myCustomTapEvent的事件。

默认值:false

 

五、滚动条

滚动条不只是像名字所表达的意义一样,在内部它们是作为indicators的引用。

一个指示器侦听滚动条的位置并且现实它在全局中的位置,但是它可以做更多的事情。

先从最基本的开始。

options.scrollbars

正如我们在基本功能介绍中提到的,激活滚动条只需要做一件事情,这件事情就是:

var myScroll = new IScroll('#wrapper', {    scrollbars: true});

当然这个默认的行为是可以定制的。

options.fadeScrollbars

不想使用滚动条淡入淡出方式时,需要设置此属性为false以便节省资源。

默认值:false

options.interactiveScrollbars

此属性可以让滚动条能拖动,用户可以与之交互。

默认值:false

options.resizeScrollbars

滚动条尺寸改变基于容器和滚动区域的宽/高之间的比例。此属性设置为false让滚动条固定大小。这可能有助于自定义滚动条样式(如下)。

默认值:true

options.shrinkScrollbars

当在滚动区域外面滚动时滚动条是否可以收缩到较小的尺寸。

有效的值为:'clip' 和 'scale'

'clip'是移动指示器到它容器的外面,效果就是滚动条收缩起来,简单的移动到屏幕以外的区域。属性设置为此值后将大大的提升整个iScroll的性能。

'scale'关闭属性useTransition,之后所有的动画效果将使用requestAnimationFrame实现。指示器实际上有各种尺寸,并且最终的效果最好。

默认值:false

注意改变大小不是在GPU上执行的,所以'scale' 是在CPU上执行。

如果你的应用程序将在多种设备上运行,我建议你使用选项'scale',或者设置'clip' 为 false (例如:在较老的设备上应该设置为'clip' ,而在桌面浏览器上应设置为'scale')。

请参考 示例:

复制代码
  1 <!DOCTYPE html>  2 <html>  3     <head>  4         <meta 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         <title>iScroll demo: scrollbars</title>  7         <script type="text/javascript" src="js/iscroll.js"></script>  8         <script type="text/javascript">  9             var myScroll; 10             function loaded () { 11                 myScroll = new IScroll('#wrapper', { 12                     scrollbars: true, 13                     mouseWheel: true, 14                     interactiveScrollbars: true, 15                     shrinkScrollbars: 'scale', 16                     fadeScrollbars: true 17                 }); 18             } 19             document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false); 20         </script> 21         <style type="text/css"> 22             * { 23                 -webkit-box-sizing: border-box; 24                 -moz-box-sizing: border-box; 25                 box-sizing: border-box; 26             } 27             html { 28                 -ms-touch-action: none; 29             } 30             body,ul,li { 31                 padding: 0; 32                 margin: 0; 33                 border: 0; 34             } 35             body { 36                 font-size: 12px; 37                 font-family: ubuntu, helvetica, arial; 38                 overflow: hidden;  39             } 40             #header { 41                 position: absolute; 42                 z-index: 2; 43                 top: 0; 44                 left: 0; 45                 width: 100%; 46                 height: 45px; 47                 line-height: 45px; 48                 background: #CD235C; 49                 padding: 0; 50                 color: #eee; 51                 font-size: 20px; 52                 text-align: center; 53                 font-weight: bold; 54             } 55             #footer { 56                 position: absolute; 57                 z-index: 2; 58                 bottom: 0; 59                 left: 0; 60                 width: 100%; 61                 height: 48px; 62                 background: #444; 63                 padding: 0; 64                 border-top: 1px solid #444; 65             } 66             #wrapper { 67                 position: absolute; 68                 z-index: 1; 69                 top: 45px; 70                 bottom: 48px; 71                 left: 0; 72                 width: 100%; 73                 background: #ccc; 74                 overflow: hidden; 75             } 76             #scroller { 77                 position: absolute; 78                 z-index: 1; 79                 -webkit-tap-highlight-color: rgba(0,0,0,0); 80                 width: 100%; 81                 -webkit-transform: translateZ(0); 82                 -moz-transform: translateZ(0); 83                 -ms-transform: translateZ(0); 84                 -o-transform: translateZ(0); 85                 transform: translateZ(0); 86                 -webkit-touch-callout: none; 87                 -webkit-user-select: none; 88                 -moz-user-select: none; 89                 -ms-user-select: none; 90                 user-select: none; 91                 -webkit-text-size-adjust: none; 92                 -moz-text-size-adjust: none; 93                 -ms-text-size-adjust: none; 94                 -o-text-size-adjust: none; 95                 text-size-adjust: none; 96             } 97             #scroller ul { 98                 list-style: none; 99                 padding: 0;100                 margin: 0;101                 width: 100%;102                 text-align: left;103             }104             #scroller li {105                 padding: 0 10px;106                 height: 40px;107                 line-height: 40px;108                 border-bottom: 1px solid #ccc;109                 border-top: 1px solid #fff;110                 background-color: #fafafa;111                 font-size: 14px;112             }113         </style>114     </head>115     <body onload="loaded()">116         <div id="header">iScroll</div>117         <div id="wrapper">118             <div id="scroller">119                 <ul>120                     <li>Pretty row 1</li>121                     <li>Pretty row 2</li>122                     <li>Pretty row 3</li>123                     <li>Pretty row 4</li>124                     <li>Pretty row 5</li>125                     <li>Pretty row 6</li>126                     <li>Pretty row 7</li>127                     <li>Pretty row 8</li>128                     <li>Pretty row 9</li>129                     <li>Pretty row 10</li>130                     <li>Pretty row 11</li>131                     <li>Pretty row 12</li>132                     <li>Pretty row 13</li>133                     <li>Pretty row 14</li>134                     <li>Pretty row 15</li>135                     <li>Pretty row 16</li>136                     <li>Pretty row 17</li>137                     <li>Pretty row 18</li>138                     <li>Pretty row 19</li>139                     <li>Pretty row 20</li>140                     <li>Pretty row 21</li>141                     <li>Pretty row 22</li>142                     <li>Pretty row 23</li>143                     <li>Pretty row 24</li>144                     <li>Pretty row 25</li>145                     <li>Pretty row 26</li>146                     <li>Pretty row 27</li>147                     <li>Pretty row 28</li>148                     <li>Pretty row 29</li>149                     <li>Pretty row 30</li>150                     <li>Pretty row 31</li>151                     <li>Pretty row 32</li>152                     <li>Pretty row 33</li>153                     <li>Pretty row 34</li>154                     <li>Pretty row 35</li>155                     <li>Pretty row 36</li>156                     <li>Pretty row 37</li>157                     <li>Pretty row 38</li>158                     <li>Pretty row 39</li>159                     <li>Pretty row 40</li>160                     <li>Pretty row 41</li>161                     <li>Pretty row 42</li>162                     <li>Pretty row 43</li>163                     <li>Pretty row 44</li>164                     <li>Pretty row 45</li>165                     <li>Pretty row 46</li>166                     <li>Pretty row 47</li>167                     <li>Pretty row 48</li>168                     <li>Pretty row 49</li>169                     <li>Pretty row 50</li>170                 </ul>171             </div>172         </div>173         <div id="footer"></div>174     </body>175 </html>
复制代码

 

 

滚动条样式

如果你不喜欢默认的滚动条样式,而且你认为你可以做的更好,你可以自定义滚动条样式。第一步就是设置选项scrollbars的值为'custom'

var myScroll = new IScroll('#wrapper', {    scrollbars: 'custom'});

使用下面的CSS类可以简单的改变滚动条样式。

  • .iScrollHorizontalScrollbar,这个样式应用到横向滚动条的容器。这个元素实际上承载了滚动条指示器。
  • .iScrollVerticalScrollbar,和上面的样式类似,只不过适用于纵向滚动条容器。
  • .iScrollIndicator,真正的滚动条指示器。
  • .iScrollBothScrollbars,这个样式将在双向滚动条显示的情况下被加载到容器元素上。通常情况下其中一个(横向或者纵向)是可见的

自定义滚动条样式示例:

复制代码
  1 <!DOCTYPE html>  2 <html>  3     <head>  4         <meta 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         <title>iScroll demo: styled scrollbars</title>  7         <script type="text/javascript" src="js/iscroll.js"></script>  8         <script type="text/javascript">  9             var myScroll; 10             function loaded () { 11                 myScroll = new IScroll('#wrapper', {  12                     scrollX: true,  13                     scrollbars: 'custom'  14                 }); 15             } 16             document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false); 17         </script> 18         <style type="text/css"> 19             /* Styled scrollbars */ 20             .iScrollHorizontalScrollbar { 21                 position: absolute; 22                 z-index: 9999; 23                 height: 16px; 24                 left: 2px; 25                 right: 2px; 26                 bottom: 2px; 27                 overflow: hidden; 28             } 29             .iScrollHorizontalScrollbar.iScrollBothScrollbars { 30                 right: 18px; 31             } 32             .iScrollVerticalScrollbar { 33                 position: absolute; 34                 z-index: 9999; 35                 width: 16px; 36                 bottom: 2px; 37                 top: 2px; 38                 right: 2px; 39                 overflow: hidden; 40             } 41             .iScrollVerticalScrollbar.iScrollBothScrollbars { 42                 bottom: 18px; 43             } 44             .iScrollIndicator { 45                 position: absolute; 46                 background: #cc3f6e; 47                 border-width: 1px; 48                 border-style: solid; 49                 border-color: #EB97B4 #7C2845 #7C2845 #EB97B4; 50                 border-radius: 8px; 51             } 52             .iScrollHorizontalScrollbar .iScrollIndicator { 53                 height: 100%; 54                 background: -moz-linear-gradient(left,  #cc3f6e 0%, #93004e 100%); 55                 background: -webkit-linear-gradient(left,  #cc3f6e 0%,#93004e 100%); 56                 background: -o-linear-gradient(left,  #cc3f6e 0%,#93004e 100%); 57                 background: -ms-linear-gradient(left,  #cc3f6e 0%,#93004e 100%); 58                 background: linear-gradient(to right,  #cc3f6e 0%,#93004e 100%); 59             } 60             .iScrollVerticalScrollbar .iScrollIndicator { 61                 width: 100%; 62                 background: -moz-linear-gradient(top, #cc3f6e 0%, #93004e 100%); 63                 background: -webkit-linear-gradient(top,  #cc3f6e 0%,#93004e 100%); 64                 background: -o-linear-gradient(top, #cc3f6e 0%,#93004e 100%); 65                 background: -ms-linear-gradient(top, #cc3f6e 0%,#93004e 100%); 66                 background: linear-gradient(to bottom,  #cc3f6e 0%,#93004e 100%); 67             } 68             /* end */ 69             * { 70                 -webkit-box-sizing: border-box; 71                 -moz-box-sizing: border-box; 72                 box-sizing: border-box; 73             } 74             html { 75                 -ms-touch-action: none; 76             } 77             body,ul,li { 78                 padding: 0; 79                 margin: 0; 80                 border: 0; 81             } 82             body { 83                 font-size: 12px; 84                 font-family: ubuntu, helvetica, arial; 85                 overflow: hidden; 86             } 87             #header { 88                 position: absolute; 89                 z-index: 2; 90                 top: 0; 91                 left: 0; 92                 width: 100%; 93                 height: 45px; 94                 line-height: 45px; 95                 background: #CD235C; 96                 padding: 0; 97                 color: #eee; 98                 font-size: 20px; 99                 text-align: center;100                 font-weight: bold;101             }102             #footer {103                 position: absolute;104                 z-index: 2;105                 bottom: 0;106                 left: 0;107                 width: 100%;108                 height: 48px;109                 background: #444;110                 padding: 0;111                 border-top: 1px solid #444;112             }113             #wrapper {114                 position: absolute;115                 z-index: 1;116                 top: 45px;117                 bottom: 48px;118                 left: 0;119                 width: 100%;120                 background: #ccc;121                 overflow: hidden;122             }123             #scroller {124                 position: absolute;125                 z-index: 1;126                 -webkit-tap-highlight-color: rgba(0,0,0,0);127                 width: 2000px;128                 -webkit-transform: translateZ(0);129                 -moz-transform: translateZ(0);130                 -ms-transform: translateZ(0);131                 -o-transform: translateZ(0);132                 transform: translateZ(0);133                 -webkit-touch-callout: none;134                 -webkit-user-select: none;135                 -moz-user-select: none;136                 -ms-user-select: none;137                 user-select: none;138                 -webkit-text-size-adjust: none;139                 -moz-text-size-adjust: none;140                 -ms-text-size-adjust: none;141                 -o-text-size-adjust: none;142                 text-size-adjust: none;143             }144             #scroller ul {145                 list-style: none;146                 padding: 0;147                 margin: 0;148                 width: 100%;149                 text-align: left;150             }151             #scroller li {152                 padding: 0 10px;153                 height: 40px;154                 line-height: 40px;155                 border-bottom: 1px solid #ccc;156                 border-top: 1px solid #fff;157                 background-color: #fafafa;158                 font-size: 14px;159             }160         </style>161     </head>162     <body onload="loaded()">163     <div id="header">iScroll</div>164     <div id="wrapper">165         <div id="scroller">166             <ul>167                 <li>Pretty row 1</li>168                 <li>Pretty row 2</li>169                 <li>Pretty row 3</li>170                 <li>Pretty row 4</li>171                 <li>Pretty row 5</li>172                 <li>Pretty row 6</li>173                 <li>Pretty row 7</li>174                 <li>Pretty row 8</li>175                 <li>Pretty row 9</li>176                 <li>Pretty row 10</li>177                 <li>Pretty row 11</li>178                 <li>Pretty row 12</li>179                 <li>Pretty row 13</li>180                 <li>Pretty row 14</li>181                 <li>Pretty row 15</li>182                 <li>Pretty row 16</li>183                 <li>Pretty row 17</li>184                 <li>Pretty row 18</li>185                 <li>Pretty row 19</li>186                 <li>Pretty row 20</li>187                 <li>Pretty row 21</li>188                 <li>Pretty row 22</li>189                 <li>Pretty row 23</li>190                 <li>Pretty row 24</li>191                 <li>Pretty row 25</li>192                 <li>Pretty row 26</li>193                 <li>Pretty row 27</li>194                 <li>Pretty row 28</li>195                 <li>Pretty row 29</li>196                 <li>Pretty row 30</li>197                 <li>Pretty row 31</li>198                 <li>Pretty row 32</li>199                 <li>Pretty row 33</li>200                 <li>Pretty row 34</li>201                 <li>Pretty row 35</li>202                 <li>Pretty row 36</li>203                 <li>Pretty row 37</li>204                 <li>Pretty row 38</li>205                 <li>Pretty row 39</li>206                 <li>Pretty row 40</li>207                 <li>Pretty row 41</li>208                 <li>Pretty row 42</li>209                 <li>Pretty row 43</li>210                 <li>Pretty row 44</li>211                 <li>Pretty row 45</li>212                 <li>Pretty row 46</li>213                 <li>Pretty row 47</li>214                 <li>Pretty row 48</li>215                 <li>Pretty row 49</li>216                 <li>Pretty row 50</li>217             </ul>218         </div>219     </div>220     <div id="footer"></div>221     </body>222 </html>
复制代码

如果你设置resizeScrollbars: false,滚动条将是固定大小,否则它将基于滚动区域的尺寸变化。

请接着阅读接下来的内容。

 

六、无限滚动

iScroll集成智能缓存系统,允许处理的使用(重用)一群元素几乎无限数量的数据。

无限滚动开发的早期阶段,尽管它可以被认为是稳定的,但它还没有准备好被广泛使用。

 

复制代码
  1 <!DOCTYPE html>  2 <html>  3     <head>  4         <meta 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         <title>iScroll demo: infinite scrolling</title>  7         <script type="text/javascript" src="../../build/iscroll-infinite.js"></script>  8         <script type="text/javascript">  9             /****************************************************************************** 10              * 11              * For the sake of keeping the script dependecy free I'm including a custom 12              * AJAX function. You should probably use a third party plugin 13              * 14              */ 15             function ajax (url, parms) { 16                 parms = parms || {}; 17                 var req = new XMLHttpRequest(), 18                     post = parms.post || null, 19                     callback = parms.callback || null, 20                     timeout = parms.timeout || null; 21              22                 req.onreadystatechange = function () { 23                     if ( req.readyState != 4 ) return; 24              25                     // Error 26                     if ( req.status != 200 && req.status != 304 ) { 27                         if ( callback ) callback(false); 28                         return; 29                     } 30              31                     if ( callback ) callback(req.responseText); 32                 }; 33              34                 if ( post ) { 35                     req.open('POST', url, true); 36                     req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 37                 } else { 38                     req.open('GET', url, true); 39                 } 40              41                 req.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); 42              43                 req.send(post); 44              45                 if ( timeout ) { 46                     setTimeout(function () { 47                         req.onreadystatechange = function () {}; 48                         req.abort(); 49                         if ( callback ) callback(false); 50                     }, timeout); 51                 } 52             } 53             /* 54              *****************************************************************************/ 55              56             var myScroll; 57              58             function loaded () { 59                 myScroll = new IScroll('#wrapper', { 60                     mouseWheel: true, 61                     infiniteElements: '#scroller .row', 62                     //infiniteLimit: 2000, 63                     dataset: requestData, 64                     dataFiller: updateContent, 65                     cacheSize: 1000 66                 }); 67             } 68              69             function requestData (start, count) { 70                 ajax('dataset.php?start=' + +start + '&count=' + +count, { 71                     callback: function (data) { 72                         data = JSON.parse(data); 73                         myScroll.updateCache(start, data); 74                     } 75                 }); 76             } 77              78             function updateContent (el, data) { 79                 el.innerHTML = data; 80             } 81              82             document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false); 83              84         </script> 85          86         <style type="text/css"> 87             * { 88                 -webkit-box-sizing: border-box; 89                 -moz-box-sizing: border-box; 90                 box-sizing: border-box; 91             } 92              93             html { 94                 -ms-touch-action: none; 95             } 96              97             body,ul,li { 98                 padding: 0; 99                 margin: 0;100                 border: 0;101             }102             103             body {104                 font-size: 12px;105                 font-family: ubuntu, helvetica, arial;106                 overflow: hidden; /* this is important to prevent the whole page to bounce */107             }108             109             #header {110                 position: absolute;111                 z-index: 2;112                 top: 0;113                 left: 0;114                 width: 100%;115                 height: 45px;116                 line-height: 45px;117                 background: #CD235C;118                 padding: 0;119                 color: #eee;120                 font-size: 20px;121                 text-align: center;122                 font-weight: bold;123             }124             125             #footer {126                 position: absolute;127                 z-index: 2;128                 bottom: 0;129                 left: 0;130                 width: 100%;131                 height: 48px;132                 background: #444;133                 padding: 0;134                 border-top: 1px solid #444;135             }136             137             #wrapper {138                 position: absolute;139                 z-index: 1;140                 top: 45px;141                 bottom: 48px;142                 left: 0;143                 width: 100%;144                 background: #ccc;145                 overflow: hidden;146             }147             148             #scroller {149                 position: absolute;150                 z-index: 1;151                 -webkit-tap-highlight-color: rgba(0,0,0,0);152                 width: 100%;153                 -webkit-transform: translateZ(0);154                 -moz-transform: translateZ(0);155                 -ms-transform: translateZ(0);156                 -o-transform: translateZ(0);157                 transform: translateZ(0);158                 -webkit-touch-callout: none;159                 -webkit-user-select: none;160                 -moz-user-select: none;161                 -ms-user-select: none;162                 user-select: none;163                 -webkit-text-size-adjust: none;164                 -moz-text-size-adjust: none;165                 -ms-text-size-adjust: none;166                 -o-text-size-adjust: none;167                 text-size-adjust: none;168             }169             170             #scroller ul {171                 list-style: none;172                 padding: 0;173                 margin: 0;174                 width: 100%;175                 text-align: left;176                 position: relative;177             }178             179             #scroller li {180                 position: absolute;181                 width: 100%;182                 top: 0;183                 left: 0;184                 -webkit-transform: translateZ(0);185                 -moz-transform: translateZ(0);186                 -ms-transform: translateZ(0);187                 -o-transform: translateZ(0);188                 transform: translateZ(0);189                 padding: 0 10px;190                 height: 40px;191                 line-height: 40px;192                 border-bottom: 1px solid #ccc;193                 border-top: 1px solid #fff;194                 background-color: #fafafa;195                 font-size: 16px;196             }197         198         </style>199     </head>200     <body onload="loaded()">201     <div id="header">iScroll</div>202     203     <div id="wrapper">204         <div id="scroller">205             <ul>206                 <li class="row">Row 1</li>207                 <li class="row">Row 2</li>208                 <li class="row">Row 3</li>209                 <li class="row">Row 4</li>210                 <li class="row">Row 5</li>211                 <li class="row">Row 6</li>212                 <li class="row">Row 7</li>213                 <li class="row">Row 8</li>214                 <li class="row">Row 9</li>215                 <li class="row">Row 10</li>216                 <li class="row">Row 11</li>217                 <li class="row">Row 12</li>218                 <li class="row">Row 13</li>219                 <li class="row">Row 14</li>220                 <li class="row">Row 15</li>221     222                 <li class="row">Row 16</li>223                 <li class="row">Row 17</li>224                 <li class="row">Row 18</li>225                 <li class="row">Row 19</li>226                 <li class="row">Row 20</li>227                 <li class="row">Row 21</li>228                 <li class="row">Row 22</li>229                 <li class="row">Row 23</li>230                 <li class="row">Row 24</li>231                 <li class="row">Row 25</li>232                 <li class="row">Row 26</li>233                 <li class="row">Row 27</li>234                 <li class="row">Row 28</li>235                 <li class="row">Row 29</li>236                 <li class="row">Row 30</li>237             </ul>238         </div>239     </div>240     241     <div id="footer"></div>242     243     </body>244 </html>
复制代码

 

 

iscroll下载链接:GitHub-iscroll

更多内容参考:iScroll 5 API 中文版


0 0
原创粉丝点击