水平时间轴css代码_使用CSS和JavaScript构建水平时间线

水平时间轴css代码

在上一篇文章中 ,我向您展示了如何从头开始构建响应式垂直时间轴。 今天,我将介绍创建相关的水平时间线的过程。

与往常一样,要初步了解我们将要构建的内容,请查看相关的CodePen演示(请查看较大的版本以获得更好的体验):

我们有很多内容需要介绍,所以让我们开始吧!

1. HTML标记

标记与我们为垂直时间轴定义的标记相同,除了以下三点:

  • 我们使用有序列表而不是无序列表,因为在语义上更正确。
  • 还有一个额外的列表项(最后一个)为空。 在下一部分中,我们将讨论原因。
  • 还有一个额外的元素(即.arrows )负责时间轴导航。

这是必需的标记:

<section class="timeline">
  <ol>
    <li>
      <div>
        <time>1934</time>
        Some content here
      </div>
    </li>
     
    <!-- more list items here -->
    
    <li></li>
  </ol>
  
  <div class="arrows">
    <button class="arrow arrow__prev disabled" disabled>
      <img src="arrow_prev.svg" alt="prev timeline arrow">
    </button>
    <button class="arrow arrow__next">
      <img src="arrow_next.svg" alt="next timeline arrow">
    </button>
  </div>
</section>

时间轴的初始状态如下所示:

2.添加初始CSS样式

为了简单起见,在这里省略了一些基本的字体样式,颜色样式等之后,我们指定了一些结构性CSS规则:

.timeline {
  white-space: nowrap;
  overflow-x: hidden;
}

.timeline ol {
  font-size: 0;
  width: 100vw;
  padding: 250px 0;
  transition: all 1s;
}

.timeline ol li {
  position: relative;
  display: inline-block;
  list-style-type: none;
  width: 160px;
  height: 3px;
  background: #fff;
}

.timeline ol li:last-child {
  width: 280px;
}

.timeline ol li:not(:first-child) {
  margin-left: 14px;
}

.timeline ol li:not(:last-child)::after {
  content: '';
  position: absolute;
  top: 50%;
  left: calc(100% + 1px);
  bottom: 0;
  width: 12px;
  height: 12px;
  transform: translateY(-50%);
  border-radius: 50%;
  background: #F45B69;
}

在这里最重要的是,您会注意到两件事:

  • 我们为列表分配较大的顶部和底部填充。 再次,我们将在下一节中解释为什么会发生这种情况。
  • 正如您将在以下演示中注意到的那样,由于列表的width: 100vw ,其父级的overflow-x: hidden ,因此,此时我们无法看到所有列表项。 这有效地“掩盖”了列表项。 但是,由于有了时间轴导航,我们以后才能浏览所有项目。

有了这些规则,这就是时间轴的当前状态(没有任何实际内容,以使情况保持清楚):

3.时间轴元素样式

至此,我们将对div元素(从现在开始将它们称为“时间轴元素”)进行样式设置,这些元素属于列表项以及它们的::before伪元素。

另外,我们将使用:nth-child(odd):nth-child(even) CSS伪类来区分奇数和偶数div的样式。

以下是

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值