





Для второго фрагмента, поскольку * соответствует чему-либо, элемент элемента является избыточным. Похоже, он здесь, чтобы напомнить автору о назначении стилей - что если он что-то изменит во втором фрагменте, убедитесь, что он проверяет элемент #maincontent, чтобы убедиться, что он выглядит правильно.
Упс: я почему-то их читал, как будто между ними была запятая! :(
* означает любой элемент HTML и BODY означают элементы <html> и <body>.
Следовательно, * HTML BODY означает элемент тела внутри элемента HTML, внутри любого элемента.
На самом деле это взлом браузера: некоторые браузеры будут соответствовать ему, а некоторые нет (Internet Explorer соответствует, Firefox не соответствует, не уверен в других).
* - это универсальный селектор, который соответствует любому элементу. например
P * { }
Соответствует любому элементу, который является дочерним элементом тега P
* HTML
не должен ничего значить, потому что HTML не может быть дочерним элементом чего-либо (по определению). Он используется потому, что IE (отредактируйте, по крайней мере, IE 5-6 - спасибо RoBorg!) Игнорирует * и поэтому его можно использовать для определения конкретных стилей IE:
HTML {
// Normal styles
}
* HTML {
// IE Specific styles
}
См. http://www.peachpit.com/articles/article.aspx?p=358552
Круто, спасибо .. Я не писал, но мне дали его использовать в шаблоне, и я просто хотел понять, почему он был использован, прежде чем слепо добавлять его.
Иногда он используется для обеспечения соблюдения определенных правил во всем документе, таких как размер шрифта по умолчанию, шрифт или цвет. Правила сохранения с * следует использовать в начале вашего документа css, поскольку его область действия - это ваш полный документ. Следовательно, все конфликтующие стили с ранее объявленными селекторами будут перезаписаны (каскадное правило css)
Что ж, это действительно плохой оператор селектора CSS, вот что. Позвольте мне рассказать вам:
[all elements] (sub-selection) [HTML] [BODY]
То есть он перебирает все элементы, чтобы найти элемент HTML, а затем BODY внутри. Проблема в том, что всегда будет только элемент тела 1, а #maincontent либо должен быть BODY, либо находиться внутри него. Период.
Как сказал Джоэл, это могло бы напоминать дизайнеру, но я не уверен в этом. Для меня этот код - определенный "запах кода"!
Вам следует переписать свои селекторы CSS на:
body {
А также:
#maincontent {
соответственно.
Это запах кода, но это потому, что это хакерство совместимости с IE.
Одна из причин, по которой люди добавляют селекторы, такие как *, html или body (или, в данном случае, все 3) в правило таблицы стилей, заключается в том, чтобы увеличить расчет специфичности селектора. Конечно, html никогда не будет потомком чего-либо еще, поэтому * html - это особый взлом IE, но есть причина, по которой люди добавляли html или тело в объявление:
Например:
html p { font-color: red }
p { font-color: blue }
Абзацы в тегах html (как и все они) более конкретны, чем просто абзацы, поэтому цвет шрифта будет красным, независимо от порядка этих объявлений в таблицах стилей. Если бы было третье правило с html body p, оно имело бы приоритет.
Это немного меньше взлома, чем использование! Important, но по возможности лучше отключить больше семантических тегов.
Это не лишнее. Это должно означать, что HTML является потомком какого-то другого элемента. В интерпретации большинства браузеров это не так. Но в IE HTML является потомком некоего загадочного убер-элемента.