用JS做轮播跑马灯原理是什么,具体如何操作
Admin 2022-08-09 群英技术资讯 298 次浏览
实现原理:
1、准备一个展示区域的盒子,设置宽高;
2、准备一个存放所有图片的盒子,将所有图片依次放入,设置溢出隐藏
<div class="wrapper"> <div id="container"><!--图片展示区域盒子--> <ul id="imglist"><!--将所有图片并列展示盒子--> <li> <img src="./img/banner.jpg" alt="暂无图片"> </li> <li> <img src="./img/banner0.jpg" alt="暂无图片"> </li> <li> <img src="./img/banner.jpg" alt="暂无图片"> </li> <li> <img src="./img/banner0.jpg" alt="暂无图片"> </li> </ul> <ul id="point"> <li class="selected"></li> <li></li> <li></li> <li></li> </ul> </div> </div>
.wrapper{ position: relative; overflow: hidden; width: 100%; height: 870px; } #container{ width: 1920px; height: 870px; position: absolute; top: 50%; left: 50%; overflow: hidden; transform: translate(-50%,-50%); -webkit-transform: translate(-50%,-50%); -moz-transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); -o-transform: translate(-50%,-50%); background-color: #aa201c; } #imglist{ width: 7680px; height: 870px; list-style-type: none; position: absolute; top: 0; left: 0; z-index: 1; } #imglist>li{ width: 1920px; height: 870px; float: left; overflow: hidden; } #point{ list-style-type: none; position: absolute; bottom: 5px; left: 50%; /* right: 0; */ /* margin: auto; */ width: 100%; height: 29px; line-height: 29px; z-index: 10; } #point>.selected{ background-color: #aa201c; } #point>li{ width: 16px; height: 16px; float: left; background-color: #c5c8ce; border-radius: 100%; margin-right: 10px; -webkit-border-radius: 100%; }
var wrap = document.getElementById("container"); var inner = document.getElementById("imglist"); var spanList = document.getElementById("point").getElementsByTagName("li"); var left = document.getElementById("left"); var right = document.getElementById("right"); var clickFlag = true;//设置左右切换标记位防止连续按 var time//主要用来设置自动滑动的计时器 var index = 0;//记录每次滑动图片的下标 var Distance = wrap.offsetWidth;//获取展示区的宽度,即每张图片的宽度 //定义图片滑动的函数 function AutoGo() { var start = inner.offsetLeft;//获取移动块当前的left的开始坐标 var end = index * Distance * (-1);//获取移动块移动结束的坐标。 //计算公式即当移动到第三张图片时,图片下标为2乘以图片的宽度就是块的left值。 var change = end - start;//偏移量 var timer;//用计时器为图片添加动画效果 var t = 0; var maxT = 30; clear();//先把按钮状态清除,再让对应按钮改变状态 if (index == spanList.length) { spanList[0].className = "selected"; } else { spanList[index].className = "selected"; } clearInterval(timer);//开启计时器前先把之前的清 timer = setInterval(function () { t++; if (t >= maxT) {//当图片到达终点停止计时器 clearInterval(timer); clickFlag = true;//当图片到达终点才能切换 } inner.style.left = change / maxT * t + start + "px";//每个17毫秒让块移动 if (index == spanList.length && t >= maxT) { inner.style.left = 0; index = 0; //当图片到最后一张时把它瞬间切换回第一张,由于都同一张图片不会影响效果 } }, 17); } //编写图片向右滑动的函数 function forward() { index++; //当图片下标到最后一张把小标换0 if (index > spanList.length) { index = 0; } AutoGo(); } //编写图片向左滑动函数 function backward() { index--; //当图片下标到第一张让它返回到倒数第二张, //left值要变到最后一张才不影响过渡效果 if (index < 0) { index = spanList.length - 1; inner.style.left = (index + 1) * Distance * (-1) + "px"; } AutoGo(); } //开启图片自动向右滑动的计时器 time = setInterval(forward, 3000); //设置鼠标悬停动画停止 wrap.onmouseover = function () { clearInterval(time); } wrap.onmouseout = function () { time = setInterval(forward, 3000); } //遍历每个按钮让其切换到对应图片 for (var i = 0; i < spanList.length; i++) { spanList[i].onclick = function () { index = this.innerText - 1; AutoGo(); } } //清除页面所有按钮状态颜色 function clear() { for (var i = 0; i < spanList.length; i++) { spanList[i].className = ""; } }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家详细介绍了vue递归组件实现elementUI多级菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要介绍了JavaScript预解析,对象的的相关资料,小编觉得这篇文章写的还不错,需要的朋友可以参考下,希望能够给你带来帮助
vue跟小程序的区别:1、vue一般会在created或者mounted中请求数据,而在小程序会在onLoad或onShow中请求数据;2、vue动态绑定一个变量的值为元素的某个属性的时候,会在变量前面加上冒号,而小程序绑定某个变量的值为元素属性时,会用两个大括号括起来;3、vue用“v-if”和“v-show”控制元素的显示和隐藏,小程序用“wx-if”和hidden控制。
一文教会你解决js数字精度丢失问题 目录 一.关于为什么要解决精度丢失 二.怎么解决js的计算精度丢失问题? 三.toPrecision 特定方法返回四舍五入长度字符串 结语 一.关于为什么要解决精度丢失 可以看下例子,因为js失去精度问题也是常见的问题,正常我们可以四舍五入或者 toFixed保留小数这种去解决 现在遇到问题是我们明知道计算结果是等于0.01的但是最后的结果确实true,如果我们遇到运算问题,小数数值比对问题,那么我们就必须要去解决他,否则也就会出现上者情况,出现逻辑判断出错问题 二.怎么解决js的计算精度丢失问
在javascript中,可以利用setAttribute()方法来修改style属性,该方法可以为一个已存在的指定属性修改属性值,语法“元素对象.setAttribute("style","样式代码");”。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008