使用CSS为有序列表设置样式

时间:2010-04-10 13:28:36

标签: html css

我有一个HTML的有序列表。 我想仅为数字(1,2,3,...)添加样式,而不是列表项本身。

有没有办法参考这些数字?

谢谢!

3 个答案:

答案 0 :(得分:5)

CSS2提供对generated content的控制,这将允许您使用:before伪类独立于项目的其余部分设置自动生成的内容的样式。这是符合OP的后续标准的解决方案(列表枚举器的背景颜色,但不符合项目)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head profile="http://gmpg.org/xfn/11">

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    <style type="text/css">

    body { margin: 0; padding: 10px; }
    ol {
        counter-reset: item; 
        margin: 0;
        padding: 0;
    }
    li {
        display: block;
        padding: 10px 0;
        margin: 0 0 10px 0;
    }
    li:before { 
        content: counter(item);
            /* 
                To generate punctuation after the number, just precede or follow with a string: 
                content: "Chapter " counter(item) " >> ";  

                To make nested counters (1, 1.1, 1.1.1, etc.), use:
                content: counters(item, ".");
            */
        counter-increment: item; 

        background-color: #ddd;
        margin-right: 15px;
        padding: 10px;
    }
    ol li ol { margin-bottom: -10px; padding-top: 10px; }
    ol li ol li { margin: 10px 0 0 30px; }

    </style>
</head>

<body>

<ol>
    <li>Turtles</li>
    <li>Lizards
        <ol>
            <li>Salamanders</li>
            <li>Geckos</li>
        </ol>
    </li>
    <li>Velociraptors</li>
</ol>

</body>
</html>

答案 1 :(得分:3)

是的,您只需设置ol元素的样式,然后覆盖li元素上的样式。

ol
{
    color: blue;
    font-style: italic;
}
ol li p
{
    color: black;
    font-style: normal;
}

<ol>
    <li><p>Text</p></li>
    <li><p>Text</p></li>
    <li><p>Text</p></li>
</ol>

如果需要,您可以将p代码更改为<divs>,但如果将其保留为p,则必须剥离边距和填充。

答案 2 :(得分:0)

最初我只是想对cowbellemoo的回答发表评论,因为它在IE7中不起作用,我想解释如何实现IE7的兼容性,但我想我的解决方案是一个完全不同的答案。

他的答案一切都很好,但在IE7中不起作用。因此,如果这对您来说很重要,请根据此A List Apart文章提供另一种方法:http://www.alistapart.com/articles/taminglists/#custom

标记

<ul>
    <li><span>01.</span> Text content</li>
    <li><Span>02.</span> More text content</li>
</ul>

CSS

ul {
    list-style: none;
    margin-left: 0;
    padding-left: 1em;
    text-indent: -1em;
}

您可以做一些变化,要么浮动<span>并给它一个宽度&amp;保证金,或将<li>设置为position:relative;,给予适当的填充,并将您的跨度绝对定位在正确的位置。