在某些部分锁定滚动条

时间:2015-11-16 11:18:48

标签: javascript

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。

但正如您在演示中看到的那样,滚动不会移动。

Demo

1 个答案:

答案 0 :(得分:0)

Javascript解决方案

如果您真的想要使用Javascript并锁定滚轮(这就是您正在做的事情),只有当用户在特定的div或元素上时,您才可以通过添加悬停听取这些要素:

$('#lock').hover(function() {
     disableScroll();
}, function() {
     enableScroll();
});

检查我的jsFiddle以获得有效的演示: http://jsfiddle.net/DHz77/553/

CSS解决方案

如果要使用css规则禁用滚动条并在特定div上滚动,请使用:

#lock { /* or .classname */
    height: 100%; /* or some px */
    overflow-y:hidden; 
}

在你的情况下,它实际上是滚动的身体,所以我也必须适应身体的css:

工作演示: http://jsfiddle.net/DHz77/559/