0

假设我们有一个窗口,通常我们可以上下、左右和对角滚动。换句话说,我们可以同时向下和向左滚动。我想要做的是一次只滚动一种方式。无论是上下还是左右。我不想通过对角线滚动。

这在 HTML 中可能吗?

4

4 回答 4

0

我个人不知道纯 HTML 方法,但您可以查看Sly 插件以进行单向滚动。应该做的伎俩。

于 2013-01-24T15:07:37.103 回答
0

通常,除非网站的宽度超过屏幕尺寸,否则您无论如何都不能在 x 方向滚动。唯一的方法是防止 CSS 溢出overflow-x: hidden

但是,如果用户将有一个显示器,其中内容不再适合(例如智能手机显示器)或使用浏览器缩放,则隐藏内容可能存在问题......

于 2013-01-24T15:08:50.953 回答
0

如果你想禁用鼠标中键滚动,你可以把它放在head你的 HTML 文档的部分(注意这实际上禁用了中键):

$(document).ready(function(){
    document.onmousedown = window.onmousedown = function (e) {
        if(e.which == 2)
        {
            e = e || window.event;
            if (e.preventDefault)
                e.preventDefault();
            e.returnValue = false;
        }
    };
});
于 2013-01-24T15:32:20.230 回答
0

这些答案似乎不是你想要的。我来这里问同样的问题,寻找一种更简单的方法,但似乎必须这样做:

//When scrolling, execute the "Lock Direction" function lockdir()
<body onscroll="lockdir()">

在主体内部(或者我想头部也可以工作),添加以下脚本:

<script>

    //Scroll Variables 
    var scr = {
        initPos: [0, 0],    //Initial Mouse Position
        cPos: [0, 0],       //Current Mouse Position
        locked: 0,          //A direction is locked
        timeout: 0,         //Scroll timeout counter
    }


    //Lock Direction Function
    function lockdir(){
        scr.timeout = 0;    //Keep scroll counter at 0 while scrolling

        //Get the current mouse position and find difference to initial position
        scr.cPos = [
            document.body.scrollTop, 
            document.body.scrollLeft
        ];
        var dif = [
            Math.abs(cPos[0] - scr.initPos[0]),
            Math.abs(cPos[1] - scr.initPos[1])
        ];


        //If no direction is locked (0), lock direction moved least when scrolling started
        if (scr.locked === 0){

            if (dif[1] > dif[0]){
                scr.locked = 2;     //Lock Vertical Scrolling
            }else{
                scr.locked = 1;     //Lock Horizontal Scrolling
            }

        }


        //Reset Locked Direction to initial value
        if (scr.locked === 1){
            document.body.scrollLeft = scr.initPos[1];
        }else{
            document.body.scrollTop = scr.initPos[0];
        }

    }

    //Cancels Lock if timer exceeds 20 milliseconds
    function cancelLock(){
        if (scr.timeout > 20){
            scr.locked = 0;
            scr.initPos = scr.cPos;
        }

        scr.timeout++;
    }

    window.setInterval(cancelLock, 1);  //Repeats cancel lock
</script>
于 2019-05-23T16:49:29.930 回答