当前位置: 首页 > news >正文

前端实现无缝自动滚动动画

1. 前言: 前端使用HTML+CSS实现一个无缝滚动的列表效果

示例图:

示例图

2. 源码

  1. html部分源码:
<!--* @Author: wangZhiyu <w3209605851@163.com>* @Date: 2024-07-05 23:33:20* @LastEditTime: 2024-07-05 23:49:09* @LastEditors: wangZhiyu <w3209605851@163.com>* @FilePath: \无缝自动滚动动画\index.html* @Descripttion: 无缝自动滚动动画
-->
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>无缝自动滚动动画</title><link rel="stylesheet" href="./index.css">
</head><body><div class="container"><div class="scrollArea"><!-- 第一段内容 --><div class="item">内容1</div><div class="item">内容2</div><div class="item">内容3</div><div class="item">内容4</div><div class="item">内容5</div><!-- 重复循环一次第一段内容 --><div class="item">内容1</div><div class="item">内容2</div><div class="item">内容3</div><div class="item">内容4</div><div class="item">内容5</div></div></div>
</body></html>
  1. css部分源码:
* {margin: 0;padding: 0;
}/* 大盒子样式设置,注意大盒子必须要指定宽度,并且设置overflow属性为hidden */
.container {width: 200px;margin: 0 auto;margin-top: 200px;height: 125px;overflow: hidden;background-color: rgba(0, 0, 0, 0.05);text-align: center;
}/* 大盒子的子元素,列表内容的父元素,设置滚动动画 */
.scrollArea {/* 设置里的动画时长根据不同的情况设置即可 */animation: scroll 3s linear infinite;
}/* 设置当鼠标悬停时,自动挺尸滚动 */
.scrollArea:hover {animation-play-state: paused;
}/* 滚动动画 */
@keyframes scroll {0% {}100% {transform: translateY(-50%);}
}

3. 原理解释:

  1. 为什么需要两个相同的列表:

    答: 因为当第一个列表滚动到顶部时,第二个列表也会随之向上滚动,就形成了视差效果,向上滚动了一个元素区域,下面就填充进来了一个元素区域,并且当滚动完毕之后,会重新回到初识位置继续滚动,也会形成视差效果,由此实现了无缝滚动

  2. 为什么需要在大盒子与列表元素之间再添加一个盒子进去:

    答: 这个盒子的主要作用是用来滚动的,因为大盒子设置了overflow:hidden,所以大盒子与列表元素中间的盒子滚动时是不会超出大盒子的范围的,并且这个盒子也起到了显示元素的显示范围的作用

4. 总结

以上就是本期分享的全部内容了,最近偶然又遇到了这个需求,就单独拿出来做了个demo🙂

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【leetcode刷题笔记】02.复写零
  • 华为HCIP Datacom H12-821 卷28
  • Postman使用教程【项目实战】
  • Java 8革新:现代编程的全新标准与挑战
  • 《梦醒蝶飞:释放Excel函数与公式的力量》10.4 IMREAL函数
  • C#字符串格式化的方式
  • nginx的正向代理和反向代理
  • 微软 Edge 浏览器全解析
  • Kylin系列(三)安装与配置:搭建你的第一个 Kylin 环境
  • 网络防御保护——网络安全概述
  • 第二周:李宏毅机器学习笔记
  • Android知识收集
  • openGauss配置vscode编译调试环境
  • Python: 分块读取文本文件
  • SQL注入如何判断数据库类型
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Angular 响应式表单 基础例子
  • Angular6错误 Service: No provider for Renderer2
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java超时控制的实现
  • JSONP原理
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • PermissionScope Swift4 兼容问题
  • Phpstorm怎样批量删除空行?
  • session共享问题解决方案
  • vue总结
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 好的网址,关于.net 4.0 ,vs 2010
  • 前端技术周刊 2019-02-11 Serverless
  • 数据科学 第 3 章 11 字符串处理
  • 详解NodeJs流之一
  • 用quicker-worker.js轻松跑一个大数据遍历
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • Prometheus VS InfluxDB
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​LeetCode解法汇总518. 零钱兑换 II
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #QT(一种朴素的计算器实现方法)
  • (1)(1.13) SiK无线电高级配置(五)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (23)Linux的软硬连接
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (LeetCode) T14. Longest Common Prefix
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Oracle)SQL优化技巧(一):分页查询
  • (区间dp) (经典例题) 石子合并
  • (十二)Flink Table API
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .“空心村”成因分析及解决对策122344
  • .net 7 上传文件踩坑
  • .net 8 发布了,试下微软最近强推的MAUI