html – 在UL上使用:: before伪元素来创建时间线表示

前端之家收集整理的这篇文章主要介绍了html – 在UL上使用:: before伪元素来创建时间线表示前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想在ul中使用li元素实现故事情节的视觉布局,这看起来像这样:

li-element1
 .
 .
li-element2
 .
 .
li-element3

我使用:: before伪元素在整个ul元素中添加一行,但它在li元素的顶部可见,我不想发生这种情况.如何将线隐藏在lis后面,只能在边距间隙中看到?我已经尝试过Z-index属性但未成功.这是我目前的代码link to a pen.

.container ul{
  position: relative;
}
.container ul::before{
  content: "";
  position: absolute;
  top: 0px;
  bottom: 0px;
  border: 1px dashed blue;
}
.container ul li{
  margin: 15px;
}

更新

在最初的问题中,我忽略了这样一个事实,即li元素中的子弹实际上并不是li元素本身的一部分,因此实际上并没有受到任何背景颜色的影响.现在考虑到这一点并实现建议的答案,结合使用z-index,背景颜色,边距和填充,另外设置ul list-style-type:none我已经将代码更新为:

.container ul{
  padding: 0px;
  margin: 0px;
  position: relative;
  list-style-type: none;
}
.container ul::before{
  content: "";
  position: absolute;
  top: 0px;
  bottom: 0px;
  left: 16px;
  border: 1px dotted red;
}
.container ul li{
  margin: 15px;
  padding: 0px 0px;
  position: relative;
  z-index: 1;
  background-color: white;
}
最佳答案
您可以使用白色背景,填充和相对定位来隐藏每个项目的时间轴部分:

.container ul{
  position: relative;
}
.container ul::before{
  content: "";
  position: absolute;
  top: 0px;
  bottom: 0px;
  border: 1px dashed red;
}
.container ul li {
  display: block;
  position: relative;
  left: -20px;
  background-color: white;
  padding: 5px;
  padding-left: 20px;
  margin: 40px 0px;
}

猜你在找的HTML相关文章