我在div中有一个有序列表,我希望列表项上有一个左边框。我认为一个简单的border-left: 5px solid red;
可以解决这个问题,但我想要列表编号左边的边框。我试图让它与li:before
一起工作,但我似乎无法达到合适的高度。
有没有办法用:before
或者更简单的方式来做到这一点?
到目前为止我所拥有的http://jsfiddle.net/q5yS6/
答案 0 :(得分:6)
height
上的 :before
与其他元素的工作方式相同。仅当父级具有设定高度时,才能设置百分比高度。在这种情况下,:before
元素的父元素是它之前的元素。因此,您需要为li
添加一个高度,以使:before
元素使用百分比高度:
.lists ol li {
overflow: hidden;
height: 35px;
}
.lists ol li:before {
content: " ";
display: block;
float: left;
height: 100%;
border-left: 5px solid red;
padding-left: 20px;
}
达到预期效果的另一个选择是将li
设置为position: relative
,将:before
设置为absolute
。您需要删除overflow: hidden
。您可以使用list-style: none
再次隐藏编号:
.lists ol li {
position: relative;
list-style: none;
}
.lists ol li:before {
content: " ";
display: block;
position: absolute;
top: 0;
bottom: 0;
left: -30px;
border-left: 5px solid red;
padding-left: 20px;
}
使用top: 0
和bottom: 0
会产生100%高度的效果。
答案 1 :(得分:0)
您可以简单地将List<MessageId>
用于父级,而display: flex
可以将相同的高度应用于所有孩子。
关于CSS flexbox的很好的文档,这里:https://css-tricks.com/snippets/css/a-guide-to-flexbox/
align-items: stretch
li {
display: flex;
align-items: stretch;
margin-bottom: 10px;
}
li::before {
content: '';
display: block;
width: 5px;
background-color: red;
margin-right: 10px;
}
li p {
font-size: 15px;
}