效果预览

思路
将当前列表滚动至最后一项的末尾,然后瞬间切换回第一项
问题点
1.用什么方式实现无限轮播
这个问题就是列表滚动到最后时底部会留白(有多余空间)如何处理?
在列表的最后添加列表开头的重复项即可(如图中的10后面出现的1,2,3,4,5既为重复项)。
重复项添加的数目要根据当前列表的高度和列表项的高度一起确定,例如:
列表高度150px
,列表项高度30px
,则需要在当前列表尾部添加150 / 30 = 5
项重复项才可以去除留白。
2.如何让用户无感知的切换回第一项
添加好重复项之后控制好切换时机,当列表滚动到最后一项的末尾(重复项第一项的开头)时,立即进行切换。例如:
列表项共10
项,则让列表向上移动到10 * 30px = 300px
时立即进行切换即可实现无感知切换
代码
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>列表无限滚动</title>
- </head>
- <style>
- .container {
- position: relative;
- background-color: #a4ffcc;
- /* 父容器需要有明确的高度 */
- height: 150px;
- width: 200px;
- margin: auto;
- overflow: hidden;
- }
-
- .container > .scroll-list {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- animation: scroll 6s linear infinite normal;
- }
-
- .container > .scroll-list > div {
- width: 100%;
- /* 滚动的项目需要有具体的高度 */
- height: 30px;
- background-color: #1ea7ff;
- display: flex;
- justify-content: center;
- align-items: center;
- color: white;
- }
-
- .container > .scroll-list > div:nth-child(2n) {
- background-color: #18d9f8;
- }
-
- @keyframes scroll {
- 100% {
- /* 需要滚动内容的总高度 */
- top: -300px;
- }
- }
- </style>
- <body>
- <div class="container">
- <div class="scroll-list">
- <div>1</div>
- <div>2</div>
- <div>3</div>
- <div>4</div>
- <div>5</div>
- <div>6</div>
- <div>7</div>
- <div>8</div>
- <div>9</div>
- <div>10</div>
- <!-- 下面代码是为了让滚动内容能够多展示一屏(去除留白/无限轮播):数量请自行根据高度进行计算 -->
- <div>1</div>
- <div>2</div>
- <div>3</div>
- <div>4</div>
- <div>5</div>
- </div>
- </div>
- </body>
- </html>
到此这篇关于CSS3实现列表无限滚动/轮播的文章就介绍到这了,更多相关css3列表滚动轮播内容请搜索w3xue以前的文章或继续浏览下面的相关文章,希望大家以后多多支持w3xue!