我目前正在环绕一个问题我的大脑,但我似乎无法把握它。
在对导航无序列表,我想通过CSS伪类之前每个列表项前添加一个图标。
<ul class="list">
<li class="list-item"><a href="#">one</a></li>
<li class="list-item"><a href="#">two</a></li>
<li class="list-item"><a href="#">three</a></li>
<li class="list-item"><a href="#">four</a></li>
</ul>
我首先想到的是,得到两个元素(图标和一个标签)显示:内联块和对准垂直对齐的图标:中间。 只需很少的调整(下边距),这非常适用于Chrome浏览器:
.list-item {
display: block;
font-weight: bold;
text-transform: uppercase;
margin: 10px 0;
padding-bottom: 10px;
border-bottom: 1px solid #F3F3F3;
height:1.5em;
overflow:hidden;
}
.list-item:before {
display: inline-block;
content: '';
vertical-align: middle;
background-color: red;
width: 5px;
height: 7px;
margin: 0 4px 0.125em 5px;
}
.list-item a {
display: inline-block;
overflow: hidden;
line-height: 1.5;
height:1.5em;
}
但是,当你加载网页在Firefox中,图标是遥远的底部。 http://jsfiddle.net/pUhPB/4/
我试了一下在我看来显示,垂直对齐和边距值的每一个可能的组合,让它在两个浏览器的权利,最后,如果我给一个标签垂直对齐:中间和图标的垂直对齐:基线,它似乎工作:
.list-item {
display: block;
font-weight: bold;
text-transform: uppercase;
margin: 10px 0;
padding-bottom: 10px;
border-bottom: 1px solid #F3F3F3;
height:1.5em;
overflow:hidden;
}
.list-item:before {
display: inline-block;
content: '';
vertical-align: baseline;
background-color: red;
width: 5px;
height: 7px;
margin: 0 4px 0 5px;
}
.list-item a {
display: inline-block;
vertical-align:middle;
overflow: hidden;
line-height: 1.5;
height:1.5em;
}
http://jsfiddle.net/L3N3f/
但我只是不明白这一点。 为什么第一个版本无法正常工作? 对我来说,似乎比那实际工作的版本更符合逻辑。 而这两种浏览器中的哪一个不再现元素的正确方法?
我已经发现,似乎为我工作的解决方案,所以它不是一个很迫切的问题,但它的错误我,我不明白我的问题的核心(和解决方案),因此,如果有人可以我会很感激见识一下这个。
谢谢