1、先放效果
鼠标滚动,整个100%高度宽度的屏幕进行切换
2、再放代码
代码语言:javascript复制<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.box{
position: relative;
width: 100%;
height: 100vh;
background-color: azure;
overflow: hidden;
}
.big{
top:0px;
transition:0.5s ease;
}
</style>
</head>
<body>
<div class="box">
<div class="big" id="big" style="position: relative;">
<!--第一页-->
<div id="page1" class="page" style="background-color: wheat;height: 100vh;">
</div>
<!--第二页-->
<div id="page2" class="page" style="background-color: red;height: 100vh;">
</div>
</div>
</div>
</body>
<script type="text/javascript">
//滚动条滚动
//判断是不是火狐浏览器
var isFirefox ;
//如果是
if (navigator.userAgent.indexOf('Firefox') >= 0) {
isFirefox = true;
//否则
} else {
isFirefox = false;
}
//定义移动距离
var i=0;
//返回class为big的对象集合,取第一个
var oUl = document.getElementsByClassName("big")[0];
//如果是火狐浏览器
if(isFirefox){
//火狐浏览器绑定滚动事件
document.addEventListener('DOMMouseScroll', function(ev) {
//获取当前对象
var ev = window.event || ev;
//判断滚动的方向
if (ev.detail > 0&&i<1) {
//移动距离 1,为正 1
i ;
//滚动条向下滚动
console.log("滚动向下");
}
//判断滚动的方向
if (ev.detail < 0&&i>0) {
//滚动条向上滚动
//移动距离-1,为负-1
i--;
}
//改变距离顶部的距离,计算距离
oUl.style.top = -i*100 'vh';
console.log(oUl.style.top)
});
}else{
//其他浏览器(同火狐浏览器,只是判断滚动方向的方法不同)
document.addEventListener('mousewheel', function(ev) {
var ev = window.event || ev;
if (ev.wheelDelta < 0&&i<1) {
i ;
//滚动条向下滚动
console.log("滚动向下");
}
if (ev.wheelDelta > 0&&i>0) {
i--;
}
oUl.style.top = -i*100 'vh';
});
}
//滚动条滚动结束
</script>
</html>
3、解读
上面代码可以拿去直接使用了,下面进行解读:
1、为了方便切换时进行高度操作,此次使用vh单位,100vh表示100%高度,1vh表示1%高度,相比px更方便自适应。
2、注意上图绝对定位的使用,别使用错了,relative。
3、需要注意火狐浏览器和其他浏览器不同,需要单独判断鼠标滚动方向,如上图的对于浏览器的判断,navigator.userAgent.indexOf('Firefox')方法可以用来判断当前浏览器是不是火狐浏览器。
4、注意:var oUl = document.getElementsByClassName("big")[0];此处要在需要分页的div外层增加一个div,如上图,我的界面是page1和page2,在外层增加一个big。
5、火狐浏览器的滚动条监听事件是DOMMouseScroll,其他浏览器是mousewheel
6、 oUl.style.transition=" 0.5s ease";设置动画效果事件
7、ev.detail判断火狐浏览器的滚动方向,ev.wheelDelta判断其他浏览器的滚动方向,detail>0则是向下滚动,detail<0则是向上滚动;ev.wheelDelta<0则是向上滚动,ev.wheelDelta>0则是向下滚动。(注意)
8、此处,我定义的i值是控制有几页需要分屏,此处我只有两页,所以i的判断到1就可以了,使用时根据实际情况进行修改。
修改于2022/01/13