Javascript CSS解决方案仅使用鼠标滚轮滚动当前div,而不是其后面的div。
考虑以下几点: 考虑这样一个场景:我将鼠标放置在divA中,并使用鼠标滚轮滚动到divA的底部或顶部。当我到达div A的底部并用滚轮继续滚动时,它将开始滚动div B。我希望鼠标滚轮只滚动光标所在的当前div 这在任何标准CSS中都是可能的吗?或者我需要连接JS/jQuery事件来检测我当前所在的div并停止滚动事件吗?我希望有一个CSS解决方案Javascript CSS解决方案仅使用鼠标滚轮滚动当前div,而不是其后面的div。,javascript,jquery,css,Javascript,Jquery,Css,考虑以下几点: 考虑这样一个场景:我将鼠标放置在divA中,并使用鼠标滚轮滚动到divA的底部或顶部。当我到达div A的底部并用滚轮继续滚动时,它将开始滚动div B。我希望鼠标滚轮只滚动光标所在的当前div 这在任何标准CSS中都是可能的吗?或者我需要连接JS/jQuery事件来检测我当前所在的div并停止滚动事件吗?我希望有一个CSS解决方案 提前感谢您的帮助 看起来这正是您需要的: 基本上,在鼠标悬停时,您可以通过将overflow设置为hidden来禁用页面其余部分的滚动。然后在鼠
提前感谢您的帮助 看起来这正是您需要的: 基本上,在鼠标悬停时,您可以通过将overflow设置为hidden来禁用页面其余部分的滚动。然后在鼠标上松开它
编辑:确保处理mouseout、alt+tab和mousemove的情况。您可能需要调整它,以确保它们不会被鼠标弹出框时的滚动锁定。这似乎不可能。如果有人发帖,我很乐意接受另一个答案 您需要此无CSS解决方案:
<script>
$("#div-A").bind("mousewheel", function(e){
var intElemScrollHeight = document.getElementById("div-A").scrollHeight;
var intElemClientHeight = document.getElementById("div-A").clientHeight;
if( intElemScrollHeight - $("#div-A").scrollTop() === intElemClientHeight) {
$(document).bind("mousewheel", function(event) {
event.preventDefault();
});
}
if(e.originalEvent.wheelDelta /120 > 0 ) {
if($("#div-A").scrollTop() != 0) {
$(document).unbind("mousewheel");
} else {
event.preventDefault();
}
}});
$("#div-A").on("mouseleave", function(event) {
$(document).unbind("mousewheel");
});
</script>
$(“#div-A”).bind(“鼠标滚轮”,函数(e){
var intElemScrollHeight=document.getElementById(“div-A”).scrollHeight;
var intElemClientHeight=document.getElementById(“div-A”).clientHeight;
if(intElemScrollHeight-$(“#div-A”).scrollTop()==intElemClientHeight){
$(文档).bind(“鼠标滚轮”,函数(事件){
event.preventDefault();
});
}
如果(例如原始事件车轮增量/120>0){
如果($(“#div-A”).scrollTop()!=0{
$(文档)。解除绑定(“鼠标滚轮”);
}否则{
event.preventDefault();
}
}});
$(“#div-A”)。关于(“鼠标移动”,函数(事件){
$(文档)。解除绑定(“鼠标滚轮”);
});
IIRC,大多数浏览器默认情况下都会这样做。哎呀,这就是我早上第一件事要读的东西,抱歉。尽管考虑到这一点,任何使用表达式的CSS解决方案都会避免性能问题。