我重新审视了我之前的解决方案,并对 CSS 进行了一些修改,如下所示。
对于顶级列表:
ol.custom {
margin-left: 0;
padding-left: 0px;
counter-reset: counter_level1;
list-style: none outside none;
display: block;
line-height: 18px;
width: 500px;
}
ol.custom li {
list-style: none;
margin: 0 0 0 0;
padding: 0 0 0 20px;
outline: 1px dotted blue;
overflow: hidden;
}
ol.custom li:before {
display: inline-block;
width: 20px;
margin-left: -20px;
content: counter(counter_level1)". ";
counter-increment: counter_level1;
font-weight: bold;
}
对于嵌套列表:
ol.custom ol {
margin: 0 0 0 0;
padding: 0 0 0 0;
counter-reset: counter_level2;
}
ol.custom ol li {
position: relative;
margin: 0 0 0 0;
padding: 0 0 0 40px;
}
ol.custom ol li:before {
display: inline-block;
width: 40px;
margin-left: -40px;
content: counter(counter_level1, decimal)"." counter(counter_level2, decimal)". ";
counter-increment: counter_level2;
}
本质上,我删除了绝对定位的伪元素,因为它们在浮动内容附近不起作用。
但是,由于伪元素的负边距,标签仍然可能与浮动图像重叠,因此添加overflow: hidden
到顶级li
样式,这会创建一个新的块格式化上下文,以解决重叠问题。
缺点:根据您的内容和浮动图像,您可以获得一些大块的空白,如我的新演示所示:
http://jsfiddle.net/audetwebdesign/buXKy/