0

我有一个函数,我试图通过使用鼠标滚轮的事件在 div 的内容上创建滚动效果。

听者:

document.getElementById('menu_base').addEventListener("mousewheel", scrollfunc, false);

我的滚动事件有这个:

function scrollfunc(e){
console.log(e);
        if(e.wheelDeltaY == 120) { //this does work
            document.getElementById('menu_base').style.marginTop += 50; //no change
        } else if(e.wheelDeltaY == -120){ //as does this
            document.getElementById('menu_base').style.marginTop -= 50; //no change
        }           
}

console.log 显示:

WheelEvent {webkitDirectionInvertedFromDevice: false, wheelDeltaY: -120, wheelDeltaX: 0, wheelDelta: -120, webkitMovementY: 0…}

menu_base属性是:

.menu_base{
    width:100%;
    height:600px;   
    position:absolute; 
    left: 0; 
    top: 0;     
    text-align:center;
    border:1px solid black;
    overflow:hidden;
}

然而内容没有移动,marginTop 似乎没有改变。

关于可能的原因有什么建议吗?

4

1 回答 1

1

您需要marginTop使用单位来定义,例如使用px

var menu_base = document.getElementById('menu_base');

function scrollfunc(e) {
    console.log(e);
    var mtop = parseInt(menu_base.style.marginTop, 10) || 0;

    if (e.wheelDeltaY == 120) { //this does work
        mtop += 50; //no change
    } else if (e.wheelDeltaY == -120) { //as does this
        mtop -= 50; //no change
    }
    menu_base.style.marginTop = mtop + 'px';
}

小提琴

于 2013-01-21T05:14:24.370 回答