私は現在、問題に頭を悩ませようとしていますが、理解できないようです。
ナビゲーションの順序付けられていないリストで、疑似クラスの前に 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 タグ) に display:inline-block を与え、アイコンを vertical-align:middle に揃えることでした。少し調整するだけで (margin-bottom)、これはクロムでうまく機能します:
.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/
display、vertical-align、margin-values の考えられるすべての組み合わせを両方のブラウザで正しく表示できるように試してみました。最後に、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;
}
しかし、私はそれを理解していません。最初のバージョンが機能しないのはなぜですか? 私には、実際に動作するバージョンよりもはるかに論理的に思えます。そして、両方のブラウザーのどちらが要素を正しくレンダリングしないでしょうか?
私はすでに私にとってうまくいくと思われる解決策を見つけたので、緊急の質問ではありませんが、問題の核心(および解決策)を理解していないことに悩まされているので、誰かができれば本当に感謝していますこれについて教えてください。
ありがとう