
肯定会超出高度的,因为未添加新元素时iscroll在固定的容器高度内可以自由滚动,但是当你给容器动态添加元素时,容器的高度高了,而iscroll所触及的高度还是原来的高度,导致你不能滑到最底下。解决的办法是:每次你在添加元素后,加一句对iscroll的刷新myScrollrefresh();即可
给你的iscroll对象绑定scrollEnd事件,在事件函数里面判断myScrollmaxScrollY(最大滚动值)和myScrolly(当前滚动值)是否相等来判断滚动到底部,上代码:
myScrollon("scrollEnd",function(e){
if(myScrollmaxScrollY == myScrolly){
consolelog("我已滚动到底部");
}
consolelog("111");
});
1、在options中加入如下参数代码(我的代码是在2470行):
//原本就有的部分
HWCompositing: true,
useTransition: true,
useTransform: true,
//我加入的部分
minScrollY : 0,
minScrollX : 0
2、在下面不远处(十行以内)加入如下参数:
//新加部分
thisminScrollY = thisoptionsminScrollY;
thisminScrollX = thisoptionsminScrollX;
原先就有的部分
thistranslateZ = thisoptionsHWCompositing && utilshasPerspective ' translateZ(0)' : '';
3、最后一处修改,在resetPosition方法内,此处直接贴上更改之后的方法,其实真正的修改只是将thisminScrollX修改成了(代码在2830行左右):
resetPosition: function (time) {
var x = thisx,
y = thisy;
time = time || 0;
if ( !thishasHorizontalScroll || thisx > thisminScrollX ) {
x = thisminScrollX;
} else if ( thisx < thismaxScrollX ) {
x = thismaxScrollX;
}
if ( !thishasVerticalScroll || thisy > thisminScrollY ) {
y = thisminScrollY;
} else if ( thisy < thismaxScrollY ) {
y = thismaxScrollY;
}
if ( x == thisx && y == thisy ) {
return false;
}
thisscrollTo(x, y, time, thisoptionsbounceEasing);
return true;
},
全部修改内容如上,调用的时候,只需要传入minScrollX、minScrollY参数便可实现下拉后回d上面的预留位置了。
注:对于scroll的滚动区域小于包裹容器的,iscroll禁止滚动,会造成无法实现下拉刷新,这里有一个小技巧,就是给滚动区域加一个min-height:101%;
最后附上此次修改的dome下载地址,由于dome最初也是从别处拿的(最初的dome不能满足需求),其中的css布局方面个人觉得有些不好,但由于最近工作紧张也没有去改,暂时就先这样吧,有空会优化一下的。
1、在options中加入如下参数代码(我的代码是在2470行):
//原本就有的部分
HWCompositing: true,
useTransition: true,
useTransform: true,
//我加入的部分
minScrollY : 0,
minScrollX : 0
2、在下面不远处(十行以内)加入如下参数:
//新加部分
thisminScrollY = thisoptionsminScrollY;
thisminScrollX = thisoptionsminScrollX;
原先就有的部分
thistranslateZ = thisoptionsHWCompositing && utilshasPerspective ' translateZ(0)' : '';
3、最后一处修改,在resetPosition方法内,此处直接贴上更改之后的方法,其实真正的修改只是将thisminScrollX修改成了(代码在2830行左右):
resetPosition: function (time) {
var x = thisx,
y = thisy;
time = time || 0;
if ( !thishasHorizontalScroll || thisx > thisminScrollX ) {
x = thisminScrollX;
} else if ( thisx < thismaxScrollX ) {
x = thismaxScrollX;
}
if ( !thishasVerticalScroll || thisy > thisminScrollY ) {
y = thisminScrollY;
} else if ( thisy < thismaxScrollY ) {
y = thismaxScrollY;
}
if ( x == thisx && y == thisy ) {
return false;
}
thisscrollTo(x, y, time, thisoptionsbounceEasing);
return true;
},
全部修改内容如上,调用的时候,只需要传入minScrollX、minScrollY参数便可实现下拉后回d上面的预留位置了。
注:对于scroll的滚动区域小于包裹容器的,iscroll禁止滚动,会造成无法实现下拉刷新,这里有一个小技巧,就是给滚动区域加一个min-height:101%;
我想通了,scroll事件不会被触发,这lazyload是听。所以,你必须做的唯一的事情,就是触发滚动事件为您手动滚动容器。该onScrollEnd从iScroll回调,做了
onScrollEnd:
function
()
{
$('divscroll')trigger('scroll');
}
而$('divscroll')是
simulation-scroll-y 是开源库 finger-mover 的一个插件,该插件的实现功能为移动端纵向模拟滚动。
基于 simulation-scroll-y 插件可以实现很多效果及功能,查看: Full demo
finger-mover 提供中英双语文档。
安装和使用官方文档写的很清楚,这里就贴出地址: finger-mover 中文文档
根据文档介绍他有如下特性:
移动端模拟滚动的库有很多,例如:iscroll、xscroll、better-scroll 等等,那为什么还要一个 simulation-scroll-y 呢?答案是:这并不是一个轮子。不妨做如下对比:
库体积很大一部分是由框架所提供的功能决定的,但是在完成相同功能的前提下,simulation-scroll-y 应该算是最小的。
simulation-scroll-y 作为 finger-mover 的插件,其体积只有 442kb,即使加上 finger-mover 本身的 1112kb 也才只有 1554kb,关键是 finger-mover 还提供了其他移动的插件,供你选择。
如果你仅仅要实现一个模拟滚动已经下拉刷新、无限滚动的功能,那么使用 simulation-scroll-y 要比你一次性的引入其他框架如 iscroll 等要小的多。如果你要实现轮播图,完全可以使用 finger-mover 的轮播图插件,这比你使用 swiper 要划算的多。
在UC浏览器,手机QQ内的webview 都会出现此类问题。
看下图:
而 simulation-scroll-y 则不会出现这样的问题:
大多数的实现中,当多指 *** 作时,会阻止运动,如下图:
另外一些不阻止滚动的实现中,虽然能滚动,但是也会出现奇葩的bug,如下图所示:
在这个实现中,虽然当第二根手指触摸屏幕时依然能够滚动,但是当拿开第一个手指时,连续滑动第二根手指,第二根手指并不能 *** 作滚动元素,且在第二根手指滑动的过程中,连续使用第一根手指点按屏幕,会出现奇葩滚动动作。
以上问题,在 simulation-scroll-y 则不会出现,无论有几根手指触摸屏幕, simulation-scroll-y 都将控制权交给第一根手指,如果第一个手指拿开,那么第二根手指将继承第一根手指的状态,完美衔接滚动,此功能的实现得益于 Fingerd ,如下图:
一些现有实现中,在下拉刷新后,迅速上滑,然后再滑动下来,你会发现下拉挂掉了,永远收不回去,如下图:
另外的一些实现则规定了下拉刷新的形式:下拉后是停留等待 还是 不停留等待
而 simulation-scroll-y 则是完全给你自定义下拉 *** 作的机会,你可以实现任何形式的下拉刷新 *** 作,另外 simulation-scroll-y 在你滚动页面的过程中完全不会影响下拉 *** 作,详情请查看 pullDown 选项。
以上就是关于js给iscroll的容器增添元素时超过了容器的高度应该怎么解决全部的内容,包括:js给iscroll的容器增添元素时超过了容器的高度应该怎么解决、iscroll.js为什么下面也会滚动、Iscroll4 实现下拉刷新,上拉加载,现在出现一个问题,就是当我在下拉刷新的同时,马上进行上拉等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)