Pourquoi: nth-child () répète-t-il un au lieu de zéro?
Comme le montre cet exemple . Pourquoi sélectionne-t-il le premier élément et non le second quand
p :nth-child(1)
html
css
web-design
user51349
la source
la source
Réponses:
Si vous comptez vos propres enfants, vous diriez «mon premier enfant», «mon deuxième enfant» et ainsi de suite, pas «mon enfant zéro». C'est simplement ainsi que les humains comptent. (Remarque: ce n'est pas une opinion subjective de ma part. C'est littéralement comment les nombres ordinaux fonctionnent.)
La raison pour laquelle vous posez même la question est probablement parce que vous êtes un programmeur, et de nombreux langages de programmation indexent les éléments de tableau et de liste à partir de 0. La raison en est que dans les langages de bas niveau comme C, un tableau est vraiment un pointeur vers l'adresse mémoire du premier élément et l'index est un décalage par rapport à ce pointeur. Signifie donc l'
array[0]
adresse du premier élément,array[1]
signifie l'adresse du premier élément plus la taille de 1 élément, c'est-à-dire le deuxième élément, etc.De nombreux langages de niveau supérieur qui ne prennent pas directement en charge l'arithmétique des pointeurs ont conservé l'indexation basée sur 0 pour des raisons de cohérence et de familiarité. Par exemple, tous les langages avec une syntaxe dérivée de C - y compris JavaScript, même si les tableaux en JavaScript sont implémentés de manière complètement différente. Mais ce n'est pas du tout universel - des langages comme COBOL, Fortran, Lua et certains Basic utilisent l'indexation basée sur 1. (Visual Basic a naturellement choisi le pire des deux mondes en le rendant configurable.) Il n'est donc certainement pas comme tous les autres langages utilisant l'indexation basée sur 0. Pour ce que ça vaut, XPath et XQuery utilisent également l'indexation basée sur 1.
Bien que la plupart des programmeurs connaissent à la fois l'indexation basée sur 1 et 0, les personnes normales compteront naturellement à partir de 1, et CSS est un langage conçu non seulement pour les programmeurs mais aussi pour les concepteurs et les professionnels du graphisme, il est donc naturel de choisir l'indexation basée sur 1 .
la source
À partir de la spécification du sélecteur CSS niveau 3 :
Il va beaucoup plus en détail avec des exemples. Il semble que le calcul final de
an+b
doit totaliser jusqu'à un nombre positif.Le formatage supplémentaire dans le dernier paragraphe est le mien pour ajouter de l'emphase.
la source
Probablement pour la cohérence avec XPath, un autre langage de traitement XML / HTML. Ce qui pose la question, pourquoi XPath utilise-t-il une indexation basée sur 1?
Voir /programming/3319341/why-do-indexes-in-xpath-start-with-1-and-not-0
La citation pertinente (mais controversée) est:
"... La logique basée sur 1 était le bon choix pour XPath et XSLT ... car le langage a été conçu pour les utilisateurs, pas pour les programmeurs, et les utilisateurs ont toujours cette vieille habitude de se référer au premier chapitre d'un livre comme Chapitre un..."
la source