JS marginTop中的滚动功能没有改变

时间:2013-01-21 04:54:12

标签: javascript html

我有一个函数,我试图通过使用鼠标滚轮事件来创建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似乎没有改变。

有关可能原因的建议吗?

1 个答案:

答案 0 :(得分: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';
}

Fiddle