list-style-imageの画像とリスト項目の文字列
list-style-imageで画像を指定すると、リスト項目の文字列とアンバランスな位置に画像が表示されてしまうことが多い。 具体的に言うと、画像の位置がやや上過ぎる。
画像を揃えるにはlist-style-imageではなく、background-imageを使うのが一般的らしい。
ul {
padding:0;
}
li{
background-image:url(./img/bug.png)
background-repeat:no-repeat;
background-position:top left;
padding-left: 30px;
list-style:none;
}
しかし、この方法ではCSSオンかつ画像オフのときにリストマーカーが見えなくなってしまうのが欠点。 素直にlist-style-imageを使えば画像がオフの時にはマーカーが表示される。
そこで、vertical-alignを使う方法を思いついた。 vertical-alignは、インライン要素に指定するとインラインボックスの行ボックス内での高さを指定できる。
li要素の中にインライン要素(たとえばa要素)がなければ使えないが、vertical-align:(数値+単位)などとすれば、リスト画像に対してちょうどいい高さにインラインボックスをもってこられる。 ただし問題点も多かった。
- line-heightが影響する
- ブラウザによって表示位置が異なる
- 画像をオフにすると、リストマーカーの位置もずれる(正しくはインラインボックスの位置がずれている)
