Neden: nth-child () sıfır yerine birinden yineliyor?
Bu örnekte gösterildiği gibi . Neden ilk öğeyi seçiyor, ikinci öğeyi değil
p :nth-child(1)
Neden: nth-child () sıfır yerine birinden yineliyor?
Bu örnekte gösterildiği gibi . Neden ilk öğeyi seçiyor, ikinci öğeyi değil
p :nth-child(1)
Yanıtlar:
Kendi çocuklarınızı sayarsanız, "sıfır çocuğum" değil, "ilk çocuğum", "ikinci çocuğum" vb. Dersiniz. İnsanlar böyle sayılır. (Not: Bu benim tarafımdan bazı öznel görüşler değil. Tam anlamıyla sıra sayıları böyle çalışıyor.)
Soruyu sormanızın nedeni muhtemelen bir programcı olmanızdır ve birçok programlama dili dizi ve liste öğelerini 0'dan indeksler. Bunun nedeni, C gibi düşük seviyeli dillerde bir dizinin gerçekten bellek adresinin bir göstergesidir. ve indeks bu göstergeye göre bir ofsettir. Yani array[0]
ilk öğenin adresi, ilk öğenin array[1]
adresi artı 1 öğenin boyutu, yani ikinci öğenin vb. Anlamına gelir.
İşaretçi aritmetiği desteklemeyen birçok üst düzey dil, tutarlılık ve aşinalık için 0 tabanlı endekslemeyi doğrudan korumuştur. Örneğin, JavaScript'teki diziler tamamen farklı bir şekilde uygulansa da, C türetilmiş sözdizimine sahip tüm diller - JavaScript dahil. Ancak bu hiç de evrensel değildir - COBOL, Fortran, Lua ve bazı Basic'ler gibi 1 tabanlı dizinleme kullanır. (Visual Basic, doğal olarak her iki dünyanın en kötüsünü yapılandırılabilir hale getirerek seçti.) Bu nedenle, diğer tüm diller 0 tabanlı endeksleme kullanmıyor gibi. Değeri için, XPath ve XQuery de 1 tabanlı indeksleme kullanır.
Çoğu programcı hem 1 hem de 0 tabanlı endekslemeye aşina olsa da, normal insanlar doğal olarak 1'den sayılır ve CSS sadece programcılar için değil, tasarımcılar ve grafik uzmanları için tasarlanmış bir dildir, bu nedenle 1 tabanlı endekslemeyi seçmek doğaldır .
Gönderen CSS Seviye 3 Seçici Şartname :
6.6.5.2. : nth-child () sözde sınıfı
:nth-child(an+b)
Sözde sınıf gösterimi olan bir öğeyi temsil edenan+b-1
bir pozitif tam sayı ya da sıfır değeri için, belge ağacındaki daha önce kardeşlern
ve bir üst elemanına sahiptir. Sıfıra
veb
daha büyük değerler için bu, öğenin çocuklarını etkin bir şekilde öğe gruplarına bölera
(geri kalanı alan son grup) veb
her grubun th öğesini seçer. Örneğin, bu, seçicilerin bir tablodaki diğer tüm satırları ele almasına olanak tanır ve paragraf metninin rengini dört döngüde değiştirmek için kullanılabilir.a
Veb
değerler tamsayı (pozitif, negatif veya sıfır) olması gerekir. Bir elemanın ilk alt indeksi 1'dir.
Örneklerle çok daha fazla ayrıntıya giriyor. Görünüşe göre nihai hesaplaması an+b
pozitif bir sayıya eşit olmalıdır.
Tüm
a
= 0 (sürece, bir parça ihtiyacı olmayan dahilb
kısmı zaten çıkarılmıştır). Zamanan
dahil değildir veb
negatif olmayan, daha önce + işaretidirb
(izin verildiğinde), iptal de edilebilir. Bu durumda sözdizimi basitleşir:nth-child(b)
.Her ikisi de
a
veb
sıfıra eşitse, sözde sınıf belge ağacında hiçbir öğeyi temsil etmez.
Son paragrafta ek biçimlendirme vurgulamak benimdir.
Muhtemelen başka bir XML / HTML işleme dili olan XPath ile tutarlılık için. Hangi soruyu soruyor, XPath neden 1 tabanlı indeksleme kullanıyor?
Bkz. Https://stackoverflow.com/questions/3319341/why-do-indexes-in-xpath-start-with-1-and-not-0
İlgili (ancak tartışmalı alıntı):
"... XPath ve XSLT için 1 tabanlı mantık doğru seçimdi ... çünkü dil, programcılar için değil kullanıcılar için tasarlandı ve kullanıcılar hala bir kitaptaki ilk bölüme atıfta bulunma alışkanlığına sahipler. Birinci bölüm..."