简体   繁体   English

垂直滚动时水平滚动?

[英]Horizontal Scroll when Scrolling Vertically?

I know this topic has been asked a lot here but I can't find anything recent and as far as I am aware the later jQuery versions do not support these functions anymore. 我知道这个主题在这里已经被问了很多,但是我找不到任何最新消息,据我所知,后来的jQuery版本不再支持这些功能。

I have a website which scrolls horizontally, it works great but only when I swipe my trackpad sideways rather than scrolling vertically. 我有一个可以水平滚动的网站,但它的工作原理很棒,但只有当我侧滑触控板而不是垂直滚动时,它才能正常工作。 Does anyone know of an updated way of doing this? 有谁知道更新的方式吗?

Can provide more code if needed. 如果需要,可以提供更多代码。 Just wondering if anyone knows a general way of tackling this. 只是想知道是否有人知道解决此问题的一般方法。

Here is an example of what I am looking for (the first pink section before it scrolls down): https://alvarotrigo.com/fullPage/extensions/scroll-horizontally.html#firstPage/2 这是我正在寻找的示例(向下滚动之前的第一个粉红色部分): https : //alvarotrigo.com/fullPage/extensions/scroll-horizo​​ntally.html#firstPage/2

Here is a basic setup of what I have at the moment, it will only scroll if scrolled sideways rather than vertical and sideways. 这是我目前所拥有的基本设置,它只会在横向滚动而不是垂直滚动时滚动。 https://codepen.io/caitlinmooneyx/pen/WVrggB https://codepen.io/caitlinmooneyx/pen/WVrggB

Heres what I've tried so far: 到目前为止,我一直在尝试以下方法:

How to Horizontal Scroll when scrolling vertical? 垂直滚动时如何水平滚动?

And: 和:

var scroller = {};
scroller.e = document.getElementById("wrapper");

if (scroller.e.addEventListener) {
    scroller.e.addEventListener("mousewheel", MouseWheelHandler, false);
    scroller.e.addEventListener("DOMMouseScroll", MouseWheelHandler, false);
} else scroller.e.attachEvent("onmousewheel", MouseWheelHandler);

function MouseWheelHandler(e) {

    // cross-browser wheel delta
    var e = window.event || e;
    var delta = -20 * (Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail))));

    var pst = $('#wrapper').scrollLeft() + delta;

    if (pst < 0) {
        pst = 0;
    } else if (pst > $('.card').width()) {
        pst = $('.card').width();
    }

    $('#wrapper').scrollLeft(pst);

    return false;
};

Well here is a smal exmaple i wrote without smoth effect. 好吧,这是我写的一本书,没有任何平滑效果。

you could use JQUI to have a smooth scroll etc. 您可以使用JQUI进行平滑滚动等。

Change it as you like, and let me know what you think 随心所欲更改它,让我知道您的想法

Not: this is only an example with mouseweel try to scroll verticly 不是:这只是mouseweel一个例子,尝试垂直滚动

 var delta = -1; var currentPlayer; $(".container").bind("wheel",function(e){ var players = $(this).find(".player"); var y =e.originalEvent.wheelDeltaY; function setDelta(scroll){ if (y>0 && 0 <= delta -1) delta--; else if (y<0 && delta +1 < players.length) delta++; currentPlayer = $(players[delta]); if (scroll){ // JQUI $(window).animate({ scrollTop: currentPlayer.offset().top}, 1000); $(window).scrollTop(currentPlayer.offset().top) } } if (!currentPlayer){ setDelta(); } // Current visiable page in the Section/player var vItem = currentPlayer.find("div").filter(function(i,x){ return !$(x).is(":hidden") }); if (y<0 && vItem.next().length>0){ vItem.hide().next().show(); } else if (y >= 0 && vItem.prev().length>0) vItem.hide().prev().show(); else { /// scroll downor upp to the next Section setDelta(true); } return false; // disable scroll }); 
 .player{ width:100vw; height:100vh; background: red; border:1px solid #CCC; overflow:hidden; } .player:last{ background: blue; } .player>div:not(:first-child){ display:none; } .player> div{ float:left; width:100%; height:100%; color:white; } .container { overflow:hidden; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="container"> <div class="player"> <div>page1</div> <div>page2</div> <div>page3</div> </div> <div class="player" style="background: blue"> <div>page1</div> <div>page2</div> <div>page3</div> </div> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM