移动端的iscroll
2017-09-28 10:58
120 查看
在PC端的时候,我们使用的是position:fixed的方法使得导航栏,标题栏等固定在头部
但是,在移动端的开发当中,使用position:fixed固定定位,很多手机都支持不好,尤其是在定位的区域还需要输入内容调取虚拟键盘的时候会出现很多很多的问题
解决这个问题,就不能使用固定定位了,而使用局部滚动出来(iscroll)
首先,给整个html的width和height都设置为100%,并且overflow:hidden,这样保证我们的页面有且只有一屏
然后,给下面内容多的区域做局部滚动。
这里要先固定这个区域的高度,计算方式:整个屏幕的高度 - 头部的高度
可以设置滚动条的颜色或者透明度
同时,设置content的position:relative是为了让滚动条只出现在content区域里面
这样就完成了局部滚动的操作
在ios上,如果存在局部滚动,就要在局部滚动的区域加上这个属性,如果不加,滚动会很慢,而且看起来会有一卡一卡的感觉
但是,在移动端的开发当中,使用position:fixed固定定位,很多手机都支持不好,尤其是在定位的区域还需要输入内容调取虚拟键盘的时候会出现很多很多的问题
解决这个问题,就不能使用固定定位了,而使用局部滚动出来(iscroll)
首先,给整个html的width和height都设置为100%,并且overflow:hidden,这样保证我们的页面有且只有一屏
html, body { width: 100%; height: 100%; color: #000; font-size: .14rem; font-family: "microsoft Yahei", "Arial Narrow"; overflow: hidden; }
然后,给下面内容多的区域做局部滚动。
这里要先固定这个区域的高度,计算方式:整个屏幕的高度 - 头部的高度
<!--第一步--> <script type="text/javascript" src="js/ejs.min.js"></script> <!--第三步--> <script type="text/template" id="conTemplate"> <%$.each(matchData,function(index,item){%> <li> <span><%=item.num%></span> <span><%=item.name%></span> <span><%=item.sex%></span> <span><%=item.score%></span> </li> <%})%> </script> <script type="text/javascript" src="js/zepto.min.js"></script> <script type="text/javascript" src="js/iscroll-5.1.3.min.js"></script> <script type="text/javascript"> // rem document.documentElement.style.fontSize = document.body.clientWidth / 320 * 100 + "px"; ~function () { var $content = $('.content'); //计算content区域的高度 // 实现竖向局部滚动,我们首先需要把最外层容器的高度设定好 $content.css('height', document.documentElement.clientHeight - $('.header')[0].offsetHeight); // 第四步 数据绑定 function bindHTML(data) { var conTemplate = $("#conTemplate").html(); var result = ejs.render(conTemplate, {matchData: data}); $content.children('ul').html(result); //在数据绑定完成之后再实现局部滚动 /* * var 实例 = new IScroll(需要局部滚动的区域,{配置参数}); * 初始化成功后,只对当前容器中的第一个子元素实现了滚轮操作, * document.querySelector('.content').querySelector('*') * [设置settingd] * scrollbars: true 显示滚动条,默认是不显示的(开启后,iscroll会默认向content区域 * 添加一个类名为iScrollVerticalScrollbar iScrollLoneScrollbar的div盒子, * 这个div控制的是样式position:absolute;所以如只想让滚动条在容器中, * 需要给当前的content增加position:relative) * fadeScrollbars: true 滚动条当鼠标在区域中的时候显示,离开的时候消失 * mouseWheel: true 设置支持鼠标滚轮滚动 * bounce:false 禁止运动到边界之后反弹 * click: true iscroll为了防止滑动过程中的误操作,默认是把click禁止掉的 * 如果需要点击,则开启click即可 * * [方法] * myScroll.refresh() 当滚动区域的内容发生改变的时候,我们让当前的实例刷新一下 * 这样的话滚动区域的相关值都会跟着重新计算 * myScroll.scrollTo(x,y,time) 滚动到具体的坐标位置 * myScroll.scrollToElement($li[$li.length - 1], 300); 300ms后滚动到最后一个元素 * */ var myScroll = new IScroll('.content', { scrollbars: true, fadeScrollbars: true, mouseWheel: true, bounce: false, click: true }); myScroll.refresh(); // myScroll.scrollTo(0,-1000,300); var $li = $content.find('li'); myScroll.scrollToElement($li[$li.length - 1], 300); } // 第二步 $.ajax({ url: 'json/data.json', type: 'get', dataType: 'json', cache: false, success: bindHTML }); }(); </script>
可以设置滚动条的颜色或者透明度
同时,设置content的position:relative是为了让滚动条只出现在content区域里面
.content { position: relative; overflow: hidden; } .iScrollIndicator { opacity: 0.5; }
这样就完成了局部滚动的操作
在ios上,如果存在局部滚动,就要在局部滚动的区域加上这个属性,如果不加,滚动会很慢,而且看起来会有一卡一卡的感觉
相关文章推荐
- web移动端:iscroll实现局部滚动
- 滑动固定表格头和列--js,html,css--移动端--基于Iscroll
- iscroll.js 移动端手触滚动效果。
- tips 前端 移动端 web iscroll 5 自译文档 api速查
- 移动端插件IScroll.js
- 学习使用jquery iScroll.js移动端滚动条插件
- 学习使用jquery iScroll.js移动端滚动条插件
- 移动端 IScroll 源码解读
- iscroll实现移动端下拉刷新,上拉加载更多
- 3.9 移动端使用iscroll出现的问题,多图片进行切换出现的问题,active选择器
- 移动端下拉刷新,iScroll.js用法(转载)
- 使用移动端页面iScroll插件遇到的一个checkbox选择的问题
- Angularjs中ng-repeat与移动端滑动插件iScroll的冲突
- jQuery iScroll.js 移动端滚动条美化插件第1/5页
- 关于iscroll插件在移动端的应用滑动出现卡顿、不流畅问题
- IScroll.js移动端点击事件被阻止的解决方案.
- zepto.js + iscroll.js上拉加载 下拉加载的 移动端 新闻列表页面
- 关于移动端用iscroll动画出现闪烁和迟钝(不流畅)的现象记录
- iscroll 移动端上拉刷新 下拉加载 实例 !
- 移动端滚动插件iScroll