Несколько! Важных объявлений классов и приоритетов

Теоретически, если у вас был такой сценарий:

<style type="text/css">
    .class1 {
        color:#F00 !important;
    }
    .class2 {
        color:#00F !important;
    }
</style>

<p class="class2 class1">Test</p>

Какой цвет должен иметь приоритет? Как браузеры определяют приоритет в этом сценарии?

3 ответа

Решение

По данным этого источника: http://www.boogiejack.com/CSS_4.html

class2 должен переопределить стиль class1.

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

С двумя одинаково взвешенными селекторами поведение одинаково, применяете ли вы !important чтобы оба или опустить его от обоих.

<style type="text/css">
    .class1 {
        color: #F00; /* red */
    }
    .class2 {
        color: #00F; /* blue */
    }
</style>

Порядок классов в атрибуте html class не зависит от уровня специфичности каждого селектора класса.

<p class="class2 class1">Test X</p>
<p class="class1 class2">Test Y</p>

Выход

  • Тест X → синий
  • Тест Y → синий

Если вы используете !important только для одного класса селектора этот класс будет иметь приоритет (поскольку он имеет более высокий уровень специфичности).

Поскольку все классы одинаково важны при добавлении к элементу, не имеет значения, в каком порядке вы присваиваете их своему абзацу.

В этом случае, color в .class1 а также .class2 оба объявлены как важные, но поскольку.class2 был объявлен после.class1, браузер покажет ваш абзац синим цветом, поскольку он перезаписывает объявленный цвет из .class1

Также посмотрите на это: http://jsfiddle.net/3uPXx/1/ Вы можете видеть, что не имеет значения, в каком порядке вы объявляете класс в своем абзаце. Поскольку оба класса определяют один и тот же атрибут (color) он будет перезаписан тем классом, который объявлен последним.

Единственная вещь, которая может перезаписать это, - это встроенный стиль с! Важным, как вы можете видеть на скрипке.

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