本文实例为大家分享了vue实现滚动鼠标滚轮切换页面的具体代码,供大家参考,具体内容如下
新项目产品被甲方的要求逼疯了,大概返稿了100+次吧,最后甲方网上找了个他们认为的比较有科技感的模板,让我们照着写,首页就是类似于纵向走马灯,鼠标滚动切换,一次切换一整屏的效果。之前没接触过,写了个简单的demo,仅作为学习笔记。
其实原理很简单,就是把所有页面放在一个div中,然后滚动的时候改变外层div的top即可。
因为滚动条监听事件是实时的,所以要加上节流来防止页面切换太快速,我这控制在1.5s才能切换一页。
其实vue不应该操作dom,应该用数据来渲染虚拟dom,但是有些地方暂时没找到合适的方法,还是用的dom操作。
<template> <div id="wrap" :style="{ height: screenHeight + 'px' }"> <div id="main" :style="{ top: nowTop + 'px' }"> <ul id="pageUl" type="circle"> <li id="pageUlLi1" class="pageUlLi" :class="{'active': curIndex == 1}"> </li> <li id="pageUlLi2" class="pageUlLi" :class="{'active': curIndex == 2}"> </li> <li id="pageUlLi3" class="pageUlLi" :class="{'active': curIndex == 3}"> </li> <li id="pageUlLi4" class="pageUlLi" :class="{'active': curIndex == 4}"> </li> <li id="pageUlLi5" class="pageUlLi" :class="{'active': curIndex == 5}"> </li> </ul> <div style="background-color: #1b6d85" id="page1" class="page"></div> <div style="background-color: #5cb85c" id="page2" class="page"></div> <div style="background-color: #8a6d3b" id="page3" class="page"></div> <div style="background-color: #337ab7" id="page4" class="page"></div> <div style="background-color: #66512c" id="page5" class="page"></div> </div> </div> </template> <script> export default { name: 'Home', data(){ return{ screenWeight: 0, // 屏幕宽度 screenHeight: 0, // 屏幕高度 index: 1, // 用于判断翻页 curIndex: 1, // 当前页的index startTime: 0, // 翻屏起始时间 endTime: 0, // 上一次翻屏结束时间 nowTop: 0, // 翻屏后top的位置 pageNum: 0, // 一共有多少页 main: Object, obj: Object } }, mounted(){ this.screenWeight = document.documentElement.clientWidth; this.screenHeight = document.documentElement.clientHeight; this.main = document.getElementById("main"); this.obj = document.getElementsByTagName("div"); for (let i = 0; i < this.obj.length; i++) { if (this.obj[i].className == 'page') { this.obj[i].style.height = this.screenHeight + "px"; } } this.pageNum = document.querySelectorAll(".page").length; // 浏览器兼容 if ((navigator.userAgent.toLowerCase().indexOf("firefox") != -1)) { document.addEventListener("DOMMouseScroll", this.scrollFun, false); } else if (document.addEventListener) { document.addEventListener("mousewheel", this.scrollFun, false); } else if (document.attachEvent) { document.attachEvent("onmousewheel", this.scrollFun); } else { document.onmousewheel = this.scrollFun; } }, methods:{ scrollFun(event) { this.startTime = new Date().getTime(); // mousewheel事件中的 “event.wheelDelta” 属性值:返回的如果是正值说明滚轮是向上滚动 // DOMMouseScroll事件中的 “event.detail” 属性值:返回的如果是负值说明滚轮是向上滚动 let delta = event.detail || (-event.wheelDelta); // 如果当前滚动开始时间和上次滚动结束时间的差值小于1.5s,则不执行翻页动作,这样做是为了实现类似节流的效果 if ((this.startTime - this.endTime) > 1500) { if (delta > 0 && parseInt(this.main.offsetTop) >= -(this.screenHeight * (this.pageNum - 2))) { // 向下滚动 this.index++; this.toPage(this.index); }else if (delta < 0 && parseInt(this.main.offsetTop) < 0) { // 向上滚动 this.index--; this.toPage(this.index); } // 本次翻页结束,记录结束时间,用于下次判断 this.endTime = new Date().getTime(); } }, // 翻页 toPage(index) { if (index != this.curIndex) { let delta = index - this.curIndex; this.nowTop = this.nowTop - delta * this.screenHeight; this.curIndex = index; } } } } </script> <style> html, body { height: 100%; } body, ul, li, a, p, div { /*慎删*/ padding: 0px; margin: 0px; } #wrap { overflow: hidden; width: 100%; } #main { position: relative; transition:top 1.5s; } .page { /*谨删*/ width: 100%; margin: 0; } #pageUl { position: fixed; right: 10px; bottom: 50%; } .active{ color: red; } </style>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】