Dlaczego: nth-child () dokonuje iteracji z jednego zamiast zera?
Jak pokazano w tym przykładzie . Dlaczego wybiera pierwszy element, a nie drugi kiedy
p :nth-child(1)
html
css
web-design
użytkownik51349
źródło
źródło
Odpowiedzi:
Jeśli policzysz własne dzieci, powiedziałbyś „moje pierwsze dziecko”, „moje drugie dziecko” i tak dalej, a nie „moje dziecko zerowe”. Tak po prostu liczą się ludzie. (Uwaga: to nie jest jakaś subiektywna opinia. Tak dosłownie działają liczby porządkowe .)
Powodem, dla którego zadajesz to pytanie, jest prawdopodobnie to, że jesteś programistą, a wiele języków programowania indeksuje tablicę i elementy listy od 0. Powodem tego jest to, że w językach niskiego poziomu, takich jak C, tablica jest naprawdę wskaźnikiem do adresu pamięci pierwszego elementu i indeksu jest przesunięciem względem tego wskaźnika.
array[0]
Oznacza więc adres pierwszego elementu,array[1]
oznacza adres pierwszego elementu plus rozmiar 1 elementu, tj. Drugiego elementu i tak dalej.Wiele języków wyższego poziomu, które nie obsługują arytmetyki wskaźników, zachowało indeksowanie oparte na 0 dla spójności i znajomości. Na przykład wszystkie języki ze składnią pochodną C - w tym JavaScript, mimo że tablice w JavaScript są implementowane w zupełnie inny sposób. Ale to wcale nie jest uniwersalne - języki takie jak COBOL, Fortran, Lua i niektóre podstawowe używają indeksowania opartego na 1. (Visual Basic naturalnie wybrał najgorsze z obu światów, umożliwiając jego konfigurację). Więc zdecydowanie nie jest tak, jak w każdym innym języku używającym indeksowania opartego na 0. Dla swojej wartości XPath i XQuery używają również indeksowania 1.
Podczas gdy większość programistów będzie zaznajomiona z indeksowaniem opartym na 1 i 0, normalni ludzie naturalnie będą liczyć od 1, a CSS jest językiem zaprojektowanym nie tylko dla programistów, ale także dla projektantów i grafików, więc naturalne jest wybranie indeksowania opartego na 1 .
źródło
Ze specyfikacji selektora poziomu 3 CSS :
Wchodzi w dużo bardziej szczegółowe przykłady. Wydaje się, że ostateczne obliczenie
an+b
moszczu sumuje się do liczby dodatniej.Dodatkowe formatowanie w ostatnim akapicie jest moje, aby podkreślić.
źródło
Prawdopodobnie dla spójności z XPath, innym językiem przetwarzania XML / HTML. Co nasuwa pytanie, dlaczego XPath używa indeksowania opartego na 1?
Zobacz /programming/3319341/why-do-indexes-in-xpath-start-with-1-and-not-0
Odpowiedni (ale kontrowersyjny cytat) to:
„... logika oparta na 1 była właściwym wyborem dla XPath i XSLT ... ponieważ język został zaprojektowany dla użytkowników, a nie dla programistów, a użytkownicy nadal mają ten staromodny nawyk odwoływania się do pierwszego rozdziału książki jako Rozdział pierwszy..."
źródło