我有一个水平滚动的网站,我想把用户的Y滚动输入转换成X滚动。当使用触控板和在X轴上滚动时,该网站已经可以完美地工作,所以我只是希望它以相反的方式工作。谢谢你,谢谢
这就是我想讨论的问题,但我对这个问题很陌生,这可能是非常错误的:
<script>
let invertedscroll = window.ScrollY;
window.addEventListener('scroll', (scrollY) );
function invertscroll (scrollY) {
window.scrollY = window.scrollX;
}
</script>
字符串
2条答案
按热度按时间mxg2im7a1#
另一种解决方案是在使用
wheel
事件滚动时将scrollLeft
直接设置为<html>
。不要忘记调用event.preventDefault()
来阻止垂直滚动更新
你的例子中有一个冲突,但原因是
scroll-snap-type
属性,它控制你用css的滚动行为。我认为它不适合水平滚动。此外,CSS和JS解决方案的组合控制滚动将是毛刺。所以最好的方法是在这里只使用JS。保持
scroll-snap
行为的所有优点可能很棘手,最好的方法是使用一些滑块库。有很多这样的库,但您需要搜索一下才能找到合适的解决方案。如果你想自己实现这个行为,你可以从类似的东西开始。但目前的例子只适用于鼠标滚轮,它需要大量的改进。
我使用
scrollTo
进行水平滚动,传递slideIndex
乘以slide width
。然后我设置isScrolling
以防止滚动,直到smooth
滚动完成。在requestAnimationFrame
方法中,我检查当前滚动,直到它完成并重置isScrolling
以允许下一次滚动pexxcrt22#
使用window.scrollTo和invertScroll代替在你的实现中未定义的“scrollY”:
字符串