var keys = {37: 1, 38: 1, 39: 1, 40: 1};
function preventDefault(e) {
e = e || window.event;
if (e.preventDefault)
e.preventDefault();
e.returnValue = false;
}
function preventDefaultForScrollKeys(e) {
if (keys[e.keyCode]) {
preventDefault(e);
return false;
}
}
function disableScroll() {
if (window.addEventListener) // older FF
window.addEventListener('DOMMouseScroll', preventDefault, false);
window.onwheel = preventDefault; // modern standard
window.onmousewheel = document.onmousewheel = preventDefault; // older browsers, IE
window.ontouchmove = preventDefault; // mobile
document.onkeydown = preventDefaultForScrollKeys;
}
function enableScroll() {
if (window.removeEventListener)
window.removeEventListener('DOMMouseScroll', preventDefault, false);
window.onmousewheel = document.onmousewheel = null;
window.onwheel = null;
window.ontouchmove = null;
document.onkeydown = null;
}
我在网上找到了这个代码,它会在所有浏览器中锁定你的滚动条,我只想要锁定某个滚动条,但是这段代码会锁定所有滚动条。 我只想锁定背景滚动条,我不想使用CSS。
但正如您在演示中看到的那样,滚动不会移动。
答案 0 :(得分:0)
如果您真的想要使用Javascript并锁定滚轮(这就是您正在做的事情),只有当用户在特定的div
或元素上时,您才可以通过添加悬停听取这些要素:
$('#lock').hover(function() {
disableScroll();
}, function() {
enableScroll();
});
检查我的jsFiddle以获得有效的演示: http://jsfiddle.net/DHz77/553/
如果要使用css规则禁用滚动条并在特定div上滚动,请使用:
#lock { /* or .classname */
height: 100%; /* or some px */
overflow-y:hidden;
}
在你的情况下,它实际上是滚动的身体,所以我也必须适应身体的css: