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日

相关文章

  • css实现弹窗上下左右居中且背景透明锁定窗口效果

    下面是详细的攻略,过程中会有两个示例说明。 首先,要实现弹窗上下左右居中,我们需要在css中使用绝对定位和transform属性来控制它的位置。代码如下: .modal { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); } 这里,我们使用position:fix…

    css 2023年6月9日
    00
  • openlayers6之地图覆盖物overlay详解

    OpenLayers6之地图覆盖物Overlay详解 什么是地图覆盖物Overlay? 地图覆盖物指的是放置在地图表面的图形元素,例如标注、弹框、图标等。OpenLayers6中的Overlay类可以用来创建和管理地图覆盖物。 创建Overlay 要创建一个Overlay,必须先定义它的位置、大小以及所包含的图形元素。下面是一个简单的示例: // 定义标注的…

    css 2023年6月10日
    00
  • jQuery插件实现带圆点的焦点图片轮播切换

    实现带圆点的焦点图片轮播切换的关键在于利用jQuery插件来实现,以下是实现的详细攻略: 步骤一,编写HTML结构 首先,需要编写HTML结构,包括轮播图图片和对应的圆点: <div class="slider"> <ul class="slider-list"> <li><i…

    css 2023年6月11日
    00
  • 使用Pinyin4j进行拼音分词的方法

    使用Pinyin4j进行拼音分词的方法可以分为以下步骤: 第一步:引入Pinyin4j依赖 在Maven项目中,需要在项目的pom.xml中添加以下依赖: <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifact…

    css 2023年6月10日
    00
  • js实现select选择框效果及美化

    下面是JS实现select选择框效果及美化的完整攻略: 1. 实现下拉框效果 1.1 HTML结构 首先需要一个select标签和对应的option标签,option标签的value属性存储选项的值。 HTML代码如下: <select id="select"> <option value="1"&g…

    css 2023年6月10日
    00
  • 标记语言——清单

    标记语言——清单 清单是一种在标记语言中常用的元素,可以让你以列表的形式,更好地呈现信息。本文将详细讲解如何使用标记语言来创建清单。 有序列表 有序列表即为按照一定顺序排列的列表,通常用数字表示顺序。语法如下: 1. 第一项 2. 第二项 3. 第三项 其中数字后面必须加上一个英文句点“.”,并且数字之后要加上一个空格才能产生正确的效果。示例如下: 苹果 香…

    css 2023年6月10日
    00
  • jquery插件实现鼠标隐藏

    实现鼠标隐藏需要通过 jQuery 插件的方式,下面是具体的实现攻略: 步骤一:创建 jQuery 插件 先创建一个名为 jquery.mouseHide.js 的文件,将以下代码放入其中,以创建一个名为 mouseHide 的插件。 (function( $ ) { $.fn.mouseHide = function() { var timer; this…

    css 2023年6月10日
    00
  • css3中flex布局宽度不生效的解决

    当使用CSS3中的Flex布局时,有时候会出现宽度不生效的情况。这种情况通常是由于Flex容器或Flex项目没有正确设置尺寸导致的。下面是解决这个问题的详细攻略。 步骤一:设置Flex容器的宽度 要正确使用Flex布局,必须在容器上设置display: flex。除此之外,还需要设置flex-direction(排列方向,默认为row)、justify-co…

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