使用JS制作图片轮播切换的具体代码是什么
Admin 2022-08-09 群英技术资讯 262 次浏览
本文实例为大家分享了javascript实现图片轮播切换效果的具体代码,供大家参考,具体内容如下
效果如下:
代码部分:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> *{margin:0;padding:0;} #banner{position:relative;width:400px;height:200px;margin:50px auto;overflow: hidden;} #banner .box{width:400px;height:200px;overflow: hidden;} #banner .box li img{width:400px;height:200px;overflow: hidden;} #banner .box li{display:none;} #banner .box li.active{display:block;} #banner .static{position:absolute;bottom:0;height:30px;width:390px;padding-right:10px;text-align:right;} #banner .static span{display:inline-block;width:20px;height:20px;margin:0 2px;line-height:20px;text-align:center;background:#fff;cursor:default;} #banner .static span.active{background:blue;color:#fff;} #banner .btn{position:absolute;top:80px;height:40px;width:20px;color:#fff;line-height:40px;text-align:center;background:#000;opacity:.75;cursor:default;} #banner .next.btn{right:0;} </style> </head> <body> <div id="banner"> <div class="box"> <ul> <li class="active"> <a href="#"> <img src="img/banner.jpg"/> </a> </li> <li> <a href="#"> <img src="img/banner01.jpg"/> </a> </li> <li class=""> <a href="#"> <img src="img/banner02.jpg"/> </a> </li> <li> <a href="#"> <img src="img/banner03.jpg"/> </a> </li> </ul> </div> <div class="static"> <span class="active">1</span> <span>2</span> <span>3</span> <span>4</span> </div> <div class="prev btn"><</div> <div class="next btn">></div> </div> <script> //切换样式 function toggleClass(elem, classStr){ if(elem.className){ if(elem.className.indexOf(classStr) > -1){ elem.className = elem.className.replace(classStr,""); }else{ elem.className = elem.className + " " + classStr; } }else{ elem.className = classStr; } } //获取元素所在兄弟元素的索引 function getIndex(elem){ var index; var childNodes = elem.parentNode.childNodes; //获取子元素的元素节点 function childElem(){ var result = []; for(var i = 0, len = childNodes.length; i < len; i++){ if(childNodes[i].nodeType == 1){ result.push(childNodes[i]); } } return result; } //判断元素与子元素是否相等 var child = childElem(elem); for(var j = 0, lenj = child.length; j < len; j++){ if(child[j] == elem){ index = j; }else{ console.error("没有找到相应的子元素!"); } } //返回索引 return index; } //dom选择器 function $(selector){ return document.querySelector(selector); } function $$(selector){ return document.querySelectorAll(selector); } //对象参数 var int = { num: null, speed: null, timerId: null }; var liItem = $$("#banner .box li"); var static = $$("#banner .static span"); var btn = $$("#banner .btn"); //初始化默认值 var activeNum = 1; int.num = liItem.length; int.speed = 3000; //切换动作 function toggleItem(num){ toggleClass($("#banner .box li.active"), "active"); toggleClass($("#banner .static span.active"), "active"); //添加下一个激活选项 toggleClass(liItem.item(num), "active"); toggleClass(static.item(num), "active"); } function autoPlay(){ int.timerId = setInterval(function(){ if(activeNum < int.num){ toggleItem(activeNum); activeNum++; }else{ activeNum = 0; toggleItem(activeNum); activeNum++; } },int.speed); } //定时轮播 autoPlay(); //状态点鼠标移入移出效果 for(var i = 0, len = static.length; i < len; i++){ //匿名传参避免产生闭包得不到想要的效果 (function(j){ //鼠标移入效果 static.item(j).onmouseenter = function(){ //停止动画 clearInterval(int.timerId); var index = getIndex(this); toggleItem(index); } //鼠标移出效果 static.item(j).onmouseleave = function(){ //开始动画 autoPlay(); } })(i); } for(var k = 0, lenk = btn.length; k < lenk; k++){ //上下张按钮移入移出效果 btn.item(k).onmouseenter = function(){ clearInterval(int.timerId); } btn.item(k).onmouseleave = function(){ autoPlay(); } } //单价击上一张 $(".prev.btn").onclick = function(){ if(activeNum > 0){ activeNum--; toggleItem(activeNum); }else{ activeNum = 3; toggleItem(activeNum); } } //单击下一张 $(".next.btn").onclick = function(){ if(activeNum < int.num){ toggleItem(activeNum); activeNum++; }else{ activeNum = 0; toggleItem(activeNum); activeNum++; } } </script> </body> </html>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这个插件可以用来在未使用组件库,没有自带好的校验规则时使用,进行表单校验,非常的实用,感兴趣的朋友可以参考下本文,了解该插件的使用方法
在前端开发时,点击父菜单弹出子菜单功能是比较经常遇到需求,这篇文章就主要介绍用JavaScript实现点击出现子菜单,以下是简易的实现效果以及具体代码展示,感兴趣的朋友就继续往下看吧。
这篇文章主要给大家分享javascript异步的相关内容,对大家学习和理解javascript异步有一定的帮助,下文有详细的示例和解释,感兴趣的朋友可以参考,接下来跟随小编一起来学习一下吧。
在JavaScript 中,我们往往会遇到需要使用某些默认值来填充数组的情况,那么都有哪些方式可以完成这样的任务呢?这篇文章主要给大家介绍了关于JS创建或填充任意长度数组的小技巧,需要的朋友可以参考下
本篇文章带大家探讨一下 JavaScript 中三元运算符的语法及其一些常见用法,希望对大家有所帮助!
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008