利用jquery禁止外层滚动条的滚动

前言

通常情况下,当内部滚动条滚动到两端时,再接着滚动时外层的滚动条就会跟着滚动;可是有时我们希望用户只能滚动当前区域,而不触发外层(window)的滚动条,离开当前区域后,才能滚动外层的滚动条。因为用户可能一不小心滚动的幅度过大了,导致当前区域离开可视区域。

jquery中,滚动事件是scroll,而这个事件是不能阻止冒泡和阻止默认事件的。假如我们设定要禁止window的滚动条,我采取的策略是:当鼠标进入到当前区域后,则window的滚动条的高度始终是鼠标进入前的高度

如下的代码:

<style type="text/css">

.main{

overflow: auto;

width: 400px;

height: 400px;

border: 1px solid #aaa;

}

.main p{

height: 800px;

}

</style>

<body>

<div id="main" class="main">

<p></p>

</div>

<p style="height:1000px;"></p>

</body>

$(function () {

var scrollTop = -1; // 鼠标进入到区域后,则存储当前window滚动条的高度

$('#main').hover(function(){

scrollTop = $(window).scrollTop();

}, function(){

scrollTop = -1;

});

// 鼠标进入到区域后,则强制window滚动条的高度

$(window).scroll(function(){

scrollTop!==-1 && $(this).scrollTop(scrollTop);

})

})

从上面的代码可以看到,我并没有阻止window滚动条的事件,而是用户每次滚动时,都会重新进行赋值。

总结

以上是 利用jquery禁止外层滚动条的滚动 的全部内容, 来源链接: utcz.com/z/352229.html

回到顶部