* vs html, body, div, span, applet, object, iframe... и т. д.
Возможный дубликат:
почему при сбросе css не используется '*', чтобы охватить все элементы?
В настоящее время я использую:
*{
margin:0;
padding:0;
}
Но я не уверен, почему люди продолжают использовать:
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
margin:0;
padding:0;
}
Есть ли какая-то конкретная причина, по которой большинство сайтов (включая этот) используют второй метод? Должна быть очень веская причина для увеличения размера CSS-файла.
2 ответа
Я бы на самом деле не согласился бы с тем, что большинство веб-разработчиков составляют длинный список таких селекторов элементов. На самом деле, у веб-разработчиков разные взгляды на лучший способ сброса CSS.
Например, "Сброс Триполи" использует универсальный селектор *.
В этой статье подробно описаны лишь несколько способов сброса CSS.
http://sixrevisions.com/css/a-comprehensive-guide-to-css-resets/
Я думаю, что одной из причин быть более конкретным является производительность, о которой говорилось выше (хотя современные браузеры довольно быстро разбирают CSS). Кроме того, разработчики могут также более конкретные, если это необходимо. Например, некоторые свойства CSS, такие как border-collapse
применяются только к конкретным типам элементов.
Это проблема производительности. Я настоятельно рекомендую вам прочитать работу Стива Соудерса (Steve Souders), который провел обширный сравнительный анализ и анализ, когда речь заходит о высокопроизводительных интерфейсах. По сути, браузер должен много анализировать и анализировать DOM, когда вы используете оператор *, тогда как если вы явно указываете операторы, он не обязан это делать.
Это очень похоже на выполнение SELECT * против выполнения SELECT id в запросе SQL. Если вы нажмете SELECT *, это приведет к дополнительным издержкам, пока база данных будет искать имена столбцов. То же самое с этим.
Для примера работы Стива Соудерса над этим прочитайте это.