Mengapa: nth-child () beralih dari satu alih-alih nol?
Seperti yang ditunjukkan dalam contoh ini . Mengapa ia memilih elemen pertama dan bukan yang kedua saat
p :nth-child(1)
html
css
web-design
pengguna51349
sumber
sumber
Jawaban:
Jika Anda menghitung anak-anak Anda sendiri, Anda akan mengatakan "anak pertama saya", "anak kedua saya" dan seterusnya, bukan "anak saya yang masih kecil". Beginilah cara manusia menghitung. (Catatan: Ini bukan pendapat subjektif dari saya. Ini secara harfiah bagaimana angka ordinal bekerja.)
Alasan Anda bahkan mengajukan pertanyaan mungkin karena Anda adalah seorang programmer, dan banyak bahasa pemrograman mengindeks array dan item daftar dari 0. Alasan untuk ini adalah bahwa dalam bahasa tingkat rendah seperti C, array benar-benar adalah penunjuk ke alamat memori dari item pertama dan indeks adalah offset relatif terhadap pointer ini. Jadi
array[0]
berarti alamat item pertama,array[1]
berarti alamat item pertama plus ukuran 1 item, yaitu item kedua dan seterusnya.Banyak bahasa tingkat tinggi yang tidak mendukung aritmatika pointer secara langsung mempertahankan pengindeksan berbasis 0 untuk konsistensi dan keakraban. Misalnya semua bahasa dengan sintaks yang diturunkan dari C - termasuk JavaScript, meskipun array dalam JavaScript diimplementasikan dengan cara yang sama sekali berbeda. Tapi ini sama sekali tidak universal - bahasa seperti COBOL, Fortran, Lua dan beberapa indeks menggunakan 1 berbasis Basic. (Visual Basic secara alami memilih yang terburuk dari kedua dunia dengan membuatnya dapat dikonfigurasi.) Jadi jelas tidak seperti setiap bahasa lainnya menggunakan pengindeksan berbasis 0. Untuk apa nilainya, XPath dan XQuery juga menggunakan pengindeksan berbasis 1.
Sementara sebagian besar programmer akan terbiasa dengan pengindeksan berbasis 1 dan 0, orang normal secara alami akan dihitung dari 1, dan CSS adalah bahasa yang dirancang tidak hanya untuk programmer tetapi untuk desainer dan profesional grafis, sehingga wajar untuk memilih pengindeksan berbasis 1 .
sumber
Dari Spesifikasi Pemilih Level 3 CSS :
Ini masuk ke lebih banyak detail dengan contoh. Tampaknya perhitungan akhir
an+b
harus total ke angka positif.Pemformatan tambahan dalam paragraf terakhir adalah milik saya untuk menambahkan penekanan.
sumber
Mungkin untuk konsistensi dengan XPath, bahasa pemrosesan XML / HTML lainnya. Yang menimbulkan pertanyaan, mengapa XPath menggunakan pengindeksan berbasis 1?
Lihat /programming/3319341/why-do-indexes-in-xpath-start-with-1-and-not-0
Kutipan yang relevan (tetapi kontroversial) adalah:
"... Logika berbasis 1 adalah pilihan yang tepat untuk XPath dan XSLT ... karena bahasa tersebut dirancang untuk pengguna, bukan untuk programmer, dan pengguna masih memiliki kebiasaan kuno merujuk pada bab pertama dalam sebuah buku sebagai Bab satu..."
sumber