Por que: nth-child () itera de um em vez de zero?
Como mostrado neste exemplo . Por que ele seleciona o primeiro elemento e não o segundo quando
p :nth-child(1)
html
css
web-design
user51349
fonte
fonte
Respostas:
Se você contar seus próprios filhos, diria "meu primeiro filho", "meu segundo filho" e assim por diante, não "meu filho zeroth". É assim que os humanos contam. (Nota: esta não é uma opinião subjetiva minha. É literalmente como os números ordinais funcionam.)
O motivo pelo qual você faz a pergunta é provavelmente porque você é um programador, e muitas linguagens de programação indexam itens de matriz e lista de 0. O motivo é que, em linguagens de baixo nível como C, uma matriz é realmente um ponteiro para o endereço de memória do primeiro item e o índice é um deslocamento em relação a esse ponteiro. Então
array[0]
significa endereço do primeiro item,array[1]
significa endereço do primeiro item mais o tamanho de 1 item, ou seja, o segundo item e assim por diante.Muitos idiomas de nível superior que não oferecem suporte à aritmética de ponteiros mantiveram a indexação baseada em 0 para consistência e familiaridade. Por exemplo, todos os idiomas com sintaxe derivada de C - incluindo JavaScript, mesmo que as matrizes em JavaScript sejam implementadas de uma maneira completamente diferente. Mas isso não é universal - linguagens como COBOL, Fortran, Lua e alguns do Basic usam indexação baseada em 1. (O Visual Basic naturalmente escolheu o pior dos dois mundos, tornando-o configurável.) Portanto, definitivamente não é como todos os outros idiomas que usam indexação baseada em 0. Quanto vale, XPath e XQuery também usam indexação baseada em 1.
Embora a maioria dos programadores esteja familiarizada com a indexação baseada em 1 e 0, as pessoas normais contam naturalmente a partir de 1, e o CSS é uma linguagem projetada não apenas para programadores, mas também para designers e profissionais gráficos, por isso é natural escolher a indexação baseada em 1. .
fonte
Na especificação do seletor de nível 3 do CSS :
Ele entra em muito mais detalhes com exemplos. Parece que o cálculo final de
an+b
deve totalizar um número positivo.Formatação adicional no último parágrafo é minha para adicionar ênfase.
fonte
Provavelmente por consistência com o XPath, outra linguagem de processamento XML / HTML. O que sugere a pergunta: por que o XPath usa a indexação baseada em 1?
Consulte /programming/3319341/why-do-indexes-in-xpath-start-with-1-and-not-0
A relevante (mas controversa citação) é:
"... a lógica baseada em 1 foi a escolha certa para XPath e XSLT ... porque a linguagem foi projetada para usuários, não para programadores, e os usuários ainda têm esse hábito antiquado de se referir ao primeiro capítulo de um livro como Capítulo um..."
fonte