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

news2024/11/20 11:30:30

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🙂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1899527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析:基于STAR+FeatureCounts的RNA-seq分析全流程流程

流程主要包含两部分组成&#xff1a; 第一部分&#xff1a;二代测序数据的Raw data的fastq文件转换成Gene Count或者Features Counts表&#xff08;行是Features&#xff0c;列是样本名&#xff09;&#xff1b;第二部分&#xff1a;对counts 表进行统计分析&#xff0c;并对其…

印尼网络安全治理能力观察

在全国国际机场的移民服务完全瘫痪 100 多个小时后&#xff0c;印尼政府承认其新成立的国家数据中心 (PDN) 遭受了网络攻击。 恶意 Lockbit 3.0 勒索软件加密了存储在中心的重要数据&#xff0c;其背后的黑客组织要求支付 800 万美元的赎金。 不幸的是&#xff0c;大多数数据…

纸电混合阶段,如何在线上实现纸电会档案的协同管理?

随着国家政策的出台和引导&#xff0c;电子会计档案的管理越来越规范&#xff0c;电子会计档案建设成为打通财务数字化最后一公里的重要一环。但是&#xff0c;当前很多企业的财务管理仍处于电子档案和纸质档案并行的阶段&#xff0c;如何能将其建立合理清晰关联&#xff0c;统…

Hugging Face 全球政策负责人首次参加WAIC 2024 前沿 AI 安全和治理论坛

Hugging Face 全球政策负责人艾琳-索莱曼 &#xff08; Irene Solaiman &#xff09;将参加7月5日在上海举办的WAIC-前沿人工智能安全和治理论坛&#xff0c;并在现场进行主旨演讲和参加圆桌讨论。具体时间信息如下&#xff1a;主旨演讲&#xff1a;开源治理的国际影响时间 &am…

Spring框架Mvc(2)

1.传递数组 代码示例 结果 2.集合参数存储并进行存储类似集合类 代码示例 postman进行测试 &#xff0c;测试结果 3.用Json来对其进行数据的传递 &#xff08;1&#xff09;Json是一个经常使用的用来表示对象的字符串 &#xff08;2&#xff09;Json字符串在字符串和对象…

Java项目:基于SSM框架实现的共享客栈管理系统分前后台【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的共享客栈管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功能…

20行代码写一个简单 Blazor 时钟组件

群里有些同学询问怎么实现定时刷新界面, 那咱们写点试试看能不能达到需求. 代码比较简单, 就是Task每秒刷新页面. 然后封装为组件实现只局部刷新. Demo TimerAme.razor <p>Label DateTime.Now.ToLongTimeString()</p>TimerAme.razor.cs using Microsoft.AspNet…

计算机应用数学--第三次作业

第三次作业计算题编程题1 基于降维的机器学习2 深度学习训练方法总结 第三次作业 计算题 (15 分&#xff09;对于给定矩阵 A A A&#xff08;规模为 42&#xff09;&#xff0c;求 A A A 的 SVD&#xff08;奇异值分解&#xff09;&#xff0c;即求 U U U&#xff0c; Σ …

YOLOX算法实现血细胞检测

原文:YOLOX算法实现血细胞检测 - 知乎 (zhihu.com) 目标检测一直是计算机视觉中比较热门的研究领域。本文将使用一个非常酷且有用的数据集来实现YOLOX算法,这些数据集具有潜在的真实应用场景。 问题陈述 数据来源于医疗相关数据集,目的是解决血细胞检测问题。任务是通过显微…

vue require引入静态文件报错

如果是通过向后端发送请求&#xff0c;动态的获取对应的文件数据流很容易做到文件的显示和加载。现在研究&#xff0c;一些不存放在后端而直接存放在vue前端项目中的静态媒体文件如何加载。 通常情况下&#xff0c;vue项目的图片jpg&#xff0c;png等都可以直接在/ass…

库存监控和自动通知工具(用来抢商品)

这段代码是一个使用 Python 编写的简单库存监控脚本&#xff0c;其目的是定期检查某个网页上的商品是否缺货&#xff0c;并通过电子邮件通知用户。 这段代码作为库存监控和自动通知工具&#xff0c;对于想要购买如富士相机这类可能经常缺货的商品的用户来说&#xff0c;具有以…

shell脚本awk中使用for循环

今天想使用shell脚本处理一ini文件下的ip地址&#xff0c;也就是INTRANET&#xff0c;前面的ip地址&#xff0c;折腾挺久。文件格式如下&#xff1a; 正确代码&#xff1a; grep -E INTRANET /home/aaaa/bbbb/hostinfo.ini | awk -F , {for(i1; i<NF; i) if($i~"INT…

谷粒商城学习-09-配置Docker阿里云镜像加速及各种docker问题记录

文章目录 一&#xff0c;配置Docker阿里云镜像加速二&#xff0c;Docker安装过程中的几个问题1&#xff0c;安装报错&#xff1a;Could not resolve host: mirrorlist.centos.org; Unknown error1.1 检测虚拟机网络1.2 重设yum源 2&#xff0c;报错&#xff1a;Could not fetch…

web服务之Nginx

web服务之Nginx &#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Li…

类继承-多继承虚继承

#include<iostream> using namespace std; class A1 { public:int a 10;}; class A2 { public:int b 20; }; class B :public A1, public A2 { public:int c 30; }; int main(){B b;cout << b.a << b.b << b.c << endl;return 0; } 如果基类…

Vue3从入门到精通(三)

vue3插槽Slots 在 Vue3 中&#xff0c;插槽&#xff08;Slots&#xff09;的使用方式与 Vue2 中基本相同&#xff0c;但有一些细微的差异。以下是在 Vue3 中使用插槽的示例&#xff1a; // ChildComponent.vue <template><div><h2>Child Component</h2&…

ctfshow web入门 nodejs

web334 有个文件下载之后改后缀为zip加压就可以得到两个文件 一个文件类似于index.php 还有一个就是登录密码登录成功就有flag username:ctfshow password:123456因为 return name!CTFSHOW && item.username name.toUpperCase() && item.password passwor…

峰与谷00

题目链接 峰与谷 题目描述 注意点 nums.length < 10000 解答思路 首先想到的是将数组中的元素都存到优先队列中&#xff0c;然后取一半的元素插入到数组奇数位置&#xff0c;再将剩下一半的元素插入到数组偶数位置即可&#xff0c;但是时间上并不理想参照题解可以从局部…

动态黑窗口打印文字404页面源码

动态黑窗口打印文字404页面源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 动态黑窗口打印文字404页面源码

【C++】 解决 C++ 语言报错:Invalid Use of ‘void’ Expression

文章目录 引言 在 C 编程中&#xff0c;错误使用 void 表达式&#xff08;Invalid Use of ‘void’ Expression&#xff09;是常见的编译错误之一。void 类型表示没有返回值&#xff0c;当程序试图将 void 类型的表达式用作有值表达式时&#xff0c;会引发此错误。本文将深入探…