Saya menggunakan penghitung dan cakupan bersarang untuk membuat daftar berurutan:
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>
Saya mengharapkan hasil sebagai berikut:
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
Sebaliknya, inilah yang saya lihat (penomoran salah) :
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
Saya tidak tahu, apakah ada yang melihat di mana kesalahannya?
Ini adalah JSFiddle: http://jsfiddle.net/qGCUk/2/
html
css
html-lists
beladau
sumber
sumber
1.
>1.1.
1.2.
1.3.
dan seterusnya?id
danclass
memungkinkan Anda menentukan css khusus untuk elemen tersebut dengan penyeleksi. Jika Anda menggunakan selimutli
,ul
,ol
dll, maka css mempengaruhi semua contoh itu. Namun jika Anda menyetel elemen ke<ol class="cleared">
dan pemilih css keol.cleared
, Anda tidak akan memengaruhiol
elemen lain secara tidak perlu.Gunakan gaya ini untuk hanya mengubah daftar bertingkat:
ol { counter-reset: item; } ol > li { counter-increment: item; } ol ol > li { display: block; } ol ol > li:before { content: counters(item, ".") ". "; margin-left: -20px; }
sumber
font-weight: bold
keol ol > li:before
penghitung daftar bersarangbold
tetapi tidak membuat penghitung dari daftar tingkat pertamabold
?Lihat ini:
http://jsfiddle.net/PTbGc/
Masalah Anda sepertinya telah diperbaiki.
Yang muncul untuk saya (di bawah Chrome dan 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
Bagaimana saya melakukannya
Dari pada :
<li>Item 1</li> <li>Item 2</li> <ol> <li>Subitem 1</li> <li>Subitem 2</li> </ol>
Lakukan:
<li>Item 1</li> <li>Item 2 <ol> <li>Subitem 1</li> <li>Subitem 2</li> </ol> </li>
sumber
Ini adalah solusi yang bagus! Dengan beberapa aturan CSS tambahan Anda dapat memformatnya seperti daftar garis besar MS Word dengan indentasi baris pertama yang menggantung:
OL { counter-reset: item; } LI { display: block; } LI:before { content: counters(item, ".") "."; counter-increment: item; padding-right:10px; margin-left:-20px; }
sumber
Saya mengalami masalah serupa baru-baru ini. Cara mengatasinya adalah untuk menyetel properti tampilan dari item li dalam daftar terurut ke daftar-item, dan bukan blok tampilan, dan memastikan bahwa properti tampilan ol bukan daftar-item. yaitu
li { display: list-item;}
Dengan ini, parser html melihat semua li sebagai item daftar dan menetapkan nilai yang sesuai untuknya, dan melihat ol, sebagai elemen blok-sebaris atau blok berdasarkan pengaturan Anda, dan tidak mencoba untuk menetapkan nilai hitungan apa pun ke Itu.
sumber
Solusi Moshe bagus tetapi masalahnya mungkin masih ada jika Anda perlu memasukkan daftar di dalam file
div
. (baca: CSS reset pada daftar bersarang )Gaya ini dapat mencegah masalah itu:
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>
Anda juga dapat mengatur counter-reset
li:before
.sumber
.
di daftar bersarang tetapi daftar root?Setelah melalui jawaban lain, saya menemukan ini, cukup terapkan kelas
nested-counter-list
keol
tag root :kode 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; } } } }
kode 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>
Dan jika Anda membutuhkan trailing
.
di akhir penghitung daftar bersarang, gunakan ini: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>
sumber
Tetap Sederhana!
Solusi sederhana dan standar untuk menambah angka dan mempertahankan titik di akhir. Meskipun Anda menggunakan css dengan benar, itu tidak akan berfungsi jika HTML Anda tidak benar. Lihat di bawah.
CSS
ol { counter-reset: item; } ol li { display: block; } ol li:before { content: counters(item, ". ") ". "; counter-increment: item; }
KELANCANGAN
ol { counter-reset: item; li { display: block; &:before { content: counters(item, ". ") ". "; counter-increment: item } } }
HTML Parent Child
Jika Anda menambahkan anak, pastikan itu di bawah induk
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>
sumber