原生js封装轮播图
Posted webmuluo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原生js封装轮播图相关的知识,希望对你有一定的参考价值。
个人实际开发中用到的效果问题总结出来便于自己以后开发查看调用,如果也适用其他人请随意拿走勿喷就行!
原生js对于思路要求比较高,在js代码我都写有备注,足够理解并使用,即使是小白或者刚入行的程序员也比叫好理解,其轮播图只是一个简单的效果,缺点没有写动画效果看起来比较生硬,优点简单好学,容易理解,非常实用
轮播图介绍 : 三张图片,图片下方有对应图片数量的三个指示点,左右有切换指示,左右指示可要可不要
html代码
<div id="mlBox"> <div id="mlImg"> <img src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=511087584,1746612192&fm=26&gp=0.jpg" alt="" id="mlShow"> <img src="https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2251986177,3999926444&fm=26&gp=0.jpg" alt=""> <img src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2929314891,994527773&fm=26&gp=0.jpg" alt=""> </div> <p id="mlSpan"> <span id="mlOn"></span> <span></span> <span></span> </p> <div id="mlLeft"> <img src="image/mlLeft.png" alt=""> </div> <div id="mlRight"> <img src="image/mlRight.png" alt=""> </div> </div>
CSS代码
<style> #mlBox width: 600px; height: 500px; position: relative; margin: 50px auto; border: 1px #ececec solid; #mlImg width: 600px; height: 500px; #mlImg img width: 600px; height: 500px; display: none; #mlSpan width: auto; height: 10px; position: absolute; left: 50%; bottom: 20px; #mlSpan span display: block; float: left; width: 10px; height: 10px; background: cornflowerblue; border-radius: 50%; margin: 0 2px; z-index: 100; #mlImg #mlShow display: block; #mlSpan #mlOn background: chartreuse; #mlLeft width: 30px; height: 30px; background: rgba(51,51,51,0.7); position: absolute; left: 0; top: 50%; display: none; #mlLeft img width: 30px; height: 30px; display: block; #mlRight img width: 30px; height: 30px; display: block; #mlRight width: 30px; height: 30px; background: rgba(51,51,51,0.7); position: absolute; right: 0; top: 50%; display: none; </style>
JS代码
<script> ml(true); //调用ml函数 注:传参是否需要左右指示 默认false function ml(indicator) var oMlBox = document.getElementById(‘mlBox‘); //获取id:mlBox var oMlImg = document.getElementById(‘mlImg‘); //获取id:mlImg var oMlSpan = document.getElementById(‘mlSpan‘); //获取id:mlSpan var aSpan = oMlSpan.getElementsByTagName(‘span‘); //获取id:mlSpan里面的span标签 var aImg = oMlImg.getElementsByTagName(‘img‘); //获取id:mlImg里面的img标签 var oMlLeft = document.getElementById(‘mlLeft‘); //获取id:mlLeft var oMlRight = document.getElementById(‘mlRight‘); //获取id:mlRight var u = 0; //当前照片位置 var shut = null; //定时器的名字 function f1() for (var i = 0; i < aSpan.length; i++) //循环id:mlSpan里面的span标签 aSpan[i].id = ‘‘; //让span标签的id等于空 aImg[i].id = ‘‘; //让id:mlImg里面img标签id等空 aSpan[u].id = ‘mlOn‘; //当前位置的span标签id等于mlOn aImg[u].id = ‘mlShow‘; //当前位置的img标签id等于mlShow for (var f = 0; f < aSpan.length; f++) //循环id:mlSpan里面的span标签 aSpan[f].index = f; //span标签第f个的index等于f aSpan[f].onclick = function () //点击span标签 注:照片下面的三个点 u = this.index; //当前位置等于当前span标签index的位置 f1(); //调用f1函数 oMlBox.onmousemove = function () //鼠标悬浮id:mlBox clearInterval(shut); //关闭定时器 if (indicator) //是否显示左右指示 注:调用ml函数传参 oMlLeft.style.display = ‘block‘; //显示左指示 oMlRight.style.display = ‘block‘; //显示右指示 oMlRight.onclick = function () //点击右指示 u++; //当前位置加一 if (u >= aImg.length) //当前位置大于照片的数量就等于0 u = 0; f1(); //调用f1函数 ; oMlLeft.onclick = function () //点击左指示 u--; //当前位置减一 if (u < 0) //当前位置小于0时就让当前位置等于照片数量减一 u = aImg.length - 1; //注:因为计算机从零开始数所以要减一 f1(); //调用f1函数 ; else oMlLeft.style.display = ‘none‘; //左指示消失 oMlRight.style.display = ‘none‘; //右指示消失 ; oMlBox.onmouseout = function () //当鼠标移出id:mlBox f2(); //调用f2函数 oMlLeft.style.display = ‘none‘; //左指示消失 oMlRight.style.display = ‘none‘; //右指示消失 ; function f2() shut = setInterval(function () //定时器 u++; //每3秒当前位置加一 if (u >= aImg.length) //当前位置大于等于照片的数量当前位置等于0 u = 0; f1(); //调用f1函数 ,3000); f2(); //调用f2函数 </script>
以上是关于原生js封装轮播图的主要内容,如果未能解决你的问题,请参考以下文章