javascript焦点图自动缓冲滚动
html中调用的js库,之前的随笔中有写,就不细说了,不明白的可以留言给我
1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title>Document</title> 7 <style type="text/css"> 8 * { 9 margin: 0; 10 padding: 0; 11 font-size: 12px; 12 } 13 14 #ptoDiv { 15 width: 400px; 16 height: 200px; 17 margin: 50px auto 0; 18 position: relative; 19 overflow: hidden; 20 } 21 22 #ptoBox { 23 width: 1600px; 24 height: 200px; 25 position: absolute; 26 left: 0; 27 } 28 29 #pto { 30 list-style-type: none; 31 } 32 33 .base { 34 width: 400px; 35 height: 200px; 36 float: left; 37 } 38 39 .base1 { 40 background: red; 41 } 42 43 .base2 { 44 background: blue; 45 } 46 47 .base3 { 48 background: pink; 49 } 50 51 .base4 { 52 background: green; 53 } 54 55 #btn1 { 56 position: absolute; 57 width: 30px; 58 height: 30px; 59 background: yellow; 60 top: 85px; 61 left: 0; 62 opacity: 0.5; 63 filter: alpha(opacity=50); 64 cursor: pointer; 65 } 66 67 #btn2 { 68 position: absolute; 69 width: 30px; 70 height: 30px; 71 background: yellow; 72 top: 85px; 73 right: 0; 74 opacity: 0.5; 75 filter: alpha(opacity=50); 76 cursor: pointer; 77 } 78 79 #cirBox { 80 width: 80px; 81 height: 16px; 82 position: absolute; 83 top: 160px; 84 left: 160px; 85 } 86 /*16*4+4*4*/ 87 88 #cir { 89 list-style-type: none; 90 position: relative; 91 } 92 93 #cir li { 94 float: left; 95 width: 16px; 96 height: 16px; 97 margin: 0 2px; 98 background: white; 99 } 100 101 #cir .on { 102 width: 16px; 103 height: 16px; 104 background: yellow; 105 } 106 </style> 107 <script src="changfunction.js"></script> 108 //这里是引用之前写的js库,方便一些 109 </head> 110 111 <body> 112 <div id="ptoDiv"> 113 <div id="ptoBox"> 114 <ul id="pto"> 115 <li class="base base1">one</li> 116 <li class="base base2">two</li> 117 <li class="base base3">three</li> 118 <li class="base base4">four</li> 119 </ul> 120 </div> 121 122 <span id="btn1"></span> 123 <span id="btn2"></span> 124 125 <div id="cirBox"> 126 <ul id="cir"> 127 <li class="on"></li> 128 <li></li> 129 <li></li> 130 <li></li> 131 132 </ul> 133 </div> 134 </div> 135 </body> 136 137 </html>
下面是js代码
<script> function $(id) { return typeof id === "string" ? document.getElementById(id) : id; } window.onload = function() { //定义两个按钮 var btnLeft = $("btn1"); var btnRight = $("btn2"); //pto为定义的图片集和 var pto = $("pto").getElementsByTagName("li"); //ptoBox为定义图片所在的div var ptoBox = $("ptoBox"); //cir为小框对应的集合 var cir = $("cir").getElementsByTagName("li"); //定义一个定时器 var timer = null; //Div为定义最外层的div var Div = $("ptoDiv"); //设置一个全局变量用来控制图片和小框的移动 var index = 0; //这个for循环是为了控制当鼠标移动至小框后,显示和隐藏图片 for (var i = 0; i < cir.length; i++) { //定义id为小框排序0~3 cir[i].id = i; //鼠标移动至小框触发事件 cir[i].onmouseenter = function() { //隐藏小框 clearOn(); //显示小框 showOn(this.id); //滚动至小框对应的图片 changeBtn(ptoBox, { left: (-400 * this.id) }); } } //这两队onmouseenter和onmouseleave为按钮的透明度变化 btnLeft.onmouseenter = function() { changeBtn(btnLeft, { opacity: 100 }); } btnLeft.onmouseleave = function() { changeBtn(btnLeft, { opacity: 50 }); } btnRight.onmouseenter = function() { changeBtn(btnRight, { opacity: 100 }); } btnRight.onmouseleave = function() { changeBtn(btnRight, { opacity: 50 }); } //右按钮绑定鼠标点击事件 btnRight.onclick = function() { //设置图片右滚循环 //原理就不细说了,以前的随笔里有解释 if (index < pto.length - 1) { index++; } else { index = 0; } //调用函数,用于每一张图片的滚动 changeBtn(ptoBox, { left: (-400 * index) }); //隐藏小框 clearOn(); //显示小框 showOn(index); } //左按钮绑定鼠标点击事件 btnLeft.onclick = function() { //图片左移判定,原理不多说看以前的随笔 if (index == 0) { index = pto.length - 1; } else { index--; } changeBtn(ptoBox, { left: (-400 * index) }); clearOn(); showOn(index); } //隐藏函数 function clearOn() { for (var i = 0; i < cir.length; i++) { cir[i].className = ""; } } //显示函数 function showOn(x) { for (var i = 0; i < cir.length; i++) { if (i == x) { cir[i].className = "on"; } index = x; } } //定义函数用于设置定时器 function start() { timer = setInterval(function() { btnRight.onclick(); }, 3000); } //定义函数用于清除定时器 function stop() { clearInterval(timer); } //当鼠标进入,则停止 Div.onmouseenter = stop; //当鼠标离开,则开始 Div.onmouseleave = start; //当进入页面就开始执行循环 start(); } </script>
个人学习随笔,不一定原创,不定时更新
[gitHub]: https://github.com/MicahZJ
[博客]: https://micahzj.github.io/MicahZJ.github.io/
[掘金]: https://juejin.im/user/5c1355ebe51d4521030cfe84/posts/
有关问题,或者想和本人讨论
欢迎通过本人QQ872219020联系
或者在github上提issues,虽然我不一定会去看o
[gitHub]: https://github.com/MicahZJ
[博客]: https://micahzj.github.io/MicahZJ.github.io/
[掘金]: https://juejin.im/user/5c1355ebe51d4521030cfe84/posts/
有关问题,或者想和本人讨论
欢迎通过本人QQ872219020联系
或者在github上提issues,虽然我不一定会去看o