CSS3实现时间轴效果

CSS3实现时间轴效果的完整攻略分为以下几个步骤:

1.准备工作

首先,在HTML页面中创建一个div元素,用于承载时间轴。并且定义好该元素的样式。常见的时间轴样式有竖直和水平两种,这里以竖直时间轴为例进行说明。

<div class="timeline">
  <!-- timeline items go here -->
</div>
.timeline {
  position: relative;
  width: 100%;
  margin: 20px auto;
  padding: 20px 0;
  list-style: none;
  text-align: center;
}

2.创建时间轴项

在时间轴div中,创建时间轴项(也即事件),每个时间轴项由一个圆圈和一段描述文字组成。圆圈的样式是时间轴项最为重要的部分,可以通过CSS3中的伪元素和动画来实现。

<li class="timeline-item">
  <div class="timeline-icon"></div>
  <div class="timeline-content">
    <h2>事件1</h2>
    <p>描述文字1</p>
  </div>
</li>
.timeline-icon {
  position: absolute;
  top: 0;
  left: 50%;
  margin-left: -12px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background-color: #fff;
  border: 2px solid #c0c0c0;
  z-index: 1;
}

.timeline-icon::before {
  content: "";
  position: absolute;
  top: 5px;
  left: -26px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background-color: #c0c0c0;
  z-index: -1;
}

.timeline-icon::after {
  content: "";
  position: absolute;
  top: 13px;
  left: -6px;
  width: 0;
  height: 0;
  border-top: 10px solid transparent;
  border-right: 10px solid #c0c0c0;
  border-bottom: 10px solid transparent;
  border-left: 10px solid transparent;
  z-index: -1;
}

.timeline-content {
  position: relative;
  width: 45%;
  padding: 20px;
  margin-left: 30px;
  background-color: #f1f1f1;
  border-radius: 6px;
}

3.实现时间轴展现效果

对时间轴项进行排版,排在时间轴的左侧或者右侧,也就是通过CSS3的float属性来控制。同时为了达到最佳的展现效果,还需要通过CSS3的伪元素和动画来实现垂直对齐和过渡效果。

以下是时间轴的完整代码示例:

<ul class="timeline">
  <li class="timeline-item">
    <div class="timeline-icon"></div>
    <div class="timeline-content">
      <h2>事件1</h2>
      <p>描述文字1</p>
    </div>
  </li>
  <li class="timeline-item">
    <div class="timeline-icon"></div>
    <div class="timeline-content">
      <h2>事件2</h2>
      <p>描述文字2</p>
    </div>
  </li>
  <li class="timeline-item">
    <div class="timeline-icon"></div>
    <div class="timeline-content">
      <h2>事件3</h2>
      <p>描述文字3</p>
    </div>
  </li>
</ul>
.timeline {
  position: relative;
  width: 100%;
  margin: 20px auto;
  padding: 20px 0;
  list-style: none;
  text-align: center;
}

.timeline:before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  margin-left: -3px;
  width: 6px;
  background-color: #c0c0c0;
  z-index: -1;
}

.timeline-item {
  clear: both;
  position: relative;
  margin: 20px 0;
}

.timeline-icon {
  position: absolute;
  top: 0;
  left: 50%;
  margin-left: -12px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background-color: #fff;
  border: 2px solid #c0c0c0;
  z-index: 1;
}

.timeline-icon::before {
  content: "";
  position: absolute;
  top: 5px;
  left: -26px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background-color: #c0c0c0;
  z-index: -1;
}

.timeline-icon::after {
  content: "";
  position: absolute;
  top: 13px;
  left: -6px;
  width: 0;
  height: 0;
  border-top: 10px solid transparent;
  border-right: 10px solid #c0c0c0;
  border-bottom: 10px solid transparent;
  border-left: 10px solid transparent;
  z-index: -1;
}

.timeline-content {
  position: relative;
  width: 45%;
  padding: 20px;
  margin-left: 30px;
  background-color: #f1f1f1;
  border-radius: 6px;
}

.timeline-item:before {
  content: "";
  position: absolute;
  top: 30px;
  right: 100%;
  margin-right: -15px;
  width: 0;
  height: 0;
  border-top: 15px solid transparent;
  border-right: 15px solid #f1f1f1;
  border-bottom: 15px solid transparent;
  border-left: 15px solid transparent;
}

.timeline-item:after {
  content: "";
  position: absolute;
  top: 30px;
  left: 100%;
  margin-left: -15px;
  width: 0;
  height: 0;
  border-top: 15px solid transparent;
  border-right: 15px solid transparent;
  border-bottom: 15px solid transparent;
  border-left: 15px solid #f1f1f1;
}

.timeline-item:nth-child(even) .timeline-content {
  float: right;
  margin-right: 30px;
  margin-left: 0;
}

.timeline-item:nth-child(even):before {
  right: auto;
  left: -15px;
  border-right: 15px solid transparent;
  border-left: 15px solid #f1f1f1;
}

.timeline-item:nth-child(even):after {
  right: auto;
  left: 100%;
  border-right: 15px solid #f1f1f1;
  border-left: 15px solid transparent;
}

以上代码实现了一个简单的竖直时间轴,当页面滚动到时间轴所在的位置时,将发生动画效果,使得时间轴项依次展现。同时,我们还可以通过添加一些特效,例如延迟加载、滑动效果等等,进一步增加时间轴的展示效果。

以下是一个基于上述代码的示例,实现了一个具有滑动效果的时间轴:
https://codepen.io/andytran/pen/GpyKLM

以下是另一个具有折线图形的时间轴示例,其核心代码与上述示例类似,不同之处在于对时间轴icon和伪元素的样式进行了修改:
https://codepen.io/alezilla/pen/MwYMpK

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CSS3实现时间轴效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 基于jQuery实现的无刷新表格分页实例

    下面就是“基于jQuery实现的无刷新表格分页实例”的完整攻略: 1. 实现原理 1.1 分页原理 在实现无刷新表格分页前,我们需要了解分页原理。分页是指将一个数据集按照固定大小分成若干页的过程,每页显示一定行数的数据。分页常用于数据量较大的情况下,可以降低页面加载时间和服务器压力,提高用户体验。在实现分页时,我们需要知道当前页码和每页显示的数据条数,从而计…

    css 2023年6月10日
    00
  • CSS3中Animation动画属性用法详解

    针对“CSS3中Animation动画属性用法详解”,我将给出以下内容: CSS3中Animation动画属性用法详解 介绍 CSS3中的Animation动画属性可以帮助我们实现更加生动的页面动效。 Animation动画属性包含了很多可用的子属性,如 Timing Function、Iteration Count、Direction、Delay、Dura…

    css 2023年6月9日
    00
  • Vue项目中设置背景图片方法

    Vue项目中设置背景图片的方法有多种途径,下面给出两种示例说明。 方法一:使用样式绑定 步骤一:自定义样式 首先,在Vue项目中的某个组件中定义一个样式类,如下所示: .bg-img { background-image: url(./assets/bg.jpg); background-size: cover; background-position: c…

    css 2023年6月10日
    00
  • JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】

    【JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】】是一篇介绍如何通过JavaScript实现表单验证的文章,其中利用到了策略模式,将验证数据与逻辑分离开来,以便简化代码,提高代码的可读性和可维护性。 一、数据与逻辑分离的思想 在传统的表单验证方式中,通常直接将验证逻辑写在表单元素的事件触发函数中,这样的方式非常不灵活,代码量也非常大,而且不具备可维…

    css 2023年6月10日
    00
  • css页面中常见左中右分栏布局的两种实现方式

    下面是CSS页面中常见左中右分栏布局的两种实现方式的完整攻略: 方式一:使用浮动属性 这是一种比较传统和常见的实现方式,具体步骤如下: 设置HTML结构,包含左侧、中间和右侧三个区域,例如: <div class="container"> <div class="left"><!– 左侧…

    css 2023年6月11日
    00
  • 使用CSS3 font-feature-settings特性减除字体动画震颤效果

    使用CSS3 font-feature-settings特性可以解决一些字体动画震颤的问题,这个特性可以细调字体的渲染行为,使我们能够消除一些奇怪的字体抖动问题。 以下是使用CSS3 font-feature-settings特性的工作流程: 1.在CSS文件中创建一个带有字体特性调整的类,可以使用下面的代码: .demo { font-feature-se…

    css 2023年6月9日
    00
  • javaScript+turn.js实现图书翻页效果实例代码

    JavaScipt + turn.js 实现图书翻页效果实例 介绍 在网站开发中,我们经常需要将一些电子书或者pdf格式的文档转化为网页形式,同时保留原有的阅读体验,这时候实现图书翻页效果就显得尤为重要。 turn.js 是一个基于 JQuery 的图书翻页插件,通过 turn.js 插件,我们可以方便快捷地实现 Web 端的图书翻页效果。 本文将讲解 tu…

    css 2023年6月9日
    00
  • 基于javascript实现移动端轮播图效果

    下面是详细的攻略过程,旨在帮助读者实现基于JavaScript的移动端轮播图效果。 安装必要的依赖 首先需要安装一些必要的依赖,包括jQuery、hammer.js等。可以通过以下命令安装: // 安装jQuery npm install jquery –save // 安装hammer.js npm install hammerjs –save 创建基…

    css 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部