俗话说:‘能用css解决的动画,绝不用js来实现’
下面是利用 css中的 animation 实现跑马灯效果
这个我采了坑 ,to {left:1500px},这里的距离是所有图片的宽度(不包含无缝复制的哈)
我一直设置的是container 一屏的宽度,一直不流畅。所以在此纪录下。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>京东跑马灯</title> <style> .container { box-sizing: border-box; overflow: hidden; position: relative; width: 1000px; height: 200px; margin: 50px auto 0px; border: 1px solid red; } .container .wrapper { position: absolute; top: 0px; left: 0px; box-sizing: border-box; width: 2200px; height: 200px; } .container .wrapper .slider { box-sizing: border-box; float: left; width: 200px; height: 200px; padding: 10px 20px; } .container .wrapper .slider span { display: block; /* 不换行三件套 */ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .container .wrapper .slider img { width: 150px; height: 150px; } .container .wrapper { animation: test 5s infinite linear; } @keyframes test { from { left: 0px; } to { left: -1200px; } } .container:hover .wrapper { animation-play-state: paused; } </style> </head> <body> <div class="container "> <div class="wrapper "> <!-- 每一张图片slider --> <div class="slider"> <span>天地壹号 清爽酸甜 苹果醋22222222222</span> <img src="./img/2.jpg" alt="js 小案例 跑马灯效果"> </div> <div class="slider"> <img src="./img/3.jpg" alt="js 小案例 跑马灯效果"> <span>天地壹号 清爽酸甜 苹果醋</span> </div> <div class="slider"> <span>天地壹号 清爽酸甜 苹果醋</span> <img src="./img/4.jpg" alt="js 小案例 跑马灯效果"> </div> <div class="slider"> <img src="./img/5.jpg" alt="js 小案例 跑马灯效果"> <span>天地壹号 清爽酸甜 苹果醋</span> </div> <div class="slider"> <img src="./img/6.jpg" alt="js 小案例 跑马灯效果"> <span>天地壹号 清爽酸甜 苹果醋</span> </div> <div class="slider"> <img src="./img/7.jpg" alt="js 小案例 跑马灯效果"> <span>天地壹号 清爽酸甜 苹果醋</span> </div> <!-- 无缝的 --> <div class="slider"> <span>天地壹号 清爽酸甜 无缝的苹果醋</span> <img src="./img/2.jpg" alt="js 小案例 跑马灯效果"> </div> <div class="slider"> <img src="./img/3.jpg" alt="js 小案例 跑马灯效果"> <span>天地壹号 清爽酸甜 苹果醋</span> </div> <div class="slider"> <span>天地壹号 清爽酸甜 苹果醋</span> <img src="./img/4.jpg" alt="js 小案例 跑马灯效果"> </div> <div class="slider"> <img src="./img/5.jpg" alt="js 小案例 跑马灯效果"> <span>天地壹号 清爽酸甜 苹果醋</span> </div> </div> </div> </body> </html>
当然你也可以使用js代码实现哦!html和css是一样的
var wrapper = document.querySelector('.wrapper'), timer = null, step = -10, left = 0; window.onload = function () { timer = setInterval(autoMove, 100) } function autoMove() { left = getCss(wrapper, 'left'); left += step if (left < -1200) { wrapper.style.left = 0 + 'px'; wrapper.style.transition = 'all 0s' left = getCss(wrapper, 'left'); } console.log(left); wrapper.style.left = left + 'px'; wrapper.style.transition = 'all .3s' } function getCss(culEle, attr) { return parseFloat(window.getComputedStyle(culEle, null)[attr]); }