我目前正在尝试解决一个问题,但我似乎无法理解它。
在导航的无序列表中,我想在伪类之前通过 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>
我的第一个想法是给两个元素(图标和 a-tag)显示:内联块并将图标与垂直对齐:中间对齐。只需稍作调整(margin-bottom),这在 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/
我尝试了在我看来显示、垂直对齐和边距值的所有可能组合,以便在两个浏览器中都正确,最后,如果我给出 a-tag vertical-align:middle 和图标 vertical-align:baseline ,它似乎工作:
.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;
}
但我就是不明白。为什么第一个版本不起作用?对我来说,这似乎比实际工作的版本更合乎逻辑。两种浏览器中的哪一种没有以正确的方式呈现元素?
我已经找到了一个似乎对我有用的解决方案,所以这不是一个非常紧迫的问题,但是我不明白我的问题的核心(和解决方案)让我很烦恼,所以如果有人可以,我会非常感激启发我。
谢谢