利用原生js实现轮播图效果
2017-03-21 16:37
771 查看
这里需要用到定时器动画来实现, animate.js代码见定时器动画一文;
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js原生轮播图</title> <style type="text/css"> * { padding: 0; margin: 0; list-style: none; border: 0; } .all { width: 500px; height: 200px; padding: 7px; border: 1px solid #ccc; margin: 100px auto; position: relative; } .screen { width: 500px; height: 200px; /*overflow: hidden;*/ position: relative; } .screen li { width: 500px; height: 200px; overflow: hidden; float: left; } .screen ul { position: absolute; left: 0; top: 0px; width: 3000px; } .all ol { position: absolute; right: 10px; bottom: 10px; line-height: 20px; text-align: center; } .all ol li { float: left; width: 20px; height: 20px; background: #fff; border: 1px solid #ccc; margin-left: 10px; cursor: pointer; } .all ol li.current { background: yellow; } #arr { display: none; } #arr span { width: 40px; height: 40px; position: absolute; left: 5px; top: 50%; margin-top: -20px; background: #000; cursor: pointer; line-height: 40px; text-align: center; font-weight: bold; font-family: '黑体'; font-size: 30px; color: #fff; opacity: 0.3; border: 1px solid #fff; } #arr #right { right: 5px; left: auto; } </style> </head> <body> <div class="all" id='box'> <div class="screen"> <ul> <li><img src="images/1.jpg" width="500" height="200"/></li> <li><img src="images/2.jpg" width="500" height="200"/></li> <li><img src="images/3.jpg" width="500" height="200"/></li> <li><img src="images/4.jpg" width="500" height="200"/></li> <li><img src="images/5.jpg" width="500" height="200"/></li> </ul> <ol> </ol> </div> <div id="arr"><span id="left"><</span><span id="right">></span></div> </div> <script src="../animate.js"></script> <script> // 获取对象 var box = document.querySelector('#box'); var screen = box.children[0]; var arr = document.querySelector('#arr'); var arrLeft = document.querySelector('#left'); var arrRight = document.querySelector('#right'); var ul = screen.children[0]; var ulLis = ul.children; var ol = screen.children[1]; var imgWidth = screen.offsetWidth; // 动态生成小方块 for (var i = 0; i < ulLis.length; i++) { var li = document.createElement('li'); li.innerHTML = i + 1; ol.appendChild(li); } // 添加假图片 var cloneLi = ulLis[0].cloneNode(true); ul.appendChild(cloneLi); var olLis = ol.children; olLis[0].className = 'current'; // 鼠标经过显示箭头 box.addEventListener('mouseover', function () { arr.style.display = 'block'; }); // 鼠标离开隐藏箭头 box.addEventListener('mouseout', function () { arr.style.display = 'none'; }); // 点击小方块切换轮播图 for (var i = 0; i < olLis.length; i++) { olLis[i].index = i; olLis[i].addEventListener('click', function () { // 排它 for (var i = 0; i < olLis.length; i++) { olLis[i].className = ""; } this.className = 'current'; // 让轮播图跟随小方块 var target = -this.index * imgWidth; animate(ul, target); }); } // 记录当前图片 var pic = 0; // 记录当前小方块 var square = 0; // 点击左箭头 arrLeft.addEventListener('click', function () { if (pic === ulLis.length - 1) { pic = 0; ul.style.left = '0px'; } pic++; var target = -pic * imgWidth; animate(ul, target); square--; if (square == -1) { square = olLis.length - 1; } for (var i = 0; i < olLis.length; i++) { olLis[i].className = ""; } olLis[square].className = "current"; }); // 右箭头点击事件 arrRight.addEventListener('click', function () { if (pic === 0) { pic = ulLis.length - 1; ul.style.left = -pic * imgWidth + 'px'; } pic--; var target = -pic * imgWidth; animate(ul, target); square++; if (square === olLis.length) { square = 0; } for (var i = 0; i < olLis.length; i++) { olLis[i].className = ""; } olLis[square].className = 'current'; }); // 自动播放 timer = setInterval(function () { arrLeft.click(); }, 3000); </script> </body> </html>
相关文章推荐
- 原生js实现——轮播图效果
- 原生js实现网易轮播图效果
- js实现轮播图效果(附源码)--原生js的应用
- 原生js和jquery实现图片轮播淡入淡出效果
- 原生JS实现图片轮播切换效果
- 原生JS实现图片轮播与淡入效果的简单实例
- 原生js实现无缝轮播图效果
- 第54天:原生js实现轮播图效果
- 原生js实现无限循环轮播图效果
- 利用tween,使用原生js实现模块回弹动画效果
- 原生js利用鼠标滚轮实现滚动到当前页面实现动画效果
- 利用BootStrap的Carousel.js实现轮播图动画效果
- 原生JS实现"旋转木马"效果的图片轮播插件
- 原生js实现网易轮播图效果
- 原生js图片轮播效果实现代码
- 原生JS实现轮播效果+学前端的感受(防止走火入魔)
- 1、js原生实现移动端手指滑动轮播图效果
- 原生JS改变透明度实现轮播效果
- 原生js实现焦点轮播图效果