Хотя оба варианта эквивалентны по стилевому результату, необходимо учитывать еще пару факторов.
Использование *
увеличивает размер файла
Если вы не используете минимизатор CSS (удаляет ненужные данные, такие как лишние пробелы), который удаляет ненужные звездочки, использование *
каждый раз, когда тег не указан, приводит к появлению в файле значительного количества дополнительных символов, которые приведет к увеличению времени загрузки (и большему использованию полосы пропускания). Хотя я бы не стал просматривать большой файл и удалять уже имеющиеся звездочки (если у вас действительно нет времени для этого и вам не нравятся утомительные задачи, которые могут привести к ошибке, которую вы не обнаружите годами), я бы предложил не включать ненужные звездочки при написании новых стилей и удалении ненужных звездочек при редактировании старых стилей.
Использование *
может привести к путанице
Использование *
, когда оно не нужно, может привести к путанице, особенно когда кто-то новый работает над проектом и не имеет отношения к присутствию *
, когда он не нужен (что довольно часто встречается).
Пример
/**
* This matches an element with the class `alert` within
* any element within an `article` element
*/
article * .alert { /* ... */ }
против
/**
* This matches an element with the class `alert` within
* an `article` element
*/
article *.alert { /* ... */ }
Если в проекте 100% согласованность (и стиль известен всем, кто работает над проектом), то первый пример никогда не произойдет (вместо этого будет article * *.alert
). Тем не менее, это идеальная ситуация, которая, скорее всего, развалится после нескольких поколений разработчиков (вместо этого люди любят использовать свой собственный стиль). Таким образом, даже если у вас есть согласованный стиль, новый сотрудник может на короткое время написать и написать в своем собственном стиле или неправильно прочитать текущий стиль и создать код, который не соответствует селекторам (или наоборот). Поэтому я бы предложил придерживаться стандарта, который я видел больше всего (читай: исключительно ) в проектах и на сайтах:
Не не используйте звездочку, если она не требуется .
Беглый взгляд на источник некоторых известных веб-сайтов (например, Facebook, Google, Yahoo и т. Д.) Покажет, что они не используют звездочки, если не обязаны (даже в своих не минимизированных стилях). Вы также можете взглянуть на некоторые проекты с открытым исходным кодом на GitHub .
Заключение
Звездочка должна использоваться только в том случае, если она абсолютно необходима (например, body * p
для соответствия абзацам, у которых есть родительский элемент, отличный от тела). Это не только неписаный стандарт (и менее вероятный способ вызвать путаницу), но он также уменьшает размер файла таблиц стилей, что увеличивает скорость загрузки сайта.