Приоритет стилей CSS

CSS - это каскадные таблицы стилей. При определении стилей элемента страницы используются 2 принципа: наследование и каскадирование.

Наследование

Свойства, примененные к элементу, автоматически применяются ко всем его дочерним элементам. Но это справедливо только для тех свойств, для которых указана возможность наследования. Например, если для блока задать цвет шрифта и рамку, то цвет шрифта применится ко всем тегам, расположенным внутри блока. Рамка же не наследуется, и внутренние блоки будут без рамок. Пример:

<html>
<head>
  <title>Наследование</title>
  <style>
    div {
      color: red;
      border: 1px solid black;
    }
    b {
      color: blue;
    }
  </style>
</head>
<body>
  <div>
    <p>Не весь <span>текст <b>красный</b></span>.</p>
  </div>
</body>
</html>

Не весь текст красный.

В данном примере параграф <p> унаследовал только цвет шрифта от своего родителя <div>. Элемент <span> унаследовал цвет шрифта уже от своего родителя <p>. А вот для тега <b> задан свой цвет шрифта, и все его дочерние элементы будут наследовать новый цвет шрифта.

Чтобы принудительно заставить свойство унаследовать значение от родительского элемента, в CSS введено ключевое слово inherit. Например, для предыдущего примера добавлено свойство:

p {
  border: inherit;
}

Не весь текст красный.

Параграф <p> унаследовал рамку от своего родителя <div>.

Каскадирование

Принцип каскадирования нужен для случаев, когда для одного элемента заданы разные стили. Чтобы веб-браузер знал, какой стиль выбрать, существует приоритет применения стилей. Далее приводится перечисление способов задания свойств элементов в порядке возрастания приоритета от наименьшего до максимального.

  • Для некоторых часто используемых элементов браузеры сами применяют стили. Если не задавать эти стили вручную, то в разных браузерах страница может отображаться с большими различиями. Стили браузеров имеют наименьший приоритет.
  • Некоторые браузеры позволяют пользователю самостоятельно настроить стили по умолчанию.
  • Применение свойства тегу по принципу наследования.
  • Непосредственное задание стиля HTML-элементу. Зависит от способа применения свойств (по возрастанию приоритета):
    • Подключение внешнего файла стилей к документу.
    • Импорт свойств из внешнего файла.
    • Описание в теге <style>.
    • Описание в глобальном атрибуте style.
  • Максимальным приоритетом обладает свойство, для которого это явно задано. Для этого используется ключевое слово !important. Например:

    body {
      background-color: silver !important;
    }