Ни одно из решений на этой странице не работает правильно и универсально для всех уровней и длинных (завернутых) абзацев. Действительно сложно добиться последовательного отступа из-за переменного размера маркера (1., 1.2, 1.10, 1.10.5,…); его нельзя просто «подделать», даже с предварительно вычисленным полем / отступом для каждого возможного уровня отступа.
![](https://i.stack.imgur.com/x3YhV.png)
Я наконец-то нашел решение, которое на самом деле работает и не нуждается в JavaScript.
Он протестирован на Firefox 32, Chromium 37, IE 9 и браузере Android. Не работает в IE 7 и более ранних версиях.
CSS:
ol {
list-style-type: none;
counter-reset: item;
margin: 0;
padding: 0;
}
ol > li {
display: table;
counter-increment: item;
margin-bottom: 0.6em;
}
ol > li:before {
content: counters(item, ".") ". ";
display: table-cell;
padding-right: 0.6em;
}
li ol > li {
margin: 0;
}
li ol > li:before {
content: counters(item, ".") " ";
}
Пример:
![example](https://gist.github.com/jirutka/32049196ab75547b7f47/raw/1aea01b78279250bf7f84e0f84db57e2dfe2d5b1/sample.png)
Попробуйте на jsFiddle , раскошелиться на Суть .