有关如何捕获溢出的元素上的滚动事件的任何见解:隐藏?我想在列中滚动而不向用户显示滚动条。溢出时捕获滚动事件:隐藏的元素
24
A
回答
23
这实际上是一个有点深入的过程。我所做的是在用户鼠标进入和离开要滚动的元素时设置全局标志。然后,在bodywheelwheel事件中,我检查MOUSE_OVER标志是否为真,然后停止事件的传播。这是因为如果整个页面溢出,主体不会滚动。
请注意,在隐藏溢出时,默认的滚动功能会丢失,因此您必须自己创建它。为此,您可以在您的div上设置鼠标轮侦听器,并使用event.wheelDelta属性检查用户是向上还是向下滚动。该值根据浏览器而不同,但如果向下滚动则一般为负值,如果滚动则为正值。然后你可以相应地改变你的div的位置。
此代码很快破解了,但它将基本上是这样的......
var MOUSE_OVER = false;
$('body').bind('mousewheel', function(e){
if(MOUSE_OVER){
if(e.preventDefault) { e.preventDefault(); }
e.returnValue = false;
return false;
}
});
$('#myDiv').mouseenter(function(){ MOUSE_OVER=true; });
$('#myDiv').mouseleave(function(){ MOUSE_OVER=false; });
$('#myDiv').bind('mousewheel', function(e){
var delta = e.wheelDelta;
if(delta > 0){
//go up
}
else{
//go down
}
});
1
1
$("body").css("overflow", "hidden")
$(document).bind('mousewheel', function(evt) {
var delta = evt.originalEvent.wheelDelta
console.log(delta)
})
0
$("div").on('wheel', function (e) {
if (e.originalEvent.deltaY < 0) {
console.log("Scroll up");
} else {
console.log("Scroll down");
}
});
这对我来说确实有窍门。 JSFiddle
StackFiddle:
$("div").on('wheel', function(e) {
if (e.originalEvent.deltaY < 0) {
console.log("Scroll up");
} else {
console.log("Scroll down");
}
});
div {
height: 50px;
width: 300px;
background-color: black;
overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>
相关问题
- 1. 捕获与元素溢出的滚动事件:隐藏使用Javascript
- 2. 听从溢出滚动事件:隐藏的元素
- 3. ,同时隐藏滚动条和隐藏溢出触发事件
- 4. 滚动时隐藏溢出
- 5. 溢出:隐藏 - 滚动
- 6. 溢出滚动已隐藏溢出
- 7. 如何隐藏滚动(溢出:隐藏)?
- 8. 溢出隐藏元素
- 9. ScrollLeft元素溢出:隐藏
- 10. 检测HTML元素是否滚动超出隐藏溢出
- 11. CSS溢出隐藏和浮动元素
- 12. 溢出隐藏和滚动同时
- 13. jquery的窗口滚动事件不与溢出 - X隐藏
- 14. 隐藏的WebKit滚动条时溢出滚动:触摸启用
- 15. 溢出隐藏自动滚动
- 16. 滚动到隐藏元素
- 17. 滚动到隐藏元素
- 18. 在flexbox中隐藏溢出的元素
- 19. 覆盖溢出隐藏父元素的
- 20. 溢出隐藏组中的元素
- 21. 用不同元素隐藏的溢出
- 22. Bootstrap 3弹出隐藏在隐藏溢出的元素后面
- 23. 如何让一个元素溢出:当父元素溢出时为auto:隐藏?
- 24. 元素不服从隐藏时溢出隐藏的子元素从溢出区域与jQuery外
- 25. 滚动时避免元素隐藏
- 26. 制作溢出:隐藏不滚动
- 27. 滚动div内隐藏溢出div
- 28. Blueprintjs表隐藏溢出-s滚动条
- 29. 滚动,如果div被溢出隐藏
- 30. 溢出虚假滚动条:隐藏
这很完美。非常感谢你! :) –
我没有提到,但你应该看看'event.wheelDelta'和'event.detail'来微调的东西。 Firefox使用'event.detail',而其他人使用'event.wheelDelta'并使用这些值,你可以找出一些速度控制,如果你想要复杂。此链接将有助于http://www.javascriptkit.com/javatutors/onmousewheel.shtml – anson
mousewheel事件不再起作用。它在现代浏览器中被称为轮子。 – netAction