关于isScroll如何使用

isScroll是用原生javascript写的实现局部滚动的一个库,它不依赖任何第三方框架。设计的初衷是为了解决移动webkit系浏览器的区域滚动问题,兼容safari、chrome、firefox5+、opera11+、IE9+及其他webkit核心浏览器。现已更新到isScroll5.

我们采用官网(http://iscrolljs.com/)推荐的html结构来举例:

 1 <div class="wrapper">
 2     <ul>
 3         <li>1</li>
 4         <li>2</li>
 5         <li>3</li>
 6         <li>4</li>
 7         <li>5</li>
 8         <li>6</li>
 9         <li>7</li>
10         <li>8</li>
11         <li>9</li>
12         <li>10</li>
13         <li>11</li>
14         <li>12</li>
15     </ul>
16     <br/>
17 </div>

下面是对应的css部分:

.wrapper{
            position:relative; //这个属性必须写,可以为relative或absolute。原因见js部分
            margin:50px auto; //上下50px的margin, 水平居中
            height:650px;   //必须设定scrollbar容器的高度,只有当内容高度超过容器高度的时候,才会显示scrollbar
            width:200px;
            overflow:hidden; //当父容器高度不足时,只有通过滚动条才能看到超出的内容
            background:#eee;
        }
        ul{
            margin:0;
            padding:0; //去掉ul默认的样式
            list-style:none;
        }

        ul li{
            border:1px solid #ccc;
            height:50px;//所有的li高度加起来超过650px
            width:100%;
        }

在js代码中,首先要创建一个实例:

window.onload = function(){
var myScroll = new IScroll(".wrapper",{
mouseWheel:true, //侦听鼠标滚轮事件
scrollbars:true, //是否显示默认的滚动条
 }) }

在这里,用的是onload事件,就这个例子来说,使用DOMContentLoaded也是可以的。但是,正如官网中所推荐的,如果滚动区域里包含图片等,在这些元素还没有加载之前就完成了滚动条的初始化,isScroll在计算scrollbar的尺寸时就会发生错误。

上面留了一个问题:为什么容器要用position:relative呢?初始化的时候,scrollbars的值设置为true,会默认的在.wrapper所对应的元素后面添加一个子元素(appendChild),新添加的元素相对于容器元素定位。所以,如果不给父容器写定位,滚动条就不会出现。

上面的步骤完成后,就能看到一个带着滚动条的区域了。但是当我缩放窗口的时候,.wrapper所对应的区域应该跟着缩放才对,这样就不会出现部分元素被遮挡的现象。我们用window的resize事件完成。

var oHeight = oWrap.innerHeight();$(window).on("resize",scrollRefresh);//window的resize被触发,就执行scrollRefresh方法

function scrollRefresh(){
          var curHeight = $(window).innerHeight()-parseFloat(oWrap.css("marginTop"))*2;//区域当前的高度=可视区域高度-上下margin
          curHeight=curHeight>oHeight?oHeight:curHeight;//当窗口恢复正常大小时,容器高度不会超过原来的高度
          oWrap.css("height",curHeight);
          myScroll.refresh();//重绘.wrapper区域,包括计算包装器和滚动条的尺寸
      }

大部分的功能已经实现了,但是还有一个问题。如果可视区域比较小,.wrapper因为被遮挡而不能滑动到底部,也就是看不到底下的内容。我自己想到的一个解决方案是在window.onload完成的时候,首先执行一遍scrollRefresh方法,获取可视区域的高度,根据可视区域的大小设置滚动

部分的位置和尺寸。

完整的代码请见: https://github.com/yinggeABC/kanbisai/blob/master/isScrollDemo.html

时间: 2024-08-06 16:20:05

关于isScroll如何使用的相关文章

isScroll 插件在iPhone 5s 和以上版本

才加入这个移动项目组三天,解决一个同事(请假),解决一个切换头部tab 选型时,下拉数据,再次切换到另外一个选项时,出现滚动条距离顶部有些距离,当频繁操作会出现距离顶部距离加大问题(第二天衍生出其他bug),查看了isScroll 源码,尼玛了用 cssText这个不建议使用的属性,我只好用这个修复,个人用的5s,测试机是以上版本,出现了浏览器兼容和识别问题 建议使用 -webkit-transform 这个

移动端使用isscroll.js input无法获取焦点(就是点了没反应啦!)

有幸网上找到了解决的办法 只要在代码里加入以下一段代码就可以了 function allowFormsInIscroll(){ [].slice.call(document.querySelectorAll('input, select, button')).forEach(function(el){ el.addEventListener(('ontouchstart' in window)?'touchstart':'mousedown', function(e){ e.stopPropag

isScroll代码

window.iScroll = (function(w,d){ var isMobile = /mobile/gi.test(navigator.userAgent.toLowerCase()); var events = isMobile ? { down: 'touchstart', move: 'touchmove', up: 'touchend' } : { down: 'mousedown', move: 'mousemove', up: 'mouseup' },x,y,x2,y2

isscroll插件 实现下拉加载 上啦刷新 转

http://www.jb51.net/article/98394.htm 下面是别人的代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-widt

isscroll等几款移动端工具介绍

本文摘自csdn Apache Cordova Apache Cordova是一套设备API,允许移动应用的开发者使用JavaScript来访问本地设备的功能,比如摄像头.加速计.它可以与UI框架(如jQuery Mobile 或 Dojo Mobile 或 Sencha Touch)等相结合使用,这些UI框架可以使用HTML.CSS和JavaScript开发智能手机应用. 在使用Cordova API时,应用程序的构建可以无需本地代码(如Java或对象C等),使用的是Web技术 由于这些Jav

isScroll的滚动组件的用法

<div class="wrapper">  <ul>     <li>1</li>     <li>2</li>      <li>3</li>  </ul></div> .wrapper{ position:relative; //这个属性必须写,可以为relative或absolute.原因见js部分 margin:50px auto; //上下50px的mar

自写原生jq滚轮插件

自己仿bootStarp插件写的,思路局限,仅供交流,有好的建议还请不吝赐教//使用方法:                //html:需要ul>li>a的模式,a需要类名,需要设置page-scroll属性,page-scroll属性需要1以数字结尾,容器为所变化的最大页面                //js:请传入一个事件对象,对象需要传入属性:pageAnchorName(锚点id)及contianer(容器类)                //下标jq对象传入$navIndex属

虚拟键盘冲击移动端fixed布局的解决方案

在做移动端业务开发时,会碰到fixed元素和输入框同时存在的情况.在手机软键盘唤起的情况下,会造成原本fixed定位的元素跟随软键盘而上浮,对整体布局造成冲击.来看这样一个栗子直观的感受一下这个bug. 问题描述: 开发一个创业板转签页面,预期效果图是这样的. 红色矩形区域为使用fixed布局的内容,其css代码为{width:100%;position:fixed;bottom:0;left:0},这看起来并没有什么问题,但在手机软键盘唤起进行输入的时候,红色矩形区域跟随软键盘而浮动起来,这时

LigerUI一个前台框架增、删、改asp.net代码的实现

先上代码:前台代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">