Html有序列表1.1,1.2(嵌套计数器和范围)不起作用

我使用嵌套计数器和范围来创build一个HTMLsorting列表。

这是我的代码: http : //jsfiddle.net/qGCUk/2/

我期待以下结果:

1. one 2. two 2.1. two.one 2.2. two.two 2.3. two.three 3. three 3.1 three.one 3.2 three.two 3.2.1 three.two.one 3.2.2 three.two.two 4. four 

相反,这是我所看到的(错误的编号)

 1. one 2. two 2.1. two.one 2.2. two.two 2.3. two.three 2.4 three <!-- this is where it goes wrong, when going back to the parent --> 2.1 three.one 2.2 three.two 2.2.1 three.two.one 2.2.2 three.two.two 2.3 four 

我没有线索,有没有人看到哪里出了问题?

取消select“正常化CSS” – http://jsfiddle.net/qGCUk/3/ CSS中使用的重置默认所有列表边距和填充为0

更新 http://jsfiddle.net/qGCUk/4/ – 你必须包括你的子列表在你的主要<li>

 <ol> <li>one</li> <li>two <ol> <li>two.one</li> <li>two.two</li> <li>two.three</li> </ol> </li> <li>three <ol> <li>three.one</li> <li>three.two <ol> <li>three.two.one</li> <li>three.two.two</li> </ol> </li> </ol> </li> <li>four</li> </ol> 

使用此样式仅更改嵌套列表:

 ol { counter-reset: item; } ol > li { counter-increment: item; } ol ol > li { display: block; } ol ol > li:before { content: counters(item, ".") ". "; margin-left: -20px; } 

看一下这个 :

http://jsfiddle.net/PTbGc/

你的问题似乎已经修复。


什么显示为我(在Chrome和Mac OS X下)

 1. one 2. two 2.1. two.one 2.2. two.two 2.3. two.three 3. three 3.1 three.one 3.2 three.two 3.2.1 three.two.one 3.2.2 three.two.two 4. four 

我是怎么做到的


代替 :

 <li>Item 1</li> <li>Item 2</li> <ol> <li>Subitem 1</li> <li>Subitem 2</li> </ol> 

做:

 <li>Item 1</li> <li>Item 2 <ol> <li>Subitem 1</li> <li>Subitem 2</li> </ol> </li> 

这是一个很好的解决scheme! 有了一些额外的CSS规则,你可以像一个MS Word大纲列表一样将其格式化为一个首行缩进:

 OL { counter-reset: item; } LI { display: block; } LI:before { content: counters(item, ".") "."; counter-increment: item; padding-right:10px; margin-left:-20px; } 

我最近遇到类似的问题。 解决方法是将有序列表中的li项目的display属性设置为list-item,而不是display块,并确保ol的显示属性不是list-item。 即

 li { display: list-item;} 

有了这个,htmlparsing器将所有的li视为列表项并为其分配适当的值,并将ol视为基于您的设置的内嵌块或块元素,并且不会尝试将任何计数值分配给它。