防止在移动设备上进行水平滚动(HTML / CSS / JS)

时间:2014-12-23 09:23:20

标签: javascript android jquery html css

我正在对this parallax website进行最后润色,但我无法防止一些非常不吸引人的水平滚动效果(通过直接向左拖动在触摸设备上尝试自己)。

我使用3D CSS变换改编了here描述的视差技术。不幸的是,其中一个副作用似乎是浏览器认为图像比视口宽,即使它们不是。我已经尝试过了:

  • overflow-x: hidden;添加到包含div的视差图像中,虽然隐藏了水平滚动条,但它实际上并不会阻止水平滚动。
  • 添加部分解决方法scroll事件侦听器,以使用每个滚动将容器的scrollLeft重置为0,这完全解决了桌面(AFAICT)上的问题,部分解决了移动问题(至少在对角滚动)。

不幸的是,似乎至少在Android上(我没有要测试iPhone),它仍然可以水平滚动而不会触发scroll事件解决方法。更奇怪的是,虽然它处于这种奇怪的水平滚动模式,但我以编程方式遍历整个DOM而不是单个元素具有scrollLeft属性!= 0。我还从控制台调用$('*').scrollLeft(0);,它不会重置滚动。现在在所有.preventDefault()事件上调用touchmove 会阻止水平滚动,但它也会有效地打破整个网站,因为它也会阻止垂直滚动 - 所以这是一个不-go。

那么如果除了scrollLeft之外没有0,那么这个东西如何水平滚动?如何阻止/解决这种滚动行为?

0 个答案:

没有答案