<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0 } ul { list-style: none } img { vertical-align: top } .box { width: 730px; height: 454px; margin: 100px auto; padding: 5px; border: 1px solid #ccc; } .inner { width: 730px; height: 454px; background-color: pink; overflow: hidden; position: relative; } .inner ul { width: 1000%; position: absolute; top: 0; left: 0; } .inner li { float: left; } .square { position: absolute; right: 10px; bottom: 10px; } .square span { display: inline-block; width: 16px; height: 16px; background-color: #fff; text-align: center; line-height: 16px; cursor: pointer; } .square span.current { background-color: orangered; color: #fff; } </style> </head> <body> <div class="box" id="box"> <div class="inner"><!--相框--> <ul> <li><a href="#"><img src="images/1.jpg" alt=""/></a></li> <li><a href="#"><img src="images/2.jpg" alt=""/></a></li> <li><a href="#"><img src="images/3.jpg" alt=""/></a></li> <li><a href="#"><img src="images/4.jpg" alt=""/></a></li> <li><a href="#"><img src="images/5.jpg" alt=""/></a></li> <li><a href="#"><img src="images/6.jpg" alt=""/></a></li> </ul> <div class="square"> <span class="current">1</span> <span>2</span> <span>3</span> <span>4</span> <span>5</span> <span>6</span> </div> </div> </div> <script src="common.js"></script> <script> //获取最外面的div var box = my$("box"); //获取相框 var inner = box.children[0]; //获取相框宽度 var imgWidth = inner.offsetWidth; //获取ul var ulObj = inner.children[0]; //获取所有的span var spans = inner.children[1].children; //循环遍历所有的span注册鼠标进入事件 for (var i = 0; i < spans.length; i++) { //循环的时候把索引保存到每个span的自定义属性中 spans[i].setAttribute("index", i); //注册鼠标进入事件 spans[i].onmouseover = function () { //去掉所有的span的背景颜色 for (var j = 0; j < spans.length; j++) { //移除了每个span标签的类样式 spans[j].removeAttribute("class"); } //设置当前的span的背景颜色 this.className = "current"; //移动ul(每个图片的宽*鼠标放在这个按钮的索引值) //获取当前鼠标进入的span的索引 var index = this.getAttribute("index"); animate(ulObj, -index * imgWidth); }; } //设置任意的一个元素,移动到指定的目标位置 function animate(element, target) { clearInterval(element.timeId); //定时器的id值存储到对象的一个属性中 element.timeId = setInterval(function () { //获取元素的当前的位置,数字类型 var current = element.offsetLeft; //每次移动的距离 var step = 10; step = current < target ? step : -step; //当前移动到位置 current += step; if (Math.abs(current - target) > Math.abs(step)) { element.style.left = current + "px"; } else { //清理定时器 clearInterval(element.timeId); //直接到达目标 element.style.left = target + "px"; } }, 5); } </script> </body> </html>
转载于:https://www.cnblogs.com/cuilichao/p/9407948.html