鼠标滚轮切屏效果

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

代码细节主要参考了:辣姐什么鬼
——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,一经查实,立即删除!

相关文章

JavaFX技巧11:更新只读属性

自定义控件通常具有“只读”属性。 这意味着不能从控件外部进行设置&#xff0c;甚至不能从自己的皮肤类别进行设置。 通常&#xff0c;控件的行为会导致更改只读属性。 在JavaFX中&#xff0c;可以在控件本身和皮肤中实现此行为。 因此&#xff0c;有时我们最终希望通过皮肤来…

DVT和ADVT - 为数不多的DICOM测试工具说明AND下载

1、 前言做DICOM研究、开发和应用的人&#xff0c;最头疼的就是没有充分的工具和手段来进行测试&#xff0c;所以无法知道自己的程序、软件是否正确&#xff0c;能否正确地与其他设备进行DICOM连接&#xff1f;连接出错的原因在哪里&#xff1f;改正的话该从哪里下手&#xff1…

高阶函数 实现sum(2)(3) 柯里化

<!DOCTYPE html><html><head><meta charset"utf-8" /><title>高阶函数 实现sum(2)(3)</title></head><body><script type"text/javascript">function add() {var args [].slice.call(arguments);v…

设置和重置ssh key

查看本地是否有已经生成好的ssh key $ cat ~/.ssh/id_rsa.pub 若有,先删除: $ cd ~ $ rm -rf .ssh 重新生成ssh key ssh-keygen -t rsa -C "youemailexample.com" 提示输入密码或确认密码 直接全部回车即可 查看新生成的ssh key $ cat ~/.ssh/id_rsa.pub 然后获取到密…

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

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

编写干净的测试–验证或不验证

在编写使用模拟对象的单元测试时&#xff0c;请遵循以下步骤&#xff1a; 配置我们的模拟对象的行为。 调用测试的方法。 验证是否已调用模拟对象的正确方法。 第三步的描述实际上有点误导&#xff0c;因为通常我们最终会验证是否调用了正确的方法以及未调用模拟对象的其他…

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…

一个在自己的线程中运行测试的JUnit规则

有时&#xff0c;能够在单独的线程中运行JUnit测试会很有帮助。 特别是在编写与封装的ThreadLocal或类似对象交互的集成测试时&#xff0c;这可能会派上用场。 单独的线程将隐式确保每次测试运行都未初始化threadlocal的与线程相关的引用。 这篇文章介绍了提供此类功能的JUnit …

linux LVS管理之keepalive

Keepalive01: ! Configuration File for keepalivedglobal_defs {notification_email { ##接收邮件的地址&#xff1b;就是说通知邮件应该发送给谁&#xff0c;通常写自己的地址rootlocalhost ##收件人&#xff0c;表示发送给本机的root用户}notification_email_from k…

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…