这似乎是以前问过但没有足够的答案。我完全不知道如何做到这一点(包括没有插件)。我希望我的网站在我垂直滚动时横向滚动。
以下是一些我所说的示例: http://hotdot.pro/en/和http://mashup.ikm.gda.pl/
清楚地说,我不关心这两个网站都使用的视差效果。我只想横向滚动。
谢谢!
这似乎是以前问过但没有足够的答案。我完全不知道如何做到这一点(包括没有插件)。我希望我的网站在我垂直滚动时横向滚动。
以下是一些我所说的示例: 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可涵盖所有情况。
+ event.deltaX
和 event.preventDefault()
部分。但这将导致垂直弹性滚动,这也不是你想要的。尽管如此,它确实有效。 - Guido Boumantouchmove
事件并将其 Y 值映射到水平滚动位置。 - kilian尝试这个: 您需要添加一个指向 jQuery 的脚本引用,以及指向 鼠标滚轮插件 的脚本引用。 然后使用这段 JS 代码:
$(function() {
$("body").mousewheel(function(evt, chg) {
this.scrollLeft -= (chg * 50); //need a value to speed up the change
evt.preventDefault();
});
});
脚本参考:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="/js/jquery.mousewheel.js"></script>
src
属性中提供图像链接)。$(function() {
$("html, body, *").mousewheel(function(event, delta) {
this.scrollLeft -= (delta * 50);
event.preventDefault();
});
});
CSS
方案无需Javascript
更多信息请参见:https://css-tricks.com/pure-css-horizontal-scrolling/
::-webkit-scrollbar {
width: 1px;
height: 1px;
}
::-webkit-scrollbar-button {
width: 1px;
height: 1px;
}
body {
background: #111;
}
div {
box-sizing: border-box;
}
.horizontal-scroll-wrapper {
position: absolute;
display: block;
top: 0;
left: 0;
width: calc(250px + 1px);
max-height: 750px;
margin: 0;
padding-top: 1px;
background: #abc;
overflow-y: auto;
overflow-x: hidden;
-webkit-transform: rotate(-90deg) translateY(-250px);
transform: rotate(-90deg) translateY(-250px);
-webkit-transform-origin: right top;
transform-origin: right top;
}
.horizontal-scroll-wrapper > div {
display: block;
padding: 5px;
background: #cab;
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
-webkit-transform-origin: right top;
transform-origin: right top;
}
.squares {
padding: 250px 0 0 0;
}
.squares > div {
width: 250px;
height: 250px;
margin: 10px 0;
}
<div class="horizontal-scroll-wrapper squares">
<div>item 1</div>
<div>item 2</div>
<div>item 3</div>
<div>item 4</div>
<div>item 5</div>
<div>item 6</div>
<div>item 7</div>
<div>item 8</div>
</div>
.main-div{
display: flex;
flex-direction: row;
overflow-x: scroll;
}
.child.element{
display: inline-block;
min-width: 300px; //according to your need
max-width: 300px; //according to your need
}