我有一个水平滚动的div,使用Mac触控板导航非常轻松,但使用鼠标时却是一场噩梦。用户必须点击并拖动页面底部的滚动条才能浏览内容。
我已经尝试了从这个帖子中实施多种解决方案,但至今没有一种能在我代码中奏效。
这里是一个使用其中一种JavaScript解决方案的jsfiddle链接。使用触控板可以轻松水平滚动,但仍然无法通过鼠标滚轮进行水平滚动。
我需要确保解决方案不会破坏触控板滚动体验,只是使得同时也能用鼠标滚轮滚动。例如,我发现如果用户仅按住Shift键,他们可以用鼠标滚轮或触控板完美地滚动。也许一个权宜之计是编写一些代码,强制用户在页面上的整个时间都按下Shift键?听起来像是个愚蠢的变通方法。还是更愿意使用能正常工作的JavaScript。
以下是我在尝试使用的代码——
<script>
const container = document.getElementById("horizontalstorecontainer");
// where "container" is the id of the container
container.addEventListener("wheel", function (e) {
if (e.deltaY > 0) {
container.scrollLeft += 100;
e.preventDefault();
// prevenDefault() will help avoid worrisome
// inclusion of vertical scroll
}
else {
container.scrollLeft -= 100;
e.preventDefault();
}
});
// That will work perfectly
</script>
请注意,我已经移除了与本问题无关的所有图片等元素。而且我并不寻求CSS解决方案。谢谢!
编辑: 另外需要注意的是,用户在任何网页上都不会进行垂直滚动。也许这会让解决方案变得更简单?
编辑2: 这张图片显示了当我尝试在这篇回答中提供的代码时出现的错误……只有当我按住Shift键时,我的内容才会随着垂直鼠标滚轮进行水平滚动……