难搞的滚动事件(滚动默认,scrollTop)

难搞的滚动事件(滚动默认,scrollTop),第1张

现今的 chrome 浏览器,为了实现丝滑顺畅地滑动,活动时间直接执行而不再检测默认事件,这使得无法用 epreventDafult() 来阻止默认事件。

现在需要添加 {passive: false} 配置

$(document)addEventListener( 'scroll', fun, {passive: false} ) 把事件被动监听设置为 false 之后,就可以正常阻止默认事件了。

为了手动地使页面平滑滚动到某个高度,需要使用 $animate({scrollTop: val}) 。由于不同浏览器间的差异,绑定 scrollTop 的 DOM 元素是不一样的,比如

为了解决这个差异,我们需要把 animate 同时绑定在两个节点上。 $('html, body')animate()

$()position() ———— 基于父元素,从自身的外边框为点。

$()offset() ———— 基于父元素,从自身内容为点。

$(window)height()width() ———— 获取窗口宽高。

因为使用的是监听 touchstar 和 touchend 方法,所以该方法只适用于移动端。

主要的思路就是监听“触摸开始”和“触摸结束”两个事件,分别获取事件当前的触摸点坐标和文档滚动的值,进行对比判断“触摸是否有滑动”以及“文档是否有滚动(到底)”,来执行需要的方法。下面说说几个注意点:

scrollTop/scrollLeft 两个属性是唯一 可读写 的属性

滚动条卷去(隐藏)的高度

boxscrollTop=0 让容器直接回到顶部

0是最小值,若设置负值,以0算。例如: boxscrollTop=-100 再次获取值也会变成0

真实高度-当前容器一屏的高度

maxScrollTop = boxscrollHeight - boxclientHeight

你好,我先需要明确一下你是要问jQuery中scrollTop获取滚动条距顶端的距离,还是要使用scrollTop来设置滚动条距顶端的距离,或者说需要二者兼备。

1、如果是获取,原生js实现很容易:

var div = documentgetElementById('wgt-ask'),

    scrollTop = divscrollTop;

consolelog(scrollTop); // 100

前提是div已经具备滚动条,不然使用为0

2、如果是设置,原生js也很简单:

var div = documentgetElementById('wgt-ask');

divscrollTop = 100;

依然前提是div已经具备滚动条,否则设置无效

3、如果是二者兼备,这里就要简单的封装一下了:

function scrollTop(obj, len){

    if (typeof len === 'undefined') {

        return objscrollTop;

    } else {

        objscrollTop = len;

    }

}

var div = documentgetElementById("wgt-user");

scrollTop(div, 100); // 设置

var st = scrollTop(div); // 100 获取

希望是你想要的结果,如有疑问欢迎追问,望采纳~

以上就是关于难搞的滚动事件(滚动默认,scrollTop)全部的内容,包括:难搞的滚动事件(滚动默认,scrollTop)、浏览器滚动条卷去的高度、jQuery 中 scrollTop;原生的js怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存