私はCSSの上級ユーザーではありませんが、かなりの実用的な知識を持っていると思います。リスト要素ごとに異なるアイコンを使用する順序付けられていないリストを作成しようとしています。また、ホバー時にリスト要素の背景色を変更したいと思います。
CSSを介してこれを行う方法はありますか、それともリスト要素内にアイコン画像を含めるだけですか(以下のように)?
<li><img src="voters.jpg"><a href="voters.html">Voters</a></li>
lレベルでlist-style-imageを使用すると、すべてのアイコンが同じになり、別の方法を理解できませんでした。私が見つけたほとんどの例は、リスト内の画像の使用方法を教えていますが、箇条書きの画像が同じである場合に限ります。私はこれをやろうとしている方法についての提案や改善を絶対に受け入れています。
ありがとう
<div class="content-nav">
<ul>
<li class="instructions"><a href="instructions.html">Instructions</a></li>
<li class="voters"><a href="voters.html">Voters</a></li>
</ul>
</div>
.content-nav {
font-size:12px;
width:160px;
z-index:0;
}
.content-nav ul {
padding:0 20px;
margin:30px 0;
}
.content-nav li {
padding:5px;
margin:5px 5px;
}
.content-nav li a {
color:#666;
text-decoration:none;
}
.content-nav li.voters a {
background:#FFF;
color:#666;
text-decoration:none;
list-style-image:url(images/voters.jpg);
}
.content-nav li.voters a:hover {
background:#0CF;
color:#000;
}
.content-nav li.instructions a {
background:#FFF;
color:#666;
text-decoration:none;
list-style-image:url(images/voters.jpg);
}
.content-nav li.instructions a:hover {
background:#0CF;
color:#000;
}
各リスト要素に背景画像を追加し、パディングを使用してテキストをリスト要素から押し出すことができます。
<ul>
<li class="li1">List 1</li>
<li class="li2">List 2</li>
</ul>
.li1 {
background:url('li1.gif') 50% 50% no-repeat no-repeat;
padding-left: 5px;
}
.li2 {
background:url('li2.gif') 50% 50% no-repeat no-repeat;
padding-left: 5px;
}
パディング左が画像と同じサイズ(または間隔が必要な場合は少し大きい)であることを確認してください
CSS3の:nth-child()
セレクターを使用すると、各<li>
要素に追加のマークアップは必要ありません。
HTML:
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
CSS:
ul li:nth-child(1) {
list-style-image: url('http://google-maps-icons.googlecode.com/files/teal01.png');
}
ul li:nth-child(2) {
list-style-image: url('http://google-maps-icons.googlecode.com/files/teal02.png');
}
ul li:nth-child(3) {
list-style-image: url('http://google-maps-icons.googlecode.com/files/teal03.png');
}
ブラウザのサポート:IE9 +、FF3.5 +、SA3.1 +、OP9.5 +、CH2 +
各リスト要素の背景画像としてアイコンを使用することをお勧めします。このアプローチを使用すると、「箇条書き」も簡単に配置できます(特に水平配置)。
a
要素にlist-style-image
プロパティを設定しようとしました。代わりに、li
要素に設定してみてください。
疑似要素::before
のcontent
プロパティの画像を使用するだけです。
li.item1::before {
content: url(/Images/icon/item1-icon.svg);
display: inline-block;
width: 1em;
margin-right: 6px;
margin-left: -1em;
}
明らかに、異なるイメージを持つli
ごとにクラスが必要です。
リストごとに異なるアイコンを使用する場合は、各リストに一意の名前を付け、background-imageを使用して、CSSで適切に配置します。