不需要 JavaScript,仅用 CSS 实现时间轴动画效果

news/2024/11/24 12:47:33/

前言

当我们在网站上寻找信息或者浏览内容时,一个美观且简洁的时间轴能够让我们更加清晰地了解信息的时间顺序。但是,使用 javascript 编写时间轴可能会让一些人望而却步。那么,有没有一种更简单的方法来实现时间轴呢?答案是肯定的!本文将介绍一种仅使用 css 实现的时间轴,不仅美观、简单,而且还有动画效果,让你的网站内容更加生动有趣。


实现思路

  1. 每次添加事件要调整标签中 top 的距离,每次递增;
  2. 每次添加事件要调整动画的时长,呈现均衡的效果;
  3. 每次添加事件要增加竖线的高度,根据自己需求而定。

源码如下

<template><div><!-- 最外层的盒子 --><div class="outerBox"><!-- 第一大块 --><!-- 左边整体的内容 --><div class="dateBox"><h2>2021/12/31</h2><div><p>发生的事件</p><ul>事件的详细内容事件的详细内容事件的详细内容事件的详细内容事件的详细内容</ul></div></div><!-- 右边整体的内容 --><div class="dateLeftBox" style="top: 120px;"><h2>2021/12/25</h2><div><p>发生的事件</p><ul>事件的详细内容</ul></div></div><!-- 第二大块 --><!-- 左边整体的内容 --><div class="dateBox" style="top: 240px;"><h2>2021/12/23</h2><div><p>发生的事件</p><ul>事件的详细内容</ul></div></div><!-- 右边整体的内容 --><div class="dateLeftBox" style="top: 360px;"><h2>2021/12/13</h2><div><p>发生的事件</p><ul>事件的详细内容</ul></div></div><!-- 第三大块 --><!-- 左边整体的内容 --><div class="dateBox" style="top: 480px;"><h2>2020/12/23</h2><div><p>发生的事件</p><ul>事件的详细内容</ul></div></div><!-- 右边整体的内容 --><div class="dateLeftBox" style="top: 600px;"><h2>2020/05/14</h2><div><p>发生的事件</p><ul>事件的详细内容</ul></div></div><!-- 第四大块 --><!-- 左边整体的内容 --><div class="dateBox" style="top: 720px;"><h2>2020/12/23</h2><div><p>发生的事件</p><ul>事件的详细内容</ul></div></div><!-- 右边整体的内容 --><div class="dateLeftBox" style="top: 840px;"><h2>2020/05/14</h2><div><p>发生的事件</p><ul>事件的详细内容</ul></div></div></div></div>
</template><script>
export default {};
</script><style scoped>
.outerBox {/* 竖线样式 高度根据事件的多少调整*/width: 5px;height: 900px;background: rgb(221, 221, 221);margin: 40px auto;position: relative;-webkit-animation: heightSlide 2s linear;
}@-webkit-keyframes heightSlide {/* 竖线的动画效果:以百分比来规定改变发生的时间,0% 是动画的开始时间,100% 动画的结束时间 */0% {height: 0;}100% {height: 900px;}
}.outerBox:after {/* 竖线末尾文字样式 */content: "未完待续";width: 100px;color: rgb(84, 84, 85);position: absolute;margin-left: -48px;text-align: center;bottom: -30px;-webkit-animation: showIn 5.5s ease;
}.outerBox .dateBox,
.outerBox .dateLeftBox {/* 球球的样式 */position: absolute;margin-left: -4px;margin-top: -10px;width: 13px;height: 13px;border-radius: 50%;border: 4px solid rgb(221, 221, 221);background: rgb(31, 122, 252);-webkit-transition: all 0.5s;-webkit-animation: showIn ease;
}.outerBox .dateBox:nth-child(1) {/* 第一个事件 设置动画在几秒内完成 */-webkit-animation-duration: 1s;
}.outerBox .dateLeftBox:nth-child(2) {/* 第二个事件 设置动画在几秒内完成 */-webkit-animation-duration: 1.5s;
}.outerBox .dateBox:nth-child(3) {/* 第三个事件 设置动画在几秒内完成 */-webkit-animation-duration: 2s;
}.outerBox .dateLeftBox:nth-child(4) {/* 第四个事件 设置动画在几秒内完成 */-webkit-animation-duration: 2.5s;
}.outerBox .dateBox:nth-child(5) {/* 第五个事件 设置动画在几秒内完成 */-webkit-animation-duration: 3s;
}.outerBox .dateLeftBox:nth-child(6) {/* 第六个事件 设置动画在几秒内完成 */-webkit-animation-duration: 3.5s;
}.outerBox .dateBox:nth-child(7) {/* 第七个事件 设置动画在几秒内完成 */-webkit-animation-duration: 4s;
}.outerBox .dateLeftBox:nth-child(8) {/* 第八个事件 设置动画在几秒内完成 */-webkit-animation-duration: 4.5s;
}@-webkit-keyframes showIn {/* 球球、竖线、左右的模块的动画 */0%,70% {opacity: 0;}100% {opacity: 1;}
}.outerBox .dateBox h2,
.outerBox .dateLeftBox h2 {/* 日期的样式 */position: absolute;margin-left: -120px;margin-top: 3px;color: rgb(84, 84, 85);font-size: 14px;cursor: pointer;/* -webkit-animation: showIn 3s ease; */
}.outerBox .dateLeftBox h2 {/* 右边日期的样式 */margin-left: 60px;width: 100px;
}.outerBox .dateBox:hover,
.outerBox .dateLeftBox:hover {/* 触摸事件后球球的样式 */border: 4px solid rgb(195, 195, 195);background: rgb(143, 189, 253);box-shadow: 0 0 2px 2px rgba(255, 255, 255, 0.4);
}.outerBox .dateBox div,
.outerBox .dateLeftBox div {/* 左右事件的样式 */position: absolute;top: 50%;margin-top: -10px;left: 50px;width: 300px;height: 22px;border: 2px solid rgb(84, 84, 85);border-radius: 6px;z-index: 2;overflow: hidden;cursor: pointer;/* -webkit-animation: showIn 5s ease; */-webkit-transition: all 0.5s;
}.outerBox .dateLeftBox div {/* 左边事件的样式 */left: -337px;
}.outerBox .dateBox div:hover,
.outerBox .dateLeftBox div:hover {/* 触摸事件后的高度 */height: 68px;
}.outerBox .dateBox div p,
.outerBox .dateLeftBox div p {/* 左右事件的字体样式 */color: rgb(84, 84, 85);font-weight: bold;text-align: center;
}.outerBox .dateBox:before,
.outerBox .dateLeftBox:before {/* 右边事件的角标样式 */content: "";position: absolute;top: -4px;left: 37px;width: 0px;height: 0px;border: 7px solid transparent;border-right: 7px solid rgb(84, 84, 85);z-index: -1;-webkit-animation: showIn 5s ease;
}.outerBox .dateLeftBox:before {/* 左边事件的角标样式 */left: -38px;border: 7px solid transparent;border-left: 7px solid rgb(84, 84, 85);
}.outerBox .dateBox div ul,
.outerBox .dateLeftBox div ul {/* 左右事件触摸展开后内容的样式 */list-style: none;width: 300px;padding: 4px;border-top: 2px solid rgb(84, 84, 85);color: rgb(84, 84, 85);font-size: 14px;
}
</style>

实现效果

在这里插入图片描述


http://www.ppmy.cn/news/201006.html

相关文章

让时间在这一刻静止

我要以怎样的速度去生活&#xff0c;才能与你不期而遇&#xff1f; 这一切重要吗&#xff1f;不重要。 一转身&#xff0c;就是一辈子。 我要这天&#xff0c;再遮不住我眼&#xff1b; 要这地&#xff0c;再埋不了我心&#xff1b; 要这众生&#xff0c;都明白我意&#x…

动画(uwp)

一、动画概要 动画实质上是一系列静止的图像&#xff0c;随着时间的推移不断进行切换&#xff0c;由于人眼的视觉反应存在误差&#xff0c;使连续播放的静止画面看起来是运动的&#xff0c;而某段时间内所切换的每一个静态画面被称为"帧"。假设在1秒内播放了25个静态…

Flume——高可用的、高可靠的、分布式日志收集系统

flume 第一章 是什么介绍架构 第二章 安装简单案例实现(单节点实现)设置多Agent流(集群配置)设置多Agent流的拓展企业常见架构模式流复用模式 第三章 Flume Source一 netcat源二 avro源三 exec源 利用exec源监控某个文件 四 JMS源五 Spooling Directory 源 利用Spooling Direc…

大数据常用技术梳理

大数据技术梳理 大数据初识大数据基础Linux基础高并发技术 Hadoop体系Hadoop技术(一)分布式文件系统HDFSHadoop技术(二)资源管理器YARN和分布式计算框架MapReduceHadoop技术(三)数据仓库工具HiveHadoop技术(四)分布式、面向列的开源数据库HBase 高级技术CDH集群管理Scala——多…

解决record on line 2: wrong number of fields

背景 基于"encoding/csv"库解析。 共解析多个文档&#xff0c;只有这一个解析有问题&#xff0c;所用代码一致&#xff0c;进行比较后 发现该文档和其它文档不同&#xff0c;其它文档是第一行就是列名&#xff0c;下面都是数据&#xff1b; 而这个文档前两行有数据且…

Linux之理解文件系统——文件的管理

文章目录 前言一、磁盘1.磁盘的物理结构2.磁盘的存储结构3.磁盘的逻辑结构 二、文件系统与inode1.文件在磁盘中是如何存储的&#xff1f;2.对文件进行操作 三、软硬链接1.软链接创建软链接&#xff1a;inode删除软链接&#xff1a;软链接的作用&#xff1a; 2.硬链接创建硬链接…

hp服务器修改风扇转速,如何改变惠普笔记本风扇转速

满意答案 sidm6926 2014.06.11 采纳率&#xff1a;56% 等级&#xff1a;11 已帮助&#xff1a;1174人 您好&#xff0c;感谢您选择惠普产品。 一、您这款机器没有好的方法可以调节机器风扇的转数的。 二、HP电脑一般采用小型高效的风扇进行散热&#xff1b;在机器在使用一段…

hp移动工作站 linux,戴尔推出三款Precision移动工作站产品 采用Ubuntu Linux操作系统...

访问购买页面: 它采用Intel Xeon E或第9代Intel Core处理器&#xff0c;最多8个内核&#xff0c;高达64GB内存&#xff0c;高达4TB的存储空间以及专业级Nvidia Quadro T2000显卡&#xff0c;配备4GB显存。 Dell Precision 7540移动工作站能够承受繁重的工作流程&#xff0c;配备…