结构: box 包含 ul,ul 包含 4 个 li;ul 绝对定位.
复制 li-1,li-2 到第 li-4 后面, 为了区分于 li-1,li-2, 内容改为 li-5,li-6, 颜色不变. 此时 ul 包含 6 个 li.
需要注意的是, 移动的是 ul 这个大盒子而不是 li.
原理: 当 ul 绝对定位的 left 值等于 (li-1+li-2+li-3+li-4) 的宽度时, 利用 JavaScript 快速复原 left 值为 0 .
此时请注意盒子里面数字和颜色的变化!
示例代码:
html 代码
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
- <title>Document</title>
- <style media="screen">
- *{
- padding: 0;
- margin: 0;
- }
- ul,li {
- list-style: none;
- }
- img {
- vertical-align: top;
- }
- #box{
- width: 400px;
- height: 100px;
- margin: 100px auto;
- background-color: pink;
- position: relative;
- overflow: hidden;
- }
- #box ul {
- width: 2000px;
- position: absolute;
- left: 0;
- top: 0;
- }
- #box li {
- float: left;
- }
- .aa {
- width: 200px;
- height: 100px;
- }
- .li-1{
- background-color: #f6e659;
- }
- .li-2{
- background-color: #57fa4f;
- }
- .li-3{
- background-color: #3a8ef1;
- }
- .li-4{
- background-color: #c057f1;
- }
- </style>
- </head>
- <body>
- <div id="box">
- <ul>
- <li class="li-1 aa">li-1</li>
- <li class="li-2 aa">li-2</li>
- <li class="li-3 aa">li-3</li>
- <li class="li-4 aa">li-4</li>
- <li class="li-1 aa">li-5</li>
- <li class="li-2 aa">li-6</li>
- </ul>
- </div>
- </body>
- </html>
- <script type="text/javascript">
- var box = document.getElementById("box");
- var ul = box.children[0];
- var num = 0;
- timer = setInterval(fn,10);
- function fn() {
- num--;
- num <= -800 ? num = 0 : num;
- ul.style.left = num + "px";
- }
- </script>
来源: http://www.qdfuns.com/article/29306/e913c1389a6092c17fb2d86493715dd4.html