当前位置: 首页 > news >正文

彭州建设网站深圳网站设计兴田德润i优惠吗

彭州建设网站,深圳网站设计兴田德润i优惠吗,信息公司网站建设方案+游戏,深圳h5网站建设近日#xff0c;在浏览网站的时候#xff0c;发现了一个有意思的效果#xff1a;一个图片轮播#xff0c;通过上下滚动鼠标滚轮控制图片的上下切换。 于是就有了自己做一个的想法#xff0c;顺带复习下鼠标滚轮事件。 鼠标滚轮事件#xff0c;参考这篇文章#xff1a;…近日在浏览网站的时候发现了一个有意思的效果一个图片轮播通过上下滚动鼠标滚轮控制图片的上下切换。 于是就有了自己做一个的想法顺带复习下鼠标滚轮事件。 鼠标滚轮事件参考这篇文章鼠标滚轮事件-CSDN博客 一、HTML和CSS 无论怎么样的滚动首先要制作图片轮播的结构和样式。 HTML div classbox idboxul classlist idlistliimg src../images/pic1.jpg alt/liliimg src../images/pic2.jpg alt/liliimg src../images/pic3.jpg alt/liliimg src../images/pic4.jpg alt/liliimg src../images/pic5.jpg alt/li/ul div classdots iddots/div /div HTML结构很简单就是一个 div 里面套了两个结构图片区和控制点区。 图片区 ul#list就是一个 ul里面有多个 li 嵌套了图片。控制点区 div#dots 没有内容这是因为控制点要根据图片的数量ul 的 li 个数动态生成。 CSS *{margin: 0;padding: 0; } ul,li,ol{list-style: none; } .box{width: 600px;height: 399px;border:20px #000 solid;margin-left: auto;margin-right: auto;overflow: hidden;position: relative;margin-top: 100px; } .list{position: relative; } .list img{display: block; } .list li{width: 600px;height: 399px;overflow: hidden; } .box .dots{position: absolute;bottom: 20px;left: 50%;transform: translateX(-50%);display: flex;background: rgba(255,255,255,0.5);padding: 5px;border-radius: 30px; } .box .dots span{display: block;width: 15px;height: 15px;background: #fff;border-radius: 50%;margin-left: 5px;margin-right: 5px;cursor: pointer; } .box .dots span.active{background: #f30; } CSS代码如上就不分析了反正就这样。强调两点 整个  div.box 要相对定位约束绝对定位的控制点区 div#dotsul.list 也要相对定位因为要复制第一个图放到最后复制最后一个图放到第一图的前面。复制出来的图都是绝对定位的。 二、JS 1. 为了防止重复执行滚动事件写一个 flag当为 true 的时候就不执行滚动事件。默认值为 false。 let isScroll false; 2. 根据图片的个数动态生成点span。为了防止过度操作 DOM使用了  createDocumentFragment 缓存生成的span 标签。 let li list.querySelectorAll(li); let li_len li.length; let index 0; let wrap document.createDocumentFragment(); // 初始化工作 for(let i 0; i li_len; i){let span document.createElement(span);span.dataset.index i;if(i 0){span.classList.add(active);}wrap.appendChild(span);span.addEventListener(click,function(){index this.dataset.index;changePic(index);} ); } dots.appendChild(wrap); 3. 上下移动图片就是在控制图片的 transform 的 translateY 属性。 // 图片切换函数index function nextPic(){index;if( index li_len ){index 0;list.style.transform translateY(399px); // 调整list位置document.body.offsetHeight; // 强制重绘HTML}changePic(index); }// 图片切换函数index-- function prevPic(){index--;if( index 0 ){index li_len - 1;list.style.transform translateY( (-399*li_len) px);document.body.offsetHeight; // 强制重绘HTML}changePic(index); } 4. 切换图片就是在换图已经更改控制点的样式。 // 切换图片 function changePic(index){// 点的切换let dotsBros findeBros(dots_span[index]);dots_span[index].classList.add(active);dotsBros.forEach(function(item){item.classList.remove(active);});// 图片切换isScroll true;list.style.transform translateY( (-index * 399) px);list.style.transition transform 0.5s;document.body.offsetHeight; // 强制重绘HTML } 5. 当动画结束的时候就要恢复 flag 变量的值为 flase并且去掉图片的过渡动画。 // 动画结束时恢复初始状态 list.addEventListener(transitionend,function(){isScroll false;list.style.transition none;}); 6. 滚动事件判断滚轮值的正负选择上还是下滚动图片。 // 鼠标滚轮事件 box.addEventListener(wheel,function(e){e.preventDefault();let delta e.deltaY;if(delta 0 isScroll false ){nextPic();}else if(delta 0 isScroll false){prevPic();} },{passive: false }); 完整JS代码 let box document.getElementById(box); let list document.getElementById(list); let dots document.getElementById(dots); let isScroll false;let li list.querySelectorAll(li); let li_len li.length; let index 0; let wrap document.createDocumentFragment(); // 初始化工作 for(let i 0; i li_len; i){let span document.createElement(span);span.dataset.index i;if(i 0){span.classList.add(active);}wrap.appendChild(span);span.addEventListener(click,function(){index this.dataset.index;changePic(index);} ); } dots.appendChild(wrap); let dots_span dots.children; // 初始图片 let liFirst li[0]; let liLast li[li_len - 1]; let newLiFirst liFirst.cloneNode(true); let newLiLast liLast.cloneNode(true); list.appendChild(newLiFirst); list.appendChild(newLiLast); newLiLast.style.position absolute; newLiLast.style.top -399px; newLiLast.style.left 0; // 工具函数获取兄弟节点 function findeBros(tag){let bros [];let parent tag.parentNode;for(let i 0; i parent.children.length; i){if(parent.children[i] ! tag){bros.push(parent.children[i]);}}return bros; } // 图片切换函数index function nextPic(){index;if( index li_len ){index 0;list.style.transform translateY(399px); // 调整list位置document.body.offsetHeight; // 强制重绘HTML}changePic(index); }// 图片切换函数index--function prevPic(){index--;if( index 0 ){index li_len - 1;list.style.transform translateY( (-399*li_len) px);document.body.offsetHeight; // 强制重绘HTML}changePic(index); }// 切换图片 function changePic(index){// 点的切换let dotsBros findeBros(dots_span[index]);dots_span[index].classList.add(active);dotsBros.forEach(function(item){item.classList.remove(active);});// 图片切换isScroll true;list.style.transform translateY( (-index * 399) px);list.style.transition transform 0.5s;document.body.offsetHeight; // 强制重绘HTML } // 动画结束时恢复初始状态 list.addEventListener(transitionend,function(){isScroll false;list.style.transition none; });// 鼠标滚轮事件 box.addEventListener(wheel,function(e){e.preventDefault();let delta e.deltaY;if(delta 0 isScroll false ){nextPic();}else if(delta 0 isScroll false){prevPic();} },{passive: false });
http://www.hkea.cn/news/14393214/

相关文章:

  • 网站建设验收报告类网站建设
  • 做网站公司无锡微网站管理
  • 门源县住房和城乡建设局网站wordpress文档
  • 秦皇岛做网站wordpress 短代码 嵌套
  • 免费做企业网站网上书店网站建设实训总结
  • 网站建设企业蛋糕自己开发微信小程序教程
  • 昌吉州住房和城乡建设局网站百度网站下载安装
  • 小企业网站 优帮云怎么网站是什么语言做的
  • 蚌埠网站开发程序员最吃香的5个岗位
  • 廊坊住房和城乡建设厅网站广州联享网站建设公司怎么样
  • 如何在网站上做网盘小鱼儿企业网站管理系统
  • 在线网站建设机构大连建设信息网
  • 整站seo服务怎么做自己的刷赞网站
  • 微站和网站数据同步拓者设计网
  • 石大远程网页设计及网站建设答案设计师招聘网站有哪些
  • 长沙做网站zwnet专业高端网站建设服务公司
  • 昆明网站设计价格百度关键词竞价查询系统
  • 做网站公司如何赚钱如何快速做企业网站包括商城
  • 怎么给网站图片加alt如何选择合适的建站公司
  • 中山网站优化营销网页代码制作基础教程
  • 宿迁网站推广开一个工作室需要多少钱
  • 男女做羞羞漫画网站网站建设功能的策划书
  • 开源网站代码织梦微信网站模板
  • 专门查企业的网站delphi做网站开发
  • xml做网站源码南溪区网站建设
  • 建立网站需要多少钱 纠正错误湖南岚鸿网站建设最重要的因素
  • 网络营销公司哪家好长沙网站优化方法
  • 自适应网站举例明天正式解封
  • 关键词网站优化平台产品推广策划方案
  • 怎么找有赞做网站网站建设用户登录源码