Я использую вложенные счетчики и область видимости для создания упорядоченного списка:
ol {
counter-reset: item;
padding-left: 10px;
}
li {
display: block
}
li:before {
content: counters(item, ".") " ";
counter-increment: item
}
<ol>
<li>one</li>
<li>two</li>
<ol>
<li>two.one</li>
<li>two.two</li>
<li>two.three</li>
</ol>
<li>three</li>
<ol>
<li>three.one</li>
<li>three.two</li>
<ol>
<li>three.two.one</li>
<li>three.two.two</li>
</ol>
</ol>
<li>four</li>
</ol>
Ожидаю следующего результата:
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
Понятия не имею, кто-нибудь видит, где что-то не так?
Вот JSFiddle: http://jsfiddle.net/qGCUk/2/
html
css
html-lists
кортик
источник
источник
1.
>1.1.
1.2.
1.3.
и так далее?id
иclass
позволяют вам определять CSS, специфичный для этих элементов, с помощью селекторов. Если вы используете одеялоli
,ul
, иol
т.д., то CSS влияет на все его экземпляры. Но если вы установите для своего элемента значение,<ol class="cleared">
а селектор CSS - значениеol.cleared
, то вы не повлияете на другие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; }
источник
font-weight: bold
кol ol > li:before
счетчикам вложенного списка являются ,bold
но это не делает счетчики первого списка уровняbold
?Проверь это :
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>
источник
Это отличное решение! С помощью нескольких дополнительных правил CSS вы можете отформатировать его так же, как список структуры MS Word с висящим отступом первой строки:
OL { counter-reset: item; } LI { display: block; } LI:before { content: counters(item, ".") "."; counter-increment: item; padding-right:10px; margin-left:-20px; }
источник
Недавно я столкнулся с подобной проблемой. Исправление состоит в том, чтобы установить для свойства display элементов li в упорядоченном списке значение list-item, а не display block, и убедиться, что свойство display для ol не является list-item. т.е.
li { display: list-item;}
При этом синтаксический анализатор html видит все li как элемент списка и присваивает ему соответствующее значение, и видит ol как встроенный блок или блочный элемент в зависимости от ваших настроек и не пытается присвоить какое-либо значение счетчика для Это.
источник
Решение Моше отличное, но проблема может все еще существовать, если вам нужно поместить список в файл
div
. (читайте: сброс счетчика CSS во вложенном списке )Этот стиль может предотвратить эту проблему:
ol > li { counter-increment: item; } ol > li:first-child { counter-reset: item; } ol ol > li { display: block; } ol ol > li:before { content: counters(item, ".") ". "; margin-left: -20px; }
<ol> <li>list not nested in div</li> </ol> <hr> <div> <ol> <li>nested in div</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> </div>
Вы также можете включить сброс счетчика
li:before
.источник
.
во вложенном списке, а корневой список?Пройдя через другие ответы, я придумал это, просто примените класс
nested-counter-list
к корневомуol
тегу:код sass:
ol.nested-counter-list { counter-reset: item; li { display: block; &::before { content: counters(item, ".") ". "; counter-increment: item; font-weight: bold; } } ol { counter-reset: item; & > li { display: block; &::before { content: counters(item, ".") " "; counter-increment: item; font-weight: bold; } } } }
css код :
ol.nested-counter-list { counter-reset: item; } ol.nested-counter-list li { display: block; } ol.nested-counter-list li::before { content: counters(item, ".") ". "; counter-increment: item; font-weight: bold; } ol.nested-counter-list ol { counter-reset: item; } ol.nested-counter-list ol > li { display: block; } ol.nested-counter-list ol > li::before { content: counters(item, ".") " "; counter-increment: item; font-weight: bold; }
ol.nested-counter-list { counter-reset: item; } ol.nested-counter-list li { display: block; } ol.nested-counter-list li::before { content: counters(item, ".") ". "; counter-increment: item; font-weight: bold; } ol.nested-counter-list ol { counter-reset: item; } ol.nested-counter-list ol>li { display: block; } ol.nested-counter-list ol>li::before { content: counters(item, ".") " "; counter-increment: item; font-weight: bold; }
<ol class="nested-counter-list"> <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.nested-counter-list { counter-reset: item; } ol.nested-counter-list li { display: block; } ol.nested-counter-list li::before { content: counters(item, ".") ". "; counter-increment: item; font-weight: bold; } ol.nested-counter-list ol { counter-reset: item; }
<ol class="nested-counter-list"> <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>
источник
Будь проще!
Более простое и стандартное решение для увеличения числа и сохранения точки в конце. Даже если вы правильно написали css, он не будет работать, если ваш HTML неправильный. увидеть ниже.
CSS
ol { counter-reset: item; } ol li { display: block; } ol li:before { content: counters(item, ". ") ". "; counter-increment: item; }
SASS
ol { counter-reset: item; li { display: block; &:before { content: counters(item, ". ") ". "; counter-increment: item } } }
HTML родительский ребенок
Если вы добавляете ребенка, убедитесь, что он находится ниже родительского
li
.<!-- WRONG --> <ol> <li>Parent 1</li> <!-- Parent is Individual. Not hugging --> <ol> <li>Child</li> </ol> <li>Parent 2</li> </ol> <!-- RIGHT --> <ol> <li>Parent 1 <ol> <li>Child</li> </ol> </li> <!-- Parent is Hugging the child --> <li>Parent 2</li> </ol>
источник