順序付けられていないリストの各リスト項目には、2 つのインライン ブロック要素とアンカー テキストがすべて隣り合っています。したがって、それぞれ<li>
に 2 つのアイコンとテキストがあります。
この 2 つのアイコンを作成した理由display:inline-block
は、高さが異なり、その横のアンカー テキストが複数行になる場合があるため、vertical-align
ルールによって 1 行目に中央揃えできるためです。
とにかく、このアンカー タグには:hover
スタイルがあり、基本的にはbackground-color:gray
. 何らかの理由で、このアンカー要素を一般的な解決策でブロックすることに成功できませんでした。
私がやったことはうまくいきましたが、このソリューションに頼ることはできません。これは、幅と幅にハードコードされたものを使用して<ul>
おり<a>
、リストにスクロールバーが必要な場合、これらの幅をバーの幅から差し引く必要があるためです。以下は、誰かに光を当てる場合の私の現在の解決策です。
アンカー テキストに margin-left を指定して に設定しようとしましたがdisplay:absolut
、役に立ちませんでした。私もパーセンテージを与えようとしましたが、もう一度...最終的に要素をフローティングしようとしましたが、テキストが複数行になる可能性があり、各要素をテキストの最初の行の垂直方向の中央に配置するため、おそらくここで最も間違った解決策です. 私の次の推測は、各リスト項目でテーブルを使用することですが、それはおそらく利用可能な最も汚い解決策であり、必要がない限り使用したくありません。
どのようにしますか?詳細が必要な場合はお知らせください。
CSS
ul {
overflow:auto;
height:6em;
width:320px;
}
li .icon1 {
display:inline-block;
width:13px;
height:12px;
vertical-align:top;
background:url(image.jpg) left top no-repeat;
}
li .icon2 {
display:inline-block;
width:9px;
height:10px;
margin-right:2px;
background:url(image.jpg) left -12px no-repeat;
}
li a {
display:inline-block;
padding-left:4px;
vertical-align:top;
width:270px;
}
li a:hover {
background-color:lightgray;
}
HTML
<ul>
<li>
<div class="icon1"></div>
<div class="icon2"></div>
<a href="#">Some anchor text</a>
</li>
<!-- many other li items in here -->
</ul>
これは、私が達成しようとしていることを説明するための画像です。
前もって感謝します。