Есть ли функциональная разница между> *: first-child и>: first-child? - PullRequest
1 голос
/ 02 марта 2020

При написании блока кода я заметил, что в одном месте я написал > :first-child, а затем > *:first-child. Оба блока кажутся работоспособными, но есть ли разница между ними?

1 Ответ

2 голосов
/ 02 марта 2020

Они идентичны, даже если мы рассматриваем производительность. Из спецификации мы можем прочитать

Если универсальный селектор, представленный * (то есть без префикса пространства имен), не является единственным компонентом последовательности простых селекторов селекторов или сразу за которым следует псевдоэлемент, тогда * может быть опущен и подразумевается наличие универсального селектора .

Так что написание > :first-child должно означать то же самое как > *:first-child для браузера.

Вы также можете прочитать

Примечание: рекомендуется , чтобы * не было пропущено , потому что это уменьшает потенциал путаница между, например, div :first-child и div:first-child. Здесь div *:first-child более читабельно.

Так что это не только вопрос предпочтений, но и помогает избежать путаницы и сделать код более читабельным.


В новое разделение мы также можем прочитать:

Если элемент не имеет свойств, присутствие универсального селектора не влияет на то, соответствует ли элемент селектору.

и

Примечание. В некоторых случаях добавление универсального селектора может облегчить его чтение, даже если оно не влияет на поведение сопоставления. Например, div :first-child и div:first-child довольно сложно различить с первого взгляда, но запись первого как div *:first-child делает разницу очевидной.

...