Учитывая два класса одинаковой специфичности, определяющих свойство цвета, я думал, что последний класс, указанный в атрибуте класса элемента, будет иметь приоритет.Приоритет нескольких классов, определяющих свойство цвета, устанавливаемых порядком декларации, а не порядком спецификации
От http://htmlhelp.com/reference/css/structure.html:
Порядка Спецификации Чтобы сделать это легко, когда два правила имеют одинаковый вес, последнее правило, указанные победы.
В следующем примере вакуумного кода порядок, в котором установлен набор правил класса, определяет приоритет. Здесь имеет приоритет последнее или последнее определение набора правил класса.
<style>
.makeBlue {color: blue;}
.makeGreen {color:green;}
</style>
<div>
<p class="makeGreen makeBlue">makeGreen makeBlue</p>
<p class="makeBlue makeGreen">makeBlue makeGreen</p>
</div>
Текст выходной зеленый.
Если я поменять порядок объявления класса, и объявить .makeGreen первого
<style>
.makeGreen {color:green;}
.makeBlue {color: blue;}
</style>
<div>
<p class="makeGreen makeBlue">makeGreen makeBlue</p>
<p class="makeBlue makeGreen">makeBlue makeGreen</p>
</div>
Текст выходного синий.
Я никогда не замечал этого раньше. Редактировать Я думал Редактировать последний класс, указанный в атрибуте class элемента имеет приоритет.
редактировать Для уточнения -> я иногда думаю элемент в качестве домашнего животного, скажем, собака. Я вижу добавление класса к атрибуту класса элемента как выдачу команды собаке. Если я скажу ему сесть, а потом скажу, что он ложится, я ожидаю, что собака ляжет. Я не ожидаю, что собака останется сидеть просто потому, что я научил ее сидеть после (совсем недавно), я научил ее лежать.
Итак ... два вопроса.
- Это как должно быть?
- Если так ... почему? Я не вижу преимущества в том, чтобы просканировать декларации класса , чтобы определить, что было объявлено перед другим.
Большое спасибо!
Спасибо, что сообщение отвечает на первый вопрос, как и ответы j08691 & mathguy54. Я все еще не уверен, почему так (вопрос № 2). Если мне не хватает общей ссылки, пожалуйста, дайте мне знать. Я хотел бы лучше понять основную причину того, почему порядок объявления стилей превосходит порядок появления в атрибуте класса элемента. * отредактированный оригинальный вопрос * – IdusOrtus
«Я вижу добавление класса к атрибуту класса элемента как выдачу команды собаке». Это не лучший способ увидеть это. Атрибуты * очень * отличаются от команд. Атрибуты * - это нечто, присущее элементу, тогда как команды, с другой стороны, являются вещами, которые элемент * делает *, часто в последовательности (или один за другим). – BoltClock
В ответ на ваш второй вопрос это просто потому, что «специфика» - это концепция CSS. Язык документа (в данном случае, HTML) не имеет никакого отношения к нему. – BoltClock