html - 将垂直滚动更改为水平滚动

标签 html css scroll

这似乎已经被问过,但没有足够的答案。我完全不知道如何做到这一点(包括没有插件)。当我主动垂直向下滚动时,我希望我的网站水平滚动。

我的意思的一些例子: http://hotdot.pro/en/http://mashup.ikm.gda.pl/

明确地说,我不关心这两个网站使用的视差效果。我只想水平滚动。

谢谢!

最佳答案

这可以在原生 JavaScript 中解决,无需任何库。

示例代码

function transformScroll(event) {
  if (!event.deltaY) {
    return;
  }

  event.currentTarget.scrollLeft += event.deltaY + event.deltaX;
  event.preventDefault();
}

var element = document.scrollingElement || document.documentElement;
element.addEventListener('wheel', transformScroll);

说明

虽然此解决方案不依赖于任何库,但它也考虑了其他使用场景。例如,当在触摸板上滚动时,依赖于单个增量值的其他解决方案都会崩溃。

输入设备总是有多种滚动方式。笔记本电脑有触摸板,手机有触摸屏,鼠标有滚轮。最重要的是,您可以通过按住 shift 来修改滚轮的滚动方向。

在阻止默认行为时,我们还应该包括用户可以滚动的其他可能方向。幸运的是屏幕只有两个维度,因此将 deltaY 添加到 deltaX 涵盖了这种情况下的所有情况。

关于html - 将垂直滚动更改为水平滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24639103/

相关文章:

javascript - KnockoutJS `with` 绑定(bind)和IE8

html - 如何使用 bootstrap 创建一个包含 9 列的行而不让数据溢出?

html - 将内联 block div 移动到其兄弟下方

jQuery : Scroll To - Change the div ID

html - 为什么 Google 搜索在使用 FireFox 和 Chrome 时表现不同?

javascript - 如何让导航栏在所有设备上保持相同的大小?

单击链接时,jquery 在两个 UL 之间切换

java - JScrollPane - 平滑滚动

flutter - ListView 是否可以循环回到有限列表的开头以在 Flutter 中创建无限滚动?

javascript - 如何使用 peerJS 点对点连接接收数据?