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

Scrolling function in JS marginTop is not changing

本文关键字:改变 功能 滚动 marginTop JS      更新时间:2023-09-26

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

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

您需要用一个单元来定义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';
}

小提琴