JS之左右焦点图
需求:鼠标放上去显示按钮,鼠标移开隐藏按钮;
点击左边按钮图片向右移动,点击右边按钮图片向左移动
步骤:1.获取数据源和相关元素
2.绑定事件
鼠标放上去显示,鼠标移开隐藏
3.书写驱动程序
点击左侧按钮图片向右移动,利用计数器模拟index值
点击右侧按钮图片向左移动,利用计数器模拟index值
代码示例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>滑动焦点图</title> <style type="text/css"> *{ padding: 0; margin:0; } .box{ 490px; height: 170px; padding: 2px; border:1px solid #ccc; margin:200px auto; } .inner ul{ list-style:none; 500%; position: absolute; left: 0px; } .inner{ 490px; height: 170px; overflow: hidden; position: relative; } li{ float: left; } .square { display: none; } .square span{ 40px; height: 40px; background: #000; color: #fff; cursor: pointer; position: absolute; top: 40%; font: 900 35px/40px "黑体"; font-weight: bold; text-align: center; opacity: 0.3; } .square .right{ right: 5px; left: auto; } </style> </head> <body> <div class="box" > <div class="inner" > <ul > <li><img src="../images/01.jpg"></li> <li><img src="../images/02.jpg"></li> <li><img src="../images/03.jpg"></li> <li><img src="../images/04.jpg"></li> <li><img src="../images/05.jpg"></li> </ul> <div class="square" > <span class="left"><</span> <span class="right">></span> </div><!-- square结束 --> </div><!-- inner结束 --> </div><!-- box结束 --> <script type="text/javascript"> //获取数据源和相关元素 var box = document.getElementById("box"); var ul = document.getElementById("ul"); var inner = document.getElementById("inner"); var imgWidth = inner.offsetWidth; var boxLeftRight = box.children[0].children[1]; var btnArr = boxLeftRight.children; //第一步,先显示和隐藏左右盒子 box.onmouseover = function(){ boxLeftRight.style.display = "block"; } box.onmouseout = function(){ boxLeftRight.style.display = "none"; } //点击右侧按钮向左移动图片,并用计数器模拟index值 var index = 0; btnArr[1].onclick = function(){ index++; //要限制index值最大不能超过ul.children.length-1,最小不能小于0 if (index>ul.children.length-1) { index = ul.children.length-1; } animate(ul,-index*imgWidth); } //点击左侧按钮向右移动图片,并用计数器模拟index值 btnArr[0].onclick = function(){ index--; if (index<0) {index=0;} animate(ul,-index*imgWidth); }
//动画效果函数(元素,目标值) function animate(ele,target){
//用定时器先清定时器 clearInterval(ele.timer);
//移动的步长 var speed = target>ele.offsetLeft?10:-10;
//设置定时器 ele.timer=setInterval(function(){ var val = target - ele.offsetLeft; ele.style.left = ele.offsetLeft+speed+"px";
//如果要停止盒子,就要清除定时器 if(Math.abs(val)<=Math.abs(speed)){ ele.style.left = target+"px"; clearInterval(ele.timer); } },10); } </script> </body> </html>