如何使用 CSS Flexbox 实现响应式时间轴布局

阅读时长 7 分钟读完

在网页设计中,时间轴布局常常被用来展示一段历史或者进程。时间轴布局可以很好的展示一系列的事件或者步骤,而且在各种设备上都能够很好的呈现。在本文中,我们将会使用 CSS Flexbox 技术实现一个响应式的时间轴布局。

什么是CSS Flexbox?

CSS Flexbox 是一种用来进行布局的 CSS 模块。通过使用 Flexbox,能够轻松的实现各种复杂布局,并且支持响应式布局。Flexbox 的特点包括:

  • 灵活性:容器内的子元素的大小和位置能够被灵活地调整。
  • 容器和子元素所有的属性都可以调整
  • 支持响应式布局。

在本文中,我们将实现一个响应式的时间轴布局,该布局将支持移动设备和桌面设备。这个布局的样式大致如下:

接下来我们将通过以下几个步骤来实现这个布局:

步骤1:HTML 结构

我们首先来看一下这个时间轴布局的 HTML 结构。

-- -------------------- ---- -------
---- -----------------
  ---- ----------------------
    ---- -------------------------
      --------- ------
      ------- --------
    ------
    ---- ---------------------------
    ---- --------------------------------
  ------
  ---- ----------------------
    ---- -------------------------
      --------- ------
      ------- --------
    ------
    ---- ---------------------------
    ---- --------------------------------
  ------
  ---- ----------------------
    ---- -------------------------
      --------- ------
      ------- --------
    ------
    ---- ---------------------------
    ---- --------------------------------
  ------
------

在这里,我们将时间轴布局存储在名为 timeline 的 div 中。每个时间点都放置在一个名为 timeline_item 的 div 中。每个时间点都有三个子元素:

  • timeline_content: 该 div 存储关于时间点的主要信息,如标题和文本内容。
  • timeline_dot: 该 div 存储一个小点来表明该时间点。
  • timeline_year: 该 div 存储年份。

步骤2:CSS 样式

接下来我们将设置 CSS 样式来实现时间轴布局的外观。请注意,为了使布局响应式,我们将使用 CSS Flexbox 属性。

-- -------------------- ---- -------
--------- -
  -------- -----
  --------------- -------
-

-------------- -
  -------- -----
  --------------- ----
  ------------ -------
  ----------- -----
  --------- ---------
  -------- -----
  -------------------------
  ------ ----
  ------------- -----
  ------------ -----
  -------------- -----
  ----------- --- --- ---- ------- -- -- -----
  ----------- --- ---- ------------
-

-------------------- -
  ---------- ------------------
  ----------- --- --- ---- ------- -- -- -----
-

----------------- -
  ----------
-

------------- -
  ------ -----
  ------- -----
  -------------- ----
  ----------------- --------
  ------------- -----
-

-------------- -
  ----------------- --------
  ------ -----
  -------------- ----
  -------- --- -----
  --------- ---------
  --------
  ---- --
-

------ ---- ------ --- ----------- ------ -
  ---------------
    --------- ---------
    ------ -----
    ---- -----
    ----------- -----
    ------ -----
  -
  --------------
    ------- - -----
  -
  ----------------- -
    -----------
  -
-

这里我们首先为 timeline 添加样式,样式包括:

  • display: flex; 设置 timeline 容器的 flex 属性。
  • flex-direction: column; 设置容器的纵向 flex 方向,每个步骤都是竖直排列。
  • .timeline_item 元素的样式设置。

接下来我们设置每个时间点的样式。我们定义了以下 CSS 属性:

  • display: flex; 设置 elem 容器的 flex 属性。
  • flex-direction: row; 将容器设为水平方向的 flex 排列。
  • align-items: center; 将每个元素水平对齐。
  • margin-top: 50 px; 设置每个步骤之间的间距。
  • position: relative; 设定相对定位。
  • padding: 15 px; 设置每个元素的 padding 值。
  • background-color: # f5f5f5; 设置时间轴的背景色。
  • width: 90%; 设置每个时间点的宽度在 90% 的容器内。
  • margin-right: auto; margin-left: auto; 设置元素居中。
  • border-radius: 10 px; 为边框设置一个圆角半径值。
  • box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1); 设置一个盒子的阴影效果。
  • transition: all 0.3s ease-in-out; 让元素的转变更加自然。

我们还为:hover 状态设置了一些属性。当鼠标悬停在时间内时,元素将会向上移动 10 像素,增加一个阴影效果。

要实现响应式的布局,我们需要在媒体查询中设置这个布局的样式。以上的样式设置将调整每个布局元素的宽度,使其可以在移动设备和桌面设备上都能够适当的显示。

在@media only screen 和 (max-width: 767px) 中,我们将 .timeline_year、.timeline_dot 和.timeline_content 的宽度设置为 100%。我们还将.timeline_year 上用的绝对定位设置为相对定位,以便这些元素将在垂直上居中。

总结

在本文中,我们通过使用 CSS Flexbox 技术,实现了一个响应式的时间轴布局。我们使用了 Flexbox 的一些技术,并且通过响应式媒体查询设置了它的一些属性。这种布局可以适用于不同类型的网站,例如学术论文,产品历程,甚至新闻事件。由于 CSS Flexbox 的灵活性,无论你使用的是移动设备还是桌面设备,该布局都可以很好地呈现。

示例代码

样例代码见 https://codepen.io/zhangshuai/pen/XWJwbzo.

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6520a34f95b1f8cacd8145e4

纠错
反馈