¿Por qué: nth-child () itera desde uno en lugar de cero?
Como se muestra en este ejemplo . ¿Por qué selecciona el primer elemento y no el segundo cuando
p :nth-child(1)
html
css
web-design
usuario51349
fuente
fuente
Respuestas:
Si cuenta a sus propios hijos, diría "mi primer hijo", "mi segundo hijo" y así sucesivamente, no "mi hijo zeroth". Así es simplemente como los humanos cuentan. (Nota: esta no es una opinión subjetiva de mi parte. Así es literalmente cómo funcionan los números ordinales ).
La razón por la que incluso hace la pregunta es probablemente porque es un programador, y muchos lenguajes de programación indexan la matriz y enumeran elementos desde 0. La razón de esto es que en lenguajes de bajo nivel como C, una matriz es realmente un puntero a la dirección de memoria del primer elemento y el índice es un desplazamiento relativo a este puntero. Entonces,
array[0]
significa la dirección del primer elemento,array[1]
significa la dirección del primer elemento más el tamaño de 1 elemento, es decir, el segundo elemento, etc.Muchos lenguajes de nivel superior que no admiten la aritmética de punteros han retenido directamente la indexación basada en 0 por coherencia y familiaridad. Por ejemplo, todos los lenguajes con sintaxis derivada de C, incluido JavaScript, aunque las matrices en JavaScript se implementan de una manera completamente diferente. Pero esto no es del todo universal: los lenguajes como COBOL, Fortran, Lua y algunos Basic utilizan la indexación basada en 1. (Visual Basic, naturalmente, eligió lo peor de ambos mundos al hacerlo configurable). Por lo tanto, definitivamente no es como cualquier otro idioma usar indexación basada en 0. Por lo que vale, XPath y XQuery también usan indexación basada en 1.
Si bien la mayoría de los programadores estarán familiarizados con la indexación basada en 1 y 0, las personas normales contarán naturalmente desde 1, y CSS es un lenguaje diseñado no solo para programadores sino también para diseñadores y profesionales gráficos, por lo que es natural elegir la indexación basada en 1 .
fuente
De la especificación del selector de nivel 3 de CSS :
Entra en muchos más detalles con ejemplos. Parece ser que el cálculo final de
an+b
debe totalizar a un número positivo.El formato adicional en el último párrafo es mío para agregar énfasis.
fuente
Probablemente por coherencia con XPath, otro lenguaje de procesamiento XML / HTML. Lo que plantea la pregunta, ¿por qué XPath utiliza la indexación basada en 1?
Ver /programming/3319341/why-do-indexes-in-xpath-start-with-1-and-not-0
La cita relevante (pero controvertida) es:
"... la lógica basada en 1 fue la elección correcta para XPath y XSLT ... porque el lenguaje fue diseñado para usuarios, no para programadores, y los usuarios todavía tienen este hábito anticuado de referirse al primer capítulo de un libro como Capítulo uno..."
fuente