Они идентичны, даже если мы рассматриваем производительность. Из спецификации мы можем прочитать
Если универсальный селектор, представленный * (то есть без префикса пространства имен), не является единственным компонентом последовательности простых селекторов селекторов или сразу за которым следует псевдоэлемент, тогда * может быть опущен и подразумевается наличие универсального селектора .
Так что написание > :first-child
должно означать то же самое как > *:first-child
для браузера.
Вы также можете прочитать
Примечание: рекомендуется , чтобы * не было пропущено , потому что это уменьшает потенциал путаница между, например, div :first-child
и div:first-child
. Здесь div *:first-child
более читабельно.
Так что это не только вопрос предпочтений, но и помогает избежать путаницы и сделать код более читабельным.
В новое разделение мы также можем прочитать:
Если элемент не имеет свойств, присутствие универсального селектора не влияет на то, соответствует ли элемент селектору.
и
Примечание. В некоторых случаях добавление универсального селектора может облегчить его чтение, даже если оно не влияет на поведение сопоставления. Например, div :first-child
и div:first-child
довольно сложно различить с первого взгляда, но запись первого как div *:first-child
делает разницу очевидной.