我有一个HTML的有序列表。 我想仅为数字(1,2,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;
,给予适当的填充,并将您的跨度绝对定位在正确的位置。