加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

用CSS3编一个无限滚动列表的思路和方法是什么

发布时间:2023-10-06 14:58:07 所属栏目:语言 来源:
导读:将当前列表滚动至最后一项的末尾,然后瞬间切换回第一项

问题点

1.用什么方式实现无限轮播

这个问题就是列表滚动到最后时底部会留白(有多余空间)如何处理?

在列表的最后添加列表开头的重复项即可(如
将当前列表滚动至最后一项的末尾,然后瞬间切换回第一项
 
问题点
 
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>
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章