いくつかの<li>
項目を含む単純なソートされていないリストを想像してください。ここで、箇条書き記号をlist-style:square;
で正方形に定義しました。ただし、<li>
項目の色をcolor: #F00;
で設定すると、すべては赤になります。
四角い弾の色だけを設定したいのですが。 エレガントな方法はありますか / CSSで箇条書きの色を定義する...
_ html _
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<ul>
_ css _
li{
list-style:square;
}
これを行う最も一般的な方法は、次のようなものです。
ul {
list-style: none;
padding: 0;
margin: 0;
}
li {
padding-left: 1em;
text-indent: -.7em;
}
li::before {
content: "• ";
color: red; /* or whatever color you prefer */
}
<ul>
<li>Foo</li>
<li>Bar</li>
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</li>
</ul>
JSFiddle: http://jsfiddle.net/leaverou/ytH5P/ /
バージョン8以降のIEを含むすべてのブラウザで動作します。
いつか閲覧して、このサイトを見つけた、あなたはこの代替を試したことがありますか?
li{
list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAE0lEQVQIW2NkYGD4D8RwwEi6AACaVAQBULo4sgAAAABJRU5ErkJggg==");
}
難しく聞こえますが、自分のpng画像/パターンここを作成して、コードをコピー/貼り付けして箇条書きをカスタマイズすることができます。
編集:
もう一つの答えについて@ lea-verouの考えに従って、この外部の情報源の強化の哲学を適用することで、私はこの他の解決策に至りました:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
i.e.: fa-angle-right []
そして、f ...の最後の部分に続けてfont-family
も含めて、次のような数字を続けます。
li:before {
content: "\f105";
font-family: FontAwesome;
color: red; /* or whatever color you prefer */
margin-right: 4px;
}
以上です!今、あなたもカスタム箇条書きのヒントを持っています=)
CSS 3リスト モジュールの現在の仕様は、 ::marker
疑似要素 を指定していますが、これはまさにあなたが望むことをするでしょう。 FFは::marker
をサポートしないことがテストされています、そして私はSafariかOperaのどちらかがそれを持っているかどうか疑います。 IEは、もちろん、それをサポートしていません。
だから今、これをする唯一の方法はlist-style-image
で画像を使うことです。
li
の内容をspan
でラップしてからそれぞれの色を設定できると思いますが、それは私には少し厄介です。
私はこの問題を単に解決するだけで、すべてのブラウザで機能するはずです。
HTML:
<ul>
<li><span>Foo</span></li>
<li><span>Bar</span></li>
<li><span>Bat</span></li>
</ul>
CSS:
ul li{
color: red
}
ul li span{
color: blue;
}
そのための1つの方法は、li:before
とcontent: ""
を使用し、それをinline-block
要素としてスタイル設定することです。
これは実用的なコードスニペットです:
ul {
list-style-type: none; /* no default bullets */
}
li {
font-family: Arial;
font-size: 18px;
}
li:before { /* the custom styled bullets */
background-color: #14CCBB;
border-radius: 50%;
content: "";
display: inline-block;
margin-right: 10px;
margin-bottom: 2px;
height: 10px;
width: 10px;
}
<ul>
<li>Swollen joints</li>
<li>Pain in hands and knees</li>
<li>Redness around joints</li>
<li>Constant fatigue</li>
<li>Morning stiffness in joints</li>
<li>High fevers</li>
<li>Rheumatoid nodules, which develop around joints</li>
</ul>
それでも、別の解決策は、:before
疑似要素をborder-radius: 50%
とともに使用することです。これはIE 8以上を含むすべてのブラウザで動作します。
em
ユニットを使用すると、フォントサイズの変更に対する応答性が向上します。あなたはあなたのjsFiddleウィンドウをリサイズすることによってこれをテストすることができます。
ul {
list-style: none;
line-height: 1em;
font-size: 3vw;
}
ul li:before {
content: "";
line-height: 1em;
width: .5em;
height: .5em;
background-color: red;
float: left;
margin: .25em .25em 0;
border-radius: 50%;
}
box-shadow
を使っていくつかのNiceシャドウを作成することもできます。これは、content: "• "
ソリューションではNiceに見えないものです。
私はこれを試しました、そして、物事は私にとって奇妙になりました。 (このチュートリアルの:after {content: "";}
部分の後でcssが機能しなくなりました。li
項目自体にcolor:#ddd;
を使用するだけで箇条書きに色を付けることができるとわかりました。
これがの例です。
li{
color:#ff0000;
list-style:square;
}
a {
text-decoration: none;
color:#00ff00;
}
a:hover {
background-color: #ddd;
}
これにはjQueryを使用します。
jQuery('li').wrapInner('<span class="li_content" />');
といくつかのCSSで:
li { color: red; }
li span.li_content { color: black; }
多すぎるかもしれませんが、CMS用にコーディングしていて、編集者にすべてのリスト項目に追加のスパンを設定するよう依頼したくない場合は便利です。
LI
にbackground-image
とpadding-left
を付けることをお勧めします。 list-style-image
属性はクロスブラウザ環境ではぎりぎりであり、spanのような追加の要素を追加することは不要です。だからあなたのコードはこのようなものになってしまうでしょう:
li {
background:url(../images/bullet.png) 0 0 no-repeat;
list-style:none;
padding-left:10px;
}
あなたができる最も簡単なことは、<li>
の内容を<span>
または同等のものでラップすることです。それからあなたは独自に色を設定することができます。
あるいは、あなたが望む弾丸の色で画像を作り、list-style-image
プロパティでそれを設定することもできます。
Lea Verou の変形は、複数行のエントリに完全なインデントを付けることで、次のようになります。
ul{
list-style: none;
position: relative;
padding: 0;
margin: 0;
}
li{
padding-left: 1.5em;
}
li:before {
position: absolute;
content: "•";
color: red;
left: 0;
}
私はこの問題に私の解決策を追加しています。
私はimageを使いたくありません、そして、バリデーターはCSSで負の値を使うことに対してあなたを罰するでしょう、それで私はこのように行きます:
ul { list-style:none; padding:0; margin:0; }
li { padding-left:0.75em; position:relative; }
li:before { content:"•"; color:#e60000; position:absolute; left:0em; }
私はそれがこの記事のための少し遅い答えであることを知っています、しかし参考のために...
CSS
ul {
color: red;
}
li {
color: black;
}
箇条書きの色はulタグで定義されているので、liの色を元に戻します。
Lea Verousの解決策は優れていますが、弾丸の位置をもっと制御したいので、これが私のアプローチです。
.entry ul {
list-style: none;
padding: 0;
margin: 0;
/* hide overflow in the case of floating elements around ... */
overflow: hidden;
}
.entry li {
position: relative;
padding-left: 24px;
}
.entry li:before {
/* with absolute position you can move this around or make it bigger without getting unwanted scrollbars */
position: absolute;
content: "• ";
color: #E94E24;
font-size: 30px;
left: 0;
/* use fonts like "arial" or use "sans-serif" to make the dot perfect round */
font-family: Arial, sans-serif;
}
Leaのデモを取って、ここでは、罫線を使って、番号なしリストを作成する別の方法があります: http://jsfiddle.net/vX4K8/7/
_ html _
<ul>
<li>Foo</li>
<li>Bar</li>
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</li>
<ul>
<li>Son</li>
<li>Of</li>
<ul>
<li>Foo</li>
<li>Bar</li>
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</li>
</ul>
</ul>
</ul>
_ css _
ul {
list-style: none;
margin: 0;
}
ul:first-child {
padding: 0;
}
li {
line-height: 180%;
border-bottom: 1px dashed #CCC;
margin-left: 14px;
text-indent: -14px;
}
li:last-child {
border: none;
}
li:before {
content: "";
border-left: 4px solid #CCC;
padding-left: 10px;
}