【问题标题】:Vertical line between divsdiv之间的垂直线
【发布时间】:2015-01-23 13:58:53
【问题描述】:

我想在下图中的绿色块之间添加一条垂直线。我正在使用:after 来做到这一点。但是我不想在最后一个块之后显示该行。有什么诀窍可以做到这一点吗?

CSS:

.block{
    width: 20px;
    height: 20px;
    margin-right: 20px;
    background: green;
    float: left;
}

.block:after {
  content: '';
  width: 0;
  height: 100%;
  position: absolute;
  border: 1px solid black;
  top: 0;
  left: 10px;
}

演示: http://jsfiddle.net/rhwb7b2o/

注意:列表项的高度不同。如果需要,可以更改 HTML 标记。

【问题讨论】:

标签: html css


【解决方案1】:

position:relative 添加到li 元素中,这样每一行就不会覆盖整个ul

然后添加li:last-child .block{position:relative;overflow:hidden;}来处理最后一个元素。

http://jsfiddle.net/gaby/qj2dbdkz/的演示

【讨论】:

  • @user1355300: 我更新了你自己的JSFiddle jsfiddle.net/rhwb7b2o/1 - 为了达到行尾部分的效果,你还可以添加一个定义高度为17px的li:last-child .block:after;跨度>
【解决方案2】:

:not 选择器与:last-child 选择器一起使用。像这样:

.block:not(:last-child):after { /* ... */ }

【讨论】: