js给iscroll的容器增添元素时超过了容器的高度应该怎么解决

js给iscroll的容器增添元素时超过了容器的高度应该怎么解决,第1张

肯定会超出高度的,因为未添加新元素时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 实现下拉刷新,上拉加载,现在出现一个问题,就是当我在下拉刷新的同时,马上进行上拉等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9351822.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存