作者|烽火责任篇|梦义团
制作|烽火的个人博客
在前端不可思议的世界里,有些网站水平滚动,而不是正常的垂直滚动。
那么,在不能横过鼠标滚轮的前提下(苹果除外),是否可以横向滚动主页?我来写代码。
先看一下最终效果,这里我用鼠标的滚轮垂直滚动,页面是横向滚动的。要实现这个功能,只需要一点点的 JS 代码。
编写 HTML 结构
先看一下 HTML 结构,很简单,就是三个模拟全屏页面的 div,class 都是 page,然后放在一个 class 名为 container 的 div 容器中:
<main>
<div class="container">
<div class="page">Page1</div>
<div class="page">Page2</div>
<div class="page">Page3</div>
</div>
</main>
编写 CSS 样式
对于样式,container 容器设置为 flex 布局,并且显示横向滚动条:
.container {
display: flex;
overflow-x: scroll;
}
里面每一个页面元素的宽高都设置为占满浏览器可视区域的 100%,并且在 flex 布局中,不自动收缩,再分别给他们设置不同的背景色,用于区分:
.page {
width: 100vw;
height: 100vh;
flex-shrink: 0;
}
.page:nth-child(1) {
background: hsl(140deg, 50%, 50%);
}
.page:nth-child(2) {
background: hsl(210deg, 50%, 50%);
}
.page:nth-child(3) {
background: hsl(270deg, 50%, 50%);
}
实现横向滚动
接下来我们使用 JS 实现横向滚动,首先获取 container 容器:
let container = document.querySelector(".container");
给它添加一个 “wheel” 事件,这个是监听鼠标滚轮的滚动,在滚动时,先阻止默认的滚动事件,然后让容器水平横向移动,这里利用到了 scrollLeft 属性,让容器的内容向左移动,这里只需要加上滚轮垂直滚动的距离差值就可以了,也就是 event 对象中的 deltaY 属性:
con("wheel", (event) => {
event.preventDefault;
con += event.deltaY;
});
兼容性
wheel 事件的兼容性可以参考 caniuse 提供的数据:
总结
这样就实现横向滚动了,重点是利用了 “wheel” 事件监听鼠标滚轮滚动,然后获取滚动距离差值,把它加到可以滚动的容器的 scrollLeft 属性中,你学会了吗?
源码地址:
原文地址:
1.《关于100vh我想说2 行 JS 代码实现页面横向滚动特效》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《关于100vh我想说2 行 JS 代码实现页面横向滚动特效》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guonei/1958683.html