Gaya penghitung dan daftar

Banyak jenis konten yang paling baik ditampilkan sebagai daftar HTML. Untuk konten daftar berurutan, seperti langkah-langkah resep atau catatan kaki untuk artikel, penanda sering kali juga berisi informasi. CSS menyediakan beberapa cara untuk mengontrol penghitung dalam daftar.

Gaya daftar

Ada berbagai jenis gaya daftar standar yang mendukung angka, alfabet, angka Romawi, dan banyak sistem penghitungan internasional.

Selain gaya yang didukung oleh browser, W3C memublikasikan Gaya Penghitung Siap Pakai, dengan dukungan untuk 181 gaya tambahan dalam 45 sistem penulisan.

Jika opsi ini tidak sesuai dengan kebutuhan Anda, Anda juga dapat menentukan @counter-style kustom. Hal ini memungkinkan Anda menentukan simbol kustom, awalan dan akhiran, dan lainnya.

Secara default, penanda item adalah outside daftar, diposisikan di depan daftar, dan diratakan ke kanan. Anda juga dapat memosisikan penanda item di dalam daftar, dengan list-style-position: inside.

Penghitung

Meskipun gaya daftar mengontrol cara penanda item daftar ditampilkan, penghitung memungkinkan Anda mengontrol nilai yang akan ditampilkan. Untuk elemen item daftar <li>, browser membuat penghitung bernama list-item yang bertambah 1 untuk setiap item daftar yang ditemui.

Penghitung CSS menyimpan jumlah berjalan berapa kali elemen yang memiliki nilai counter-increment yang sesuai ditetapkan dirender.

Untuk membuat penghitung baru, gunakan counter-reset dengan nama penghitung dan, secara opsional, nilai awal. Anda akan sering menetapkannya pada elemen induk yang berisi semua elemen yang akan dihitung.

Kemudian, tambahkan properti counter-increment pada setiap elemen yang ingin Anda hitung.

Terakhir, tampilkan nilai penghitung menggunakan fungsi counter().

Dalam contoh ini, kita ingin menampilkan jumlah catatan kaki yang sedang berjalan sebagai teks link untuk setiap catatan kaki. Karena kita menginginkan satu penghitung untuk seluruh dokumen, kita menetapkan counter-reset: note pada isi, dan menaikkan setiap link catatan kaki.

Anda juga dapat memiliki beberapa penghitung yang menghitung item yang berbeda. Dalam contoh catatan kaki, bagaimana jika Anda ingin menampilkan indeks bagian dan paragraf tempat catatan kaki berada?

Jumlah bagian dapat dibuat di isi menggunakan counter-reset, lalu bertambah di setiap elemen <h2>. Kita ingin jumlah paragraf direset untuk setiap bagian, jadi kita akan menggunakan counter-reset pada elemen <h2>, dan menambahkannya pada elemen <p>.

Terakhir, kita menggabungkan nilai penghitung dalam properti content.

a:after {
  content: "(S" counter(section) "P" counter(paragraph) "N" counter(note) ")";
  font-size: small;
  vertical-align: super;
}

Penghitung bertingkat

Apa yang terjadi jika Anda menyusun daftar di dalam daftar? Penghitung list-item diinisialisasi untuk setiap elemen <ul> atau <ol>, dan penggunaan counter() hanya menampilkan jumlah hitungan paling dalam. Jika Anda ingin menampilkan jumlah dari setiap penghitung bertingkat, gunakan fungsi counters(), yang menggunakan nama penghitung dan pemisah.

li::marker {
  content: counters(list-item, ".")
  }

Penghitung terbalik

Secara default, penghitung (termasuk penghitung list-item implisit untuk elemen <ol>) dimulai dari 0, dan bertambah satu untuk setiap elemen, yang berarti elemen pertama akan dihitung sebagai 1. Bagaimana jika Anda ingin menghitung mundur ke 1?

Untuk melakukannya, tambahkan atribut reversed ke <ol>. Jika Anda menggunakan gaya daftar standar, penanda akan berfungsi seperti yang diharapkan. Namun, jika menggunakan penghitung kustom, Anda harus menyetel counter-increment ke nilai negatif, dan menghitung nilai awal penghitung secara manual.