Warum iteriert nth-child () von eins statt von null?
Wie in diesem Beispiel gezeigt . Warum wählt es das erste Element und nicht das zweite, wenn
p :nth-child(1)
html
css
web-design
user51349
quelle
quelle
Antworten:
Wenn Sie Ihre eigenen Kinder zählen, würden Sie "mein erstes Kind", "mein zweites Kind" und so weiter sagen, nicht "mein nulltes Kind". So zählt einfach der Mensch. (Hinweis: Dies ist keine subjektive Meinung von mir. So funktionieren Ordnungszahlen buchstäblich .)
Der Grund, warum Sie diese Frage stellen, ist wahrscheinlich, dass Sie ein Programmierer sind und viele Programmiersprachen Array- und Listenelemente von 0 indizieren. Der Grund dafür ist, dass ein Array in einfachen Sprachen wie C wirklich ein Zeiger auf die Speicheradresse ist des ersten Elements und der Index ist ein Offset relativ zu diesem Zeiger. Bedeutet
array[0]
also die Adresse des ersten Artikels,array[1]
bedeutet die Adresse des ersten Artikels plus der Größe von 1 Artikel, dh des zweiten Artikels und so weiter.Viele übergeordnete Sprachen, die Zeigerarithmetik nicht direkt unterstützen, haben die 0-basierte Indexierung aus Gründen der Konsistenz und Vertrautheit beibehalten. Zum Beispiel alle Sprachen mit C-abgeleiteter Syntax - einschließlich JavaScript, obwohl Arrays in JavaScript auf völlig andere Weise implementiert sind. Dies ist jedoch keineswegs universell - Sprachen wie COBOL, Fortran, Lua und einige Basic verwenden eine 1-basierte Indexierung. (Visual Basic hat natürlich das Schlimmste aus beiden Welten ausgewählt, indem es konfigurierbar gemacht wurde.) Es ist also definitiv nicht so, dass jede andere Sprache eine 0-basierte Indizierung verwendet. XPath und XQuery verwenden auch eine 1-basierte Indizierung.
Während die meisten Programmierer sowohl mit der 1-basierten als auch mit der 0-basierten Indizierung vertraut sind, zählen normale Leute natürlich ab 1, und CSS ist eine Sprache, die nicht nur für Programmierer, sondern auch für Designer und Grafikprofis entwickelt wurde .
quelle
Aus der CSS Level 3 Selector-Spezifikation :
Es wird viel detaillierter mit Beispielen. Es scheint, dass die endgültige Berechnung von
an+b
muss insgesamt eine positive Zahl sein.Die zusätzliche Formatierung im letzten Absatz dient der Hervorhebung.
quelle
Wahrscheinlich aus Gründen der Konsistenz mit XPath, einer anderen XML / HTML-Verarbeitungssprache. Was wirft die Frage auf, warum XPath 1-basierte Indizierung verwendet?
Siehe /programming/3319341/why-do-indexes-in-xpath-start-with-1-and-not-0
Das relevante (aber kontroverse Zitat) ist:
"... 1-basierte Logik war die richtige Wahl für XPath und XSLT ..., da die Sprache für Benutzer und nicht für Programmierer entwickelt wurde und Benutzer immer noch die altmodische Angewohnheit haben, auf das erste Kapitel eines Buches als zu verweisen Kapitel eins..."
quelle