Что означает * HTML Body в таблице стилей CSS?

В таблице стилей у меня есть:

    * HTML BODY
    {
        padding-right: 0px;
        padding-left: 0px;
        padding-bottom: 25px;
        padding-top: 190px;
    }
    * HTML #maincontent
    {
        width: 100%;
        height: 100%;
    }

я знаю, что А. означает класс, а # означает применение к идентификатору, но что означает * HTML?

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
3
0
7 448
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Для второго фрагмента, поскольку * соответствует чему-либо, элемент элемента является избыточным. Похоже, он здесь, чтобы напомнить автору о назначении стилей - что если он что-то изменит во втором фрагменте, убедитесь, что он проверяет элемент #maincontent, чтобы убедиться, что он выглядит правильно.

Это не лишнее. Это должно означать, что HTML является потомком какого-то другого элемента. В интерпретации большинства браузеров это не так. Но в IE HTML является потомком некоего загадочного убер-элемента.

recursive 18.12.2008 18:30

Упс: я почему-то их читал, как будто между ними была запятая! :(

Joel Coehoorn 18.12.2008 20:06

* означает любой элемент
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

Круто, спасибо .. Я не писал, но мне дали его использовать в шаблоне, и я просто хотел понять, почему он был использован, прежде чем слепо добавлять его.

Gribbler 18.12.2008 18:14

Иногда он используется для обеспечения соблюдения определенных правил во всем документе, таких как размер шрифта по умолчанию, шрифт или цвет. Правила сохранения с * следует использовать в начале вашего документа css, поскольку его область действия - это ваш полный документ. Следовательно, все конфликтующие стили с ранее объявленными селекторами будут перезаписаны (каскадное правило css)

Prusprus 11.10.2011 20:59

Что ж, это действительно плохой оператор селектора CSS, вот что. Позвольте мне рассказать вам:

[all elements] (sub-selection) [HTML] [BODY]

То есть он перебирает все элементы, чтобы найти элемент HTML, а затем BODY внутри. Проблема в том, что всегда будет только элемент тела 1, а #maincontent либо должен быть BODY, либо находиться внутри него. Период.

Как сказал Джоэл, это могло бы напоминать дизайнеру, но я не уверен в этом. Для меня этот код - определенный "запах кода"!

Вам следует переписать свои селекторы CSS на:

body {

А также:

#maincontent {

соответственно.

Это запах кода, но это потому, что это хакерство совместимости с IE.

Mark Pim 18.12.2008 18:12

Одна из причин, по которой люди добавляют селекторы, такие как *, html или body (или, в данном случае, все 3) в правило таблицы стилей, заключается в том, чтобы увеличить расчет специфичности селектора. Конечно, html никогда не будет потомком чего-либо еще, поэтому * html - это особый взлом IE, но есть причина, по которой люди добавляли html или тело в объявление:

Например:

html p { font-color: red }
p { font-color: blue }  

Абзацы в тегах html (как и все они) более конкретны, чем просто абзацы, поэтому цвет шрифта будет красным, независимо от порядка этих объявлений в таблицах стилей. Если бы было третье правило с html body p, оно имело бы приоритет.

Это немного меньше взлома, чем использование! Important, но по возможности лучше отключить больше семантических тегов.

Другие вопросы по теме