<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0; } #demo { width: 100px; height: 100px; background-color: red; position: absolute; /*一定要记得加定位*/ } </style> </head> <body> <button id="btn">奔跑吧盒子</button> <div id="demo"></div> <script> var timer = null; var btn = document.getElementById("btn"); var demo = document.getElementById("demo"); // 点击按钮 让盒子跑 btn.onclick = function () { clearInterval(timer);//防止重复设定定时器 timer = setInterval(function () { var target = 400; // 目标值 var leader = demo.offsetLeft; // 获取当前位置 var step = 10; if (leader < target) { leader = leader + step; demo.style.left = leader + "px"; } else { clearInterval(timer); } }, 15); }; </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0; } #demo { width: 100px; height: 100px; background-color: red; position: absolute; /*一定要记得加定位*/ } </style> </head> <body> <button id="btn1">奔跑到200吧盒子</button> <button id="btn2">奔跑到400吧盒子</button> <div id="demo"></div> <script> var timer = null; var btn1 = document.getElementById("btn1"); var btn2 = document.getElementById("btn2"); var demo = document.getElementById("demo"); //点击按钮 让盒子跑 btn1.onclick = function () { animate(demo, 200); }; btn2.onclick = function () { animate(demo, 400); }; //需求 能够让任意对象移动到指定位置 function animate(obj, target) { clearInterval(obj.timer); obj.timer = setInterval(function () { var leader = obj.offsetLeft; var step = 10; if (leader < target) { leader = leader + step; obj.style.left = leader + "px"; } else { clearInterval(obj.timer); } }, 15); } </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0; } #demo { width: 100px; height: 100px; background-color: red; position: absolute; /*一定要记得加定位*/ } </style> </head> <body> <button id="btn1">奔跑到200吧盒子</button> <button id="btn2">奔跑到400吧盒子</button> <div id="demo"></div> <script> var timer = null; var btn1 = document.getElementById("btn1"); var btn2 = document.getElementById("btn2"); var demo = document.getElementById("demo"); //点击按钮 让盒子跑 btn1.onclick = function () { animate(demo, 200); }; btn2.onclick = function () { animate(demo, 400); }; //需求 能够让任意对象移动到指定位置 function animate(obj, target) { clearInterval(obj.timer); obj.timer = setInterval(function () { var leader = obj.offsetLeft; var step = 10; step = leader < target ? step : -step; // step有了正负 if (Math.abs(leader - target) >= Math.abs(step)) { leader = leader + step; obj.style.left = leader + "px"; } else { obj.style.left = target + "px"; // 手动放到终点 clearInterval(obj.timer); } }, 15); } </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title></title> <style> .box { 490px; height: 170px; margin: 100px auto; padding: 5px; border: 1px solid #ccc; overflow: hidden; } .inner { 490px; height: 170px; background-color: pink; overflow: hidden; position: relative; } .inner ul { list-style: none; margin: 0; padding: 0; 1000%; position: absolute; top: 0; left: 0; } .inner li { float: left; } .inner li img { vertical-align: top; 490px; height: 170px; } /* 导航器 */ .square { position: absolute; right: 10px; bottom: 10px; } .square span { display: inline-block; 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/01.jpg" alt="" /></a> </li> <li> <a href="#"><img src="images/02.jpg" alt="" /></a> </li> <li> <a href="#"><img src="images/03.jpg" alt="" /></a> </li> <li> <a href="#"><img src="images/04.jpg" alt="" /></a> </li> <li> <a href="#"><img src="images/05.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> </div> </div> </div> <script> //需求:鼠标经过按钮 按钮排他 还要把ul以动画的方式移动到指定位置 //1.鼠标经过按钮 按钮排他 var box = document.getElementById('box') var inner = box.children[0] var ul = inner.children[0] var squareList = inner.children[1] var squares = squareList.children //所有按钮 var imgWidth = inner.offsetWidth //图片宽度 //给每一个按钮注册鼠标经过事件 for (var i = 0; i < squares.length; i++) { squares[i].index = i //把索引保存在自定义属性中 squares[i].onmouseover = function () { for (var j = 0; j < squares.length; j++) { squares[j].className = '' } //留下我自己 this.className = 'current' //目标 和 当前按钮索引有关 和 图片宽度有关 而且是负数 var target = -this.index * imgWidth animate(ul, target) } } function animate(obj, target) { console.log(target) clearInterval(obj.timer) obj.timer = setInterval(function () { var leader = obj.offsetLeft var step = 30 step = leader < target ? step : -step //step有了正负 if (Math.abs(leader - target) >= Math.abs(step)) { leader = leader + step obj.style.left = leader + 'px' } else { obj.style.left = target + 'px' //手动放到终点 clearInterval(obj.timer) } }, 15) } </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title></title> <style> #box { 490px; height: 270px; position: relative; border: 5px solid red; margin: 0 auto; overflow: hidden; } .ad { 490px; height: 270px; position: relative; } .ad ul { margin: 0; padding: 0; list-style: none; position: absolute; top: 0; 2940px; } .ad ul li { float: left; } .ad ul li img { 490px; } #arr { display: none; } #arr span { 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 id="box" class="all"> <div class="ad"> <ul id="imgList"> <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> <div id="arr"> <span id="left"><</span> <span id="right">></span> </div> </div> <script> //需求 点击左右箭头 以动画效果移动ul到指定位置 //找人 var box = document.getElementById('box') var ad = box.children[0] var ul = document.getElementById('imgList') var lis = ul.children var arr = document.getElementById('arr') var left = document.getElementById('left') var right = document.getElementById('right') var imgWidth = ad.offsetWidth //图片宽度 //alert(imgWidth); //1.鼠标经过盒子 显示arr 鼠标离开后隐藏 box.onmouseover = function () { arr.style.display = 'block' } box.onmouseout = function () { arr.style.display = 'none' } //2.点击右箭头 以动画的形式 把ul移动到指定的位置 var pic = 0 //记录当前显示的图片的索引 right.onclick = function () { //先判断 然后再去执行 移动ul的代码 if (pic === lis.length - 1) { //如果是最后一个图片的索引 就不能再执行了 return } pic++ //计算出接下来要显示的图片的索引 //目标 和pic有关 和 图片宽度有关 而且是负数 var target = -pic * imgWidth animate(ul, target) } left.onclick = function () { //先判断 然后再去执行 移动ul的代码 if (pic === 0) { //如果是第一个图片的索引 就不能再执行了 return } pic-- //计算出接下来要显示的图片的索引 //目标 和pic有关 和 图片宽度有关 而且是负数 var target = -pic * imgWidth animate(ul, target) } function animate(obj, target) { clearInterval(obj.timer) obj.timer = setInterval(function () { var leader = obj.offsetLeft var step = 30 step = leader < target ? step : -step //step有了正负 if (Math.abs(leader - target) >= Math.abs(step)) { leader = leader + step obj.style.left = leader + 'px' } else { obj.style.left = target + 'px' //手动放到终点 clearInterval(obj.timer) } }, 15) } </script> </body> </html>
HTML:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title></title> <style> * { padding: 0; margin: 0; list-style: none; border: 0; } .all { 500px; height: 200px; padding: 7px; border: 1px solid #ccc; margin: 100px auto; position: relative; } .screen { 500px; height: 200px; overflow: hidden; position: relative; } .screen li { 500px; height: 200px; overflow: hidden; float: left; } .screen ul { position: absolute; left: 0; top: 0px; 3000px; } .all ol { position: absolute; right: 10px; bottom: 10px; line-height: 20px; text-align: center; } .all ol li { float: left; 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 { 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/01.jpg" width="500" height="200" /></li> <li><img src="images/02.jpg" width="500" height="200" /></li> <li><img src="images/03.jpg" width="500" height="200" /></li> <li><img src="images/04.jpg" width="500" height="200" /></li> <li><img src="images/05.jpg" width="500" height="200" /></li> </ul> <ol></ol> </div> <div id="arr"> <span id="left"><</span> <span id="right">></span> </div> </div> <script> var timer = null //需求 实现一个 完整的轮播图 //找人 var box = document.getElementById('box') var screen = box.children[0] var ul = screen.children[0] var ol = screen.children[1] var ulLis = ul.children //所有的广告 var imgWidth = screen.offsetWidth //alert(imgWidth); //箭头 var arr = document.getElementById('arr') var left = document.getElementById('left') var right = document.getElementById('right') //1.动态生成结构 //1.1根据图片数量动态生成按钮 for (var i = 0; i < ulLis.length; i++) { var li = document.createElement('li') li.innerHTML = i + 1 ol.appendChild(li) } var olLis = ol.children //所有的按钮 olLis[0].className = 'current' //1.2克隆第一张广告 放到最后 var firstImg = ulLis[0].cloneNode(true) ul.appendChild(firstImg) //2.鼠标经过按钮 //鼠标经过按钮 按钮排他 以动画的形式把ul移动到指定的位置 for (var j = 0; j < olLis.length; j++) { olLis[j].index = j olLis[j].onmouseover = function () { //排他 //干掉所有人 for (var k = 0; k < olLis.length; k++) { olLis[k].className = '' } //留下我自己 this.className = 'current' //以动画的形式把ul移动到指定的位置 //目标 和 按钮索引有关 和 图片宽度有关 而且是负数 var target = -this.index * imgWidth animate(ul, target) //还要把几个索引统一 pic = this.index square = this.index } } //3.鼠标点击箭头 //3.1鼠标经过盒子 显示箭头 鼠标离开盒子 隐藏箭头 box.onmouseover = function () { arr.style.display = 'block' //显示箭头 clearInterval(timer) //停止自动播放 } box.onmouseout = function () { arr.style.display = 'none' //隐藏箭头 timer = setInterval(right.onclick, 1000) //从新自动播放 } //3.2点击右箭头 以动画的形式把ul移动到指定的位置 var pic = 0 //记录当前正在显示的图片的索引 var square = 0 //记录当前正在亮起的按钮的索引 right.onclick = function () { //先判断 如果是最后一个图片 先让ul瞬间跳会开始位置 然后索引也要归零 if (pic === ulLis.length - 1) { ul.style.left = 0 + 'px' pic = 0 //索引也要归零 } pic++ //计算出将要显示的图片的索引 //目标 和pic有关 和 图片宽度有关 而且是负数 var target = -pic * imgWidth animate(ul, target) //按钮也要跟着走 if (square < olLis.length - 1) { square++ } else { square = 0 } //干掉所有人 for (var i = 0; i < olLis.length; i++) { olLis[i].className = '' } //留下对应的 olLis[square].className = 'current' } left.onclick = function () { //先判断 如果是第一个图片 先让ul瞬间跳到最后的位置 然后索引也要到最后 if (pic === 0) { ul.style.left = -(ulLis.length - 1) * imgWidth + 'px' pic = ulLis.length - 1 //索引也要归零 } pic-- //计算出将要显示的图片的索引 //目标 和pic有关 和 图片宽度有关 而且是负数 var target = -pic * imgWidth animate(ul, target) //按钮也要跟着走 if (square > 0) { square-- } else { square = olLis.length - 1 } //干掉所有人 for (var i = 0; i < olLis.length; i++) { olLis[i].className = '' } //留下对应的 olLis[square].className = 'current' } timer = setInterval(right.onclick, 1000) //自动播放 function animate(obj, target) { clearInterval(obj.timer) obj.timer = setInterval(function () { var leader = obj.offsetLeft var step = 30 step = leader < target ? step : -step //step有了正负 if (Math.abs(leader - target) >= Math.abs(step)) { leader = leader + step obj.style.left = leader + 'px' } else { obj.style.left = target + 'px' //手动放到终点 clearInterval(obj.timer) } }, 15) } </script> </body> </html>