Почему: nth-child () выполняет итерацию с единицы вместо нуля?
Как показано в этом примере . Почему он выбирает первый элемент, а не второй, когда
p :nth-child(1)
html
css
web-design
user51349
источник
источник
Ответы:
Если вы считаете своих детей, вы говорите «мой первый ребенок», «мой второй ребенок» и т. Д., А не «мой нулевой ребенок». Это просто, как люди считают. (Примечание: это не мое субъективное мнение. Это буквально, как работают порядковые числа .)
Причина, по которой вы даже задаете вопрос, вероятно, заключается в том, что вы программист, и многие языки программирования индексируют массив и элементы списка от 0. Причина в том, что в языках низкого уровня, таких как C, массив действительно является указателем на адрес памяти первого элемента и индекс является смещением относительно этого указателя. Таким образом,
array[0]
означает адрес первого элемента,array[1]
означает адрес первого элемента плюс размер 1 элемента, то есть второго элемента и так далее.Многие языки более высокого уровня, которые напрямую не поддерживают арифметику указателей, сохранили индексирование на основе 0 для согласованности и знакомства. Например, все языки с синтаксисом, производным от C, включая JavaScript, хотя массивы в JavaScript реализованы совершенно по-другому. Но это вовсе не универсально - языки, такие как COBOL, Fortran, Lua и некоторые Basic, используют индексирование на основе 1. (Visual Basic, естественно, выбрал худшее из обоих миров, сделав его настраиваемым.) Таким образом, он определенно не похож на любой другой язык, использующий индексацию на основе 0. Для чего стоит XPath и XQuery также используют индексирование на основе 1.
В то время как большинство программистов знакомы с индексированием на основе 1 и 0, нормальные люди, естественно, будут считать от 1, а CSS - это язык, разработанный не только для программистов, но и для дизайнеров и специалистов по графике, поэтому естественно выбрать индексирование на основе 1 ,
источник
Из спецификации селектора уровня 3 CSS :
Это входит в гораздо более подробно с примерами. Похоже, что окончательный расчет
an+b
должен составить положительное число.Дополнительное форматирование в последнем абзаце мое, чтобы добавить акцент.
источник
Вероятно, для совместимости с XPath, другим языком обработки XML / HTML. Возникает вопрос: почему XPath использует индексирование на основе 1?
См. Https://stackoverflow.com/questions/3319341/why-do-indexes-in-xpath-start-with-1-and-not-0
Соответствующая (но спорная цитата):
«... логика на основе 1 была правильным выбором для XPath и XSLT ... потому что язык был разработан для пользователей, а не для программистов, и у пользователей все еще есть эта старомодная привычка ссылаться на первую главу книги как Глава Один..."
источник