【问题标题】:Mouse wheel scroll event鼠标滚轮滚动事件
【发布时间】:2012-12-27 17:29:36
【问题描述】:

我想要的是:当鼠标指向 div 时,页面的滚动条不会滚动。这是不可能的吗?当我这样做时,页面的滚动条总是滚动。这是一段javascript代码:

if(document.addEventListener){
    document.addEventListener('DOMMouseScroll',scrollFunc,false);
}
window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome/Safari

怎么做?

【问题讨论】:

    标签: javascript jquery mouseevent mousewheel


    【解决方案1】:

    给你:

    var noscroll = document.getElementById('noscroll');
    
    var locked, lockedX, lockedY;
    noscroll.addEventListener('mouseover', function (){
        locked = true;
        lockedX = window.scrollX;
        lockedY = window.scrollY;
    }, false);
    noscroll.addEventListener('mouseout', function (){
        locked = false;
    }, false);
    
    window.addEventListener('scroll', function (e){
        if(locked === true){
            window.scrollTo(lockedX, lockedY);
            e.preventDefault();
        }
    }, false);
    

    将变量 noscroll 更改为您不想允许滚动的任何元素。

    Demo

    【讨论】:

    • 谢谢,这对我很有帮助。但是还有一个问题,就是当我在 div 上滚动鼠标滚轮时,页面的滚动条总是先向下然后向上,总之,页面有一种晃动的效果。我正在努力解决,再次感谢您的回答。
    • @BruceLi 是的,我在某些浏览器中也看到了这种情况,但我认为我们无能为力,因为滚动事件是不可取消的
    【解决方案2】:

    你基本上可以通过css通过为你的div指定widthheightoverflow属性来实现它:

    <div style="width:100px; height:100px; overflow: auto;" >
        text text text text text text text text text
        text text text text text text text text text
        text text text text text text text text text
        text text text text text text text text text
        text text text text text text text text text
        text text text text text text text text text
        text text text text text text text text text
        text text text text text text text text text
    </div>
    

    【讨论】:

    • 我使用了坐标,像这样:document.getElementById("svglocation").onmouseenter = function(event){ var x=event.clientX; var y=event.clientY; var div = document.getElementById("svglocation"); var divx1 = div.offsetLeft; var divy1 = div.offsetTop; var divx2 = div.offsetLeft + div.offsetWidth; var divy2 = div.offsetTop + div.offsetHeight; if(x > divx1 && x divy1 && y
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 2010-10-03
    相关资源
    最近更新 更多