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日

相关文章

  • div+css实现带箭头的面包屑导航栏

    1. 简介 面包屑导航栏是一种在页面顶部显示的导航方式,常用于指示当前页面位置,方便用户快速了解自己在网站的哪个分类下浏览。本攻略将详细讲解如何使用 div+CSS 实现一个带箭头的面包屑导航栏。 2. HTML 结构 面包屑导航栏的 HTML 结构被嵌套在一个大的 div 容器中,根据层级关系依次使用 a 标签包裹每个导航点。箭头可以采用 CSS 的 bo…

    css 2023年6月10日
    00
  • js实现图片旋转的三种方法

    下面是“js实现图片旋转的三种方法”的完整攻略。 方法一:transform属性 实现过程 使用 transform 属性对图片进行旋转。其中 transform 属性可以通过 rotate 值进行旋转,例如 transform: rotate(90deg) 可以将图片顺时针旋转 90 度。 示例说明 以下代码实现了点击按钮时图片顺时针旋转 90 度: &l…

    css 2023年6月10日
    00
  • 详解CSS3中属性选择器新增加的特性

    CSS3中属性选择器是一种很方便的选择器,允许开发者根据元素的属性来选择对应的元素并进行样式定义。CSS3新增加的属性选择器包含了很多新特性,本文将详细讲解这些新特性及其使用方法。 1. 普通属性选择器 在CSS3中,最常用的属性选择器是普通的属性选择器,它可以根据元素的属性选择对应的元素。其格式如下: [attribute] 其中,attribute是用来…

    css 2023年6月9日
    00
  • CSS Border高级使用实例分享(三角等形状)

    CSS的border属性被广泛运用在网页中,其不仅可以添加边框并调整边框的宽度、样式、颜色等属性,同时也可以通过一些高级技巧实现一些有趣的效果。其中较为常见的包括实现三角、梯形、菱形等形状。 实现三角形状的方式 实现三角形状的效果有多种方法,下面提供两种实现方式: 方法一:使用border实现三角形 通过设置元素的宽高为0,同时将它的三边样式设置为trans…

    css 2023年6月9日
    00
  • vue项目中使用rem替换px的实现示例

    针对“vue项目中使用rem替换px的实现示例”的完整攻略,建议采用以下实现步骤: 1. 安装 postcss-pxtorem 插件 在你的 Vue 项目中安装 postcss-pxtorem 插件,该插件可以将 CSS 中的 px 单位转换成 rem 单位。 首先,在 Vue 项目根目录中安装 postcss-pxtorem 和 postcss-loade…

    css 2023年6月10日
    00
  • 原生js与jQuery实现简单的tab切换特效对比

    实现简单的tab切换特效是前端开发中比较基础和常见的功能之一。使用原生JS和jQuery都可以实现该功能,下面详细讲解原生JS和jQuery分别实现该功能的过程: 原生JS实现tab切换 HTML代码 先给出HTML代码,我们的tab切换控制对象为按钮(btn类名),tab内容为tc内容的div元素: <div class="tabs&quo…

    css 2023年6月10日
    00
  • css div 边框阴影利用背景图或内外层div实现层次感觉阴影效果

    为了实现 CSS div 边框阴影的效果,有三种常见方法: 1.使用 CSS box-shadow 属性。 box-shadow 属性可以添加阴影效果。可以对该属性进行调整,设置阴影的偏移量、模糊度和颜色,以达到不同的阴影效果。示例如下: div.box-shadow { box-shadow: 3px 3px 5px gray; } 2.使用背景图像实现 …

    css 2023年6月9日
    00
  • CSS教程:网页英文字体和中文字体应用

    CSS教程:网页英文字体和中文字体应用 在网页设计中,文字的排版和展示是非常重要的。通过 CSS,我们可以实现对网页中文字体的设置和样式的调整。在这篇教程中,我们将会介绍如何应用英文字体和中文字体。 英文字体应用 在 CSS 中,可以通过 font-family 属性来设置英文字体。在设置英文字体时,需要注意以下几点: 选择一个合适的英文字体。 如果该字体不…

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