鼠标滚轮切屏效果

某天发现一个网站《北京新鸿儒世纪网络技术有限公司》,一开始打开,哇,好简单啊,特别是首页,就一张图,后来发现里面有挺多小细节的,比如:做了媒体响应式、滚轮切屏(第一次见,整得挺酷)。

代码细节主要参考了:辣姐什么鬼
——js实现网页全屏切换(平滑过渡),鼠标滚动切换,她主要采用的是 2D 效果,实现的样式也很nice。我对这种小效果不是很熟练,也很烦它们的各种兼容,对我来说还是 定位 简单方便。

在这里插入图片描述
做这个需求之前,先要了解一下鼠标滚轮事件

一、页面布局主要代码:

把要滚动的部分放到一个父级里面,方便管理:

<!-- 头部 -->
<header></header><!-- 主体部分 -->
<section>
<!---1、广告---><div id="banner" class="active"><img src="./imgs/banner.jpg" alt="" srcset=""></div><!---2、很多icons的部分 ---><div id="icons" class="downActive"><ul class="clear"><li><img src="./imgs/common/icons1.jpg" alt=""></li><li><img src="./imgs/common/icons2.jpg" alt=""></li><!--- ..... ---></ul></div><!---3、关于---><div id="about" class="bg downActive"><h4><a href="公司" target="_blank">关于 新鸿儒</a></h4><p>北京新鸿儒成立于1998年,作为中国互联网资深服务商<br>专注于互联网平台开发、新媒体运营服务、云计算服务三大板块,致力于为一流的品牌提供互联网全案服务。<br>新鸿儒已经成功为众多世界五百强、中国五百强企业提供网站建设服务,<br>并在微信公众号运营、云架构咨询服务得到客户和行业的一致认可。</p><a href="公司" target="_blank">了解新鸿儒 &gt;</a></div><!----4、底部----><footer class="bg downActive"><div class="margin clear footer-t"><a href="#" target="_blank"><img src="./imgs/indexFoot1.jpg" alt="" srcset=""></a><a href="#"><img src="./imgs/indexFoot.jpg" alt="" srcset=""></a></div><div class="footer-b"><div class="margin clear"><ul class="clear"><li><a href="./example.html">客户与案例</a><a href="./example.html">客户案例</a></li><li><a href="./服务.html">服务</a><a href="./服务.html">品牌网站建设</a><a href="./服务.html">移动应用</a><a href="./服务.html">互联网运维</a><a href="./服务.html">影像创意</a></li><!---- .......----></ul><div class="footer-b-r"><img src="./imgs/footerLogo.png" alt=""><p class="tit"><span>©1998-2021 北京新鸿儒世纪网络技术有限公司</span><span>版权所有</span> <br><span>新鸿儒网站建设公司</span><span>地址:北京市朝阳区高碑店服仓国际文化创意产业园KASO3层</span><br><span><a rel="nofollow" href="https://www.beian.miit.gov.cn/" target="_blank">京ICP备09021176号</a></span><br><span>公安机关备案号:11010502030953</span><span>新鸿儒提供:北京网站建设/北京网站制作/北京网站设计等服务</span></p></div></div></div></footer>
</section>

二、主体部分css

<style>*{margin:0;padding:0;}/*主要css代码---start*/section{width: 100%; height: calc(100% - 111px); /*宽高自适应整个浏览器,多余部分隐藏*/position: relative; left: 0; top:111px;overflow: hidden;}section>div,section>footer{width:100%; height: 100%; /*每一个子块宽高都是占满整个屏幕的*/position: absolute;left: 0;z-index: 0;overflow: hidden;-webkit-transition: all 0.8s ease-in-out;-moz-transition: all 0.8s ease-in-out;-o-transition: all 0.8s ease-in-out;transition: all .8s ease-in-out;}section>.active{top: 0 !important;z-index: 1;}section>.downActive{top:100%;}section>.upActive{top:-100%;z-index:0};/*主要css代码---end*//*1、广告部分*/section>div#banner img{display: block;width: 100%;height: 100%;object-fit: cover;}/*2、很多icons*/section>div#icons ul{height: 100%;width: 100%;}section>div#icons ul li{float:left;height: 33.333%;width: 25%;}section>div#icons ul li img{display: block;width: 100%;height: 100%;object-fit: cover;}/*......*/
</style>

因为初始时只能看到section中的第一个块,想要看到后面的,只能通过鼠标滚轮下滚操作,让下面的子块上去。
在这里插入图片描述

注意:

  • .active:初始时给 section 中的第一块子元素添加;
  • .downActive:初始时给 section 中除了第一个块子元素的所有子元素添加;
  • .upActive:滚轮上滚时,想要看到上面块信息的样式。
  • 每个大块最好写上背景色,因为用的定位,不然会影响当前操作的块。

三、js 部分

window.onload = function (){//获取section中的子元素var childDomArr = document.querySelector("section").children; //判断鼠标滚轮滚动方向if (window.addEventListener){  //FF,火狐浏览器会识别该方法window.addEventListener('DOMMouseScroll', wheel, false);}window.onmousewheel = document.onmousewheel = wheel;  //W3Cvar throldHold = 800; //两次滚动滚轮事件最小时间间隔var flag = true;  //是否可以调用滚轮事件的方法 true:可以var timer = null;//统一处理滚轮滚动事件 function wheel(event){var delta = 0;if (!event) event = window.event;if (event.wheelDelta) {  //IE、chrome浏览器使用的是wheelDelta,并且值为“正负120”delta = event.wheelDelta/120; if (window.opera) delta = -delta;} else if (event.detail) {  //FF浏览器使用的是detail,其值为“正负3”delta = -event.detail/3;}if( flag && delta ){ //判断滚轮事件flag = false;handle(delta, childDomArr); //调用滚轮事件的方法timer = setTimeout(function(){ //超过规定时间间隔之后,将flag=trueclearInterval(timer);flag = true;}, throldHold);}}//上下滚动时的具体处理函数function handle(delta, arr) {var num;for(var i=0;i<arr.length;i++){//得到当前checked元素的下标if(arr[i].classList.contains('active')){num = i;}}if (delta <0 && num<arr.length-1){//向下滚动console.log("向下")arr[num].classList.remove('active'); //删除当前的num++;arr[num].classList.remove('downActive'); //给下一个(要被看到的DOM)添加arr[num].classList.add('active');  //给下一个(要被看到的DOm)添加} else if (delta > 0 && num>0){//向上滚动arr[num].classList.remove('active');arr[num].classList.add('upActive');num--;arr[num].classList.add('active');arr[num+1].classList.remove('upActive');  //裂开arr[num+1].classList.add('downActive');   //裂开//其实这两行的代码就像是第一次向下滚动时的样式}}}

仔细观察可以发现,原作者的导航栏与每一个切屏的块是相关联的,而且她跳着访问时,会有种连续滑动的感觉。
这里的块跟导航没有相关联,所以没做这一步,感兴趣的伙伴可以试一试。

还有 jquery 实现滚轮切屏的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序 自定义组件报错[“usingComponents“][“my-list“] 未找到

根据官网案例写了一个自定义组件&#xff0c;引入时总是报这个错误。 后面在社区里面找到了解决办法&#xff0c;把上面配置中改成&#xff1a;"my-list": "/components/my-list/my-list" 就可以了。 具体原因&#xff1a;官方文档上的自定义组件是 4 个文…

http 请求报文和响应报文

1、请求报文 示例&#xff1a; 2、响应报文 示例&#xff1a; 更多专业前端知识&#xff0c;请上 【猿2048】www.mk2048.com

小程序 封装table组件

实在是懒得自己封装了&#xff0c;就在网上找了一下别人封装好的&#xff0c;这里主要参考的是 灰信网上的一篇文章&#xff0c;我在他的基础上改了一下样式&#xff0c;动态生成列表每一列列宽。 表格可左右横向滑动 一、子页面 table.wxml <scroll-view class"ta…

服务器--停止启动服务,查看日志文件

停止启动服务 ./shutdown.sh 停止掉当前服务 ./startup.sh 启动当前服务 例如&#xff1a; Tomcat服务器&#xff1a;在apache-tomcat-7.0.82/bin 目录下&#xff0c;sh shutdown.sh 停止掉当前服务&#xff0c;sh startup.sh 启动当前服务 查看日志文件&#xff1a; Tomcat查看…

linq 解决winForm中控件CheckedListBox操作的问题。(转载)

1.获取CheckedListBox选中项的文本的字符串&#xff0c;并用分隔符连接。系统没有提供相应的属性&#xff0c;方法。 这里我们利用3.0的特性给其来个扩展方法,如下&#xff1a; public static stringGetCheckedItemsText(thisCheckedListBox box) { stringre…

Glass Fish 4.0.1中的Jersey SSE功能

Glass Fish为各种Java EE规范捆绑了不同的参考实现&#xff0c;例如&#xff0c;CDI的Weld&#xff0c;JSF的Mojarra&#xff0c;WebSocket的Tyrus&#xff0c;JAX-RS的Jersey。 Glass Fish 4.0.1即将发布&#xff0c;并计划涵盖许多组件/模块的更新&#xff0c;这些组件/模块当…

canvas1:简单介绍、开始使用、画直线+虚线

目录 一、简单介绍 二、开始使用 三、画直线、虚线 3.1 画直线 1. 画直线的步骤&#xff1a; 2. 设置直线的样式 3. 绘制多条直线 3.2 画虚线 四、整理使用到的方法&#xff1a; 参考了廖雪峰老师的笔记。 一、简单介绍 Canvas是 HTML5新增的组件&#xff0c;它就像…

Test of etco

Test of etco 转载于:https://www.cnblogs.com/yanjunz/archive/2010/12/22/1913852.html

js setTimeout和setInterval区别

1、区别 2、示例代码 <!DOCTYPE html><html lang"zh"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><meta http-equiv"X-UA-Compatibl…

将Android源码集成到Eclipse中的方法

1、 首先&#xff0c;下载Android源码&#xff1a; Android 2.0源码下载地址&#xff1a;http://download.csdn.net/source/2931366 Android 2.1源码下载地址&#xff1a;http://download.csdn.net/source/2931364 2、 然后&#xff0c;新建一个名为【sources】的文件夹&#x…

为GWT设置开发环境

介绍 这是旨在用Java开发跨平台移动应用程序的系列文章的一部分 。 在此博客文章中&#xff0c;我们将了解GWT是什么&#xff0c;并为GWT设置开发环境。 GWT是一个开源开发工具包&#xff0c;用于开发基于浏览器的复杂Ajax应用程序。 使用GWT&#xff0c;您可以用Java开发Rich…

vue slot的使用

一、自定义组件中多个 slot 很久之前就想把表格封装了&#xff0c;奈何那时太过担心自己的技术。今天趁着劲头大致看了一下&#xff0c;把表格封装了&#xff0c;倒是比想象中的要简单很多 O(∩_∩)O 哈哈~ 暂且不考虑细节&#xff0c;大致封装表格要考虑的有&#xff1a;是否…

虫师Selenium2+Python_6、Selenium IDE

P155——创建测试用例录制脚本编辑脚本定位辅助P159——Selenium IDE 命令在浏览器中打开URL&#xff0c;可以接受相对路径和绝对路径两种形式openopen(url)单击链接、按钮、复选框和单选框click(elementLocator)模拟键盘的输入&#xff0c;向指定的input中输入值type(inputLoc…

flow 静态类型检查 js

1、flow介绍 https://ustbhuangyi.github.io/vue-analysis/prepare/flow.html#为什么用-flow 2、使用 &#xff08;1&#xff09;安装flow &#xff08;2&#xff09;项目目录的test.js文件 类型推断&#xff1a; /*flow*/function split(str) {return str.split( )}split(1…

页面监听,一段时间内不操作网页,就自动跳转到登录页

需求&#xff1a;用户在 5 分钟内没有操作网页&#xff0c;就自动跳转到登录页。 环境&#xff1a;jquery 项目&#xff0c;有公共的 js 文件 。 在所有页面都引用的 js 文件中添加下面代码&#xff1a; //判断用户是否在5分钟内未操作页面&#xff0c;如果没有操作&#xff…

页面刷新 vuex 数据重新被初始化

1、原因 vuex里用来存储的也只是一个全局变量&#xff0c;当页面刷新&#xff0c;该全局变量自然不存在了。 2、解决 使用localStorage存储一份 &#xff08;1&#xff09;storage.js /*** vuex localStorage plugin*/const IS_ALL 0export default function storagePlugi…

小程序 循环中有多个input,怎么获取每个input输入框的值

像上面这样的&#xff0c;使用form表单结构不太合理。官方文档中 wx.createSelectorQuery() 方法我这里总是打印不出值&#xff0c;所以只好通过输入框的事件来做判断&#xff0c;因为提交时&#xff0c;上面所有的输入框都是要有值的&#xff0c;也就意味着这些输入框都会使用…

了解JUnit的Runner架构

几周前&#xff0c;我开始创建一个小的JUnit Runner&#xff08; Oleaster &#xff09;&#xff0c;它允许您使用Jasmine方式在JUnit中编写单元测试。 我了解到&#xff0c;创建自定义JUnit Runners实际上非常简单。 在本文中&#xff0c;我想向您展示JUnit Runner在内部如何工…

琼瑶哀悼丈夫去世

转载于:https://www.cnblogs.com/gitwow/p/10982911.html

vue 简单实用的elementUI表格封装

在写这个表格组件之前&#xff0c;要了解 slot 插槽的使用。 目录 1.子组件&#xff1a;子组件调用父组件的方法 this.$parent.方法名 2.父组件使用 2.1 父组件&#xff08;普通表格&#xff09;&#xff1a; 2.2 父组件&#xff08;表格中的某一项数据需要修改&#xff0…