CSS3实现列表无限滚动/轮播效果


Posted in HTML / CSS onJune 23, 2021

效果预览

CSS3实现列表无限滚动/轮播效果

思路

将当前列表滚动至最后一项的末尾,然后瞬间切换回第一项

问题点

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列表滚动轮播内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

HTML / CSS 相关文章推荐
手把手教你用纯css3实现轮播图效果实例
May 04 HTML / CSS
CSS3支持IE6, 7, and 8的边框border属性
Dec 28 HTML / CSS
CSS书写规范、顺序和命名规则
Mar 06 HTML / CSS
css3媒体查询中device-width和width的区别详解
Mar 27 HTML / CSS
基于Canvas+Vue的弹幕组件的实现
Jul 23 HTML / CSS
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
Dec 13 HTML / CSS
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
Jan 09 HTML / CSS
HTML5拖拽的简单实例
May 30 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
Dec 20 HTML / CSS
5个HTML5的常用本地存储方式详解与介绍
Mar 27 HTML / CSS
css3手动实现pc端横向滚动
Jun 21 HTML / CSS
HTML5页面音频自动播放的实现方式
Jun 21 #HTML / CSS
html中显示特殊符号(附带特殊字符对应表)
CSS中Single Div 绘图技巧的实现
CSS几步实现赛博朋克2077风格视觉效果
教你做个可爱的css滑动导航条
Html5大屏数据可视化开发的实现
关于html选择框创建占位符的问题
Jun 09 #HTML / CSS
You might like
PHP环境搭建最新方法
2006/09/05 PHP
php max_execution_time执行时间问题
2011/07/17 PHP
php获取bing每日壁纸示例分享
2014/02/25 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
2015/09/23 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
javascript实现Emrips反质数枚举的示例代码
2017/12/06 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
Python Mysql自动备份脚本
2008/07/14 Python
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
在Python中使用列表生成式的教程
2015/04/27 Python
python编程实现希尔排序
2017/04/13 Python
python使用epoll实现服务端的方法
2018/10/16 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
python源文件的字符编码知识点详解
2021/03/04 Python
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
高校毕业生登记表自我鉴定
2013/11/03 职场文书
管理科学大学生求职信
2013/11/13 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
2019各种保证书范文
2019/06/24 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技