如何用js监听滚动条滚动事件

如何用js监听滚动条滚动事件,第1张

documentonscroll = function(){

if(documentbodyscrollTop+documentbodyclientHeight>=documentbodyscrollHeight){

alert('bottom');

}

}

body里放一个高度2000的div。不保证IE。

这里有一个例子,希望可以帮到你

$(window)scroll(function()

{

//

当滚动到最底部以上100像素时,

加载新内容

if

($(document)height()

-

$(this)scrollTop()

-

$(this)height()

<

100)

{

if

(flag)

{

var

$boxes

=

$(getList());

$containerappend($boxes)masonry('appended',

$boxes);

}

}

});

1 scroll事件在滚动条滚动时被触发

2 scroll检测的是滚动条的滚动,当滚动条不能滚动(到顶或到底)时,scroll便不再触发

3 默认滚动不能禁止

4 scroll事件可以被高频率的触发,事件处理程序不应该执行高性能消耗的 *** 作,推荐的做法是scroll里面的 *** 作使用requestAniamtionFrame() *** 作

5 感觉animateJS应该做了这个优化吧

1 wheel在鼠标滚轮滚动的时候被触发,由于鼠标滚轮时大部分都会触发scroll事件,所以wheel事件先触发

2 一旦滚动条到底部的时候,滑动鼠标滚轮继续滚动,wheel还是会一直触发,而scroll这时不会触发

3 可以禁止滚轮滚动

4 不要将 wheel 事件与[ scroll ]事件混淆。事件的默认 *** 作 wheel 是特定于实现的,不一定调度 scroll 事件。即使是这样,事件 delta 中的值 wheel 也不一定反映内容的滚动方向。因此,不要依赖 wheel 事件的 delta 属性来获取滚动方向。相反,检测事件[ scrollLeft ]中[ scrollTop ]目标的值变化。 scroll

5 中间滚轮按下去的时候也可以滚动,但是不会触发scroll事件

6 better-scroll的处理 *** 作,真正和滚动有关的只有wheel事件,没有监听scroll事件而且他这种 *** 作是会屏蔽中键按下触发滚动的这种 *** 作不知道屏蔽之后可不可以

7 mouseWheel是非标准事件,已经被这个事件代替

8 属性

9 据滚轮方向(即该事件的各delta属性值)来推断文档内容的滚动方向,因标准未定义滚轮事件具体会引发什么样的行为,引发的行为实际上是各浏览器自行定义的。即便滚轮事件引发了文档内容的滚动行为,也不表示滚轮方向和文档内容的滚动方向一定相同。因而通过该滚轮事件获知文档内容滚动方向的方法并不可靠。需要检查元素的scroll值判断才知道是朝什么方向滚动

10 他的滚动完全就是用whell自己做

11 属性

1 scroll,wheel,mousewheel,DOMMouseScroll

2 兼容性

[上传失败(image-d0be31-1647574199505)]

1 需要ref拿到dom *** 作,这里被普通的接管了,普通的是可以通过epreventDefaault()阻止了默认的滚动,但是鼠标中间键按下触发的滚动,是无法阻止的,并且不会触发wheel事件,那这里就不行了,所以还是不能用wheel来做这个

2

如果使用jquery的话,可以这样写:

$(window)bind("scroll", function(){ 

        var top = $(this)scrollTop(); // 当前窗口的滚动距离

  });

如果使用原生js,可以这样写(摘自网上的):

  获取<a href=">

MFC鼠标滚轮消息WM_MOUSEWHEEL

使用WM_MOUSEWHEEL

需要把CWnd设定为Focus

ON_WM_MOUSEWHEEL( )

CWnd::OnMouseWheel

afx_msg BOOL OnMouseWheel( UINT nFlags, short zDelta, CPoint pt );

返回值:如果允许鼠标轮滚动,则返回非零值;否则返回0。

参数:

nFlags 指明是否按下了虚拟键。这个参数可以是下列值的组合:

· MK_CONTROL 如果CTRL键被按下,则设置此位。

· MK_LBUTTON 如果鼠标左键被按下,则设置此位。

· MK_MBUTTON 如果鼠标中键被按下,则设置此位。

· MK_RBUTTON 如果鼠标右键被按下,则设置此位。

· MK_SHIFT 如果SHIFT键被按下,则设置此位。

zDelta 指明了旋转的距离。zDelta值以WHEEL_DELTA,即120的倍数或部分的形式表达。小于零的数表明往回滚动(向着用户),而大于零的数表明滚向远处(离开用户)。用户可以在鼠标软件中改变滚轮设置以反转这种响应。有关这个参数的更多信息参见说明部分。

pt 指定了光标的x和y轴坐标。这些坐标通常是相对于窗口的左上角的。

<div id="wrapper">

<div id="inner">

<!--content goes here /-->

</div>

</div>

function load(wrapper,inner,fn){

wrapper = documentgetElementById(wrapper);

inner = documentgetElementById(inner);

var ih = inneroffsetHeight,

wh = wrapperoffsetHeight;

/

自行定义附加事件方法

/

addEvent(wrapper,'scroll',function() {

if(wrapperscrollTo + wh >= ih - 30){

fn && fn();

}

});

}

以上就是关于如何用js监听滚动条滚动事件全部的内容,包括:如何用js监听滚动条滚动事件、如何用JS获取鼠标滚动高度,再触发相应的事件。速救!!!、scroll和wheel事件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存