gpt4 book ai didi

javascript - 锁定鼠标滚轮滚动到焦点 div

转载 作者:行者123 更新时间:2023-11-28 00:20:27 24 4
gpt4 key购买 nike

我的网站上有一个侧边栏,偶尔需要滚动。当使用鼠标滚轮将侧边栏滚动到底部后,主窗口开始滚动时,这是一种不愉快的用户体验。

我想确保当鼠标滚轮位于我的侧边栏上时主窗口不会随鼠标滚轮滚动,但最好仅当我的侧边栏本身显示滚动条时。

我可能想避免使用 javascript 滚动条,因为它们的性能通常不如默认设置(滞后、等待其他 js 代码等),尽管看起来这个解决方案可能需要它们。

谢谢!

编辑:这是我最终使用的代码,是对我在接受的答案的第一个链接中找到的内容的简单改编。

(function($) {
$.fn.hasScrollBar = function() {
return this.get(0).scrollHeight > this.height();
}
})(jQuery);

/** This is high-level function.
* It must react to delta being more/less than zero.
*/
function handle(delta) {
slider = $('#wl-slider');

if(slider.hasScrollBar()){
if (delta > 0 && slider.scrollTop() == 0 && slider.hasClass('scroll-hover')){
event.preventDefault();
event.returnValue = false;
}
else if (delta < 0 && (slider.get(0).scrollHeight - slider.scrollTop() == slider.outerHeight()) && slider.hasClass('scroll-hover')){
event.preventDefault();
event.returnValue = false;
}

}
}



/** Event handler for mouse wheel event.
*/
function wheel(event){

var delta = 0;
if (!event) /* For IE. */
event = window.event;
if (event.wheelDelta) { /* IE/Opera. */
delta = event.wheelDelta/120;
} else if (event.detail) { /** Mozilla case. */
/** In Mozilla, sign of delta is different than in IE.
* Also, delta is multiple of 3.
*/
delta = -event.detail/3;
}
/** If delta is nonzero, handle it.
* Basically, delta is now positive if wheel was scrolled up,
* and negative, if wheel was scrolled down.
*/
if (delta)
handle(delta);

}

/** Initialization code.
* If you use your own event management code, change it as required.
*/
if($('#user-level').size() != 0)
{
if (window.addEventListener)
/** DOMMouseScroll is for mozilla. */
window.addEventListener('DOMMouseScroll', wheel, false);
/** IE/Opera. */
window.onmousewheel = document.onmousewheel = wheel;
}

最佳答案

我猜你用标准的事件处理程序是不够的,例如在 jquery 中,你需要直接处理鼠标滚轮——我只是用谷歌搜索了这些资源:

然后直接看侧边栏底部/顶部是否已经滚动,如果是,则过滤掉滚动事件。

关于javascript - 锁定鼠标滚轮滚动到焦点 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9328273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com