如何在无序列表中更改点的颜色?

时间:2011-04-30 04:38:39

标签: html css

我想更改无序列表中的点颜色:

<ul>
<li></li>
</ul>

有没有办法可以用CSS做到这一点?我看不到房产?

5 个答案:

答案 0 :(得分:44)

最简单(但非语义)方式是将内容包装在span标记中,然后将项目符号颜色应用于li,将文本颜色应用于span

在代码中:

<ul>
    <li><span>text</span></li>
    <li><span>text</span></li>
    <li><span>text</span></li>
</ul>
ul li {
    /* Bullet color */
    color: red;
    list-style-type: disc;
}

ul li span {
    /* Text color */
    color: black;
}

jsFiddle preview

如果您无法修改HTML,则可以将list-style-image与自定义颜色的点一起使用,或使用生成的内容(即li:before)并相应地对其进行着色(但请注意列表子弹位置问题)。

这是an example with li:before

ul li {
    /* Text color */
    color: black;
    list-style-type: none;
}

ul li:before {
    /* Unicode bullet symbol */
    content: '\2022 ';
    /* Bullet color */
    color: red;
    padding-right: 0.5em;
}

答案 1 :(得分:10)

进一步发展@BoltClock给出的答案:

ul li {
    color: black;
    list-style-type: none;
}

ul li:before {
    color: red;
    float: left;
    margin: 0 0 0 -1em;
    width: 1em;
    content: '\2022';
}

通过这种方式,多线子弹的所有线都可以正确缩进。注意:我还没有机会在IE上测试它!

答案 2 :(得分:2)

您可以创建自己的图片。

li {
    list-style-image: url(myImage.gif);
}

答案 3 :(得分:2)

上述答案都不适合我,因为我的内容包含多行。然而,W3C提供的解决方案是完美的: https://www.w3.org/Style/Examples/007/color-bullets.en.html

简而言之,删除样式:

ul {list-style: none}

然后添加你自己的子弹

li::before {
content: "•";
color: red;
display: inline-block;
width: 1em;
margin-left: -1em
}

关键点是内联块,宽度和边距,以便正确定位。

答案 4 :(得分:0)

我认为你必须使用图形:

http://catcode.com/csstips/graphic_list.html

另外,这也可以让你精确控制子弹定位(通过使用边距和图像偏移)。