Учитывая два класса одинаковой специфичности, определяющих свойство цвета, я думал, что последний класс, указанный в атрибуте class элемента, будет иметь приоритет.
Из 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>
Текст вывода синий.
Я никогда не замечал этого раньше. edit Я думал, что изменить последний класс, указанный в атрибуте класса элемента, имеет приоритет.
изменить Чтобы уточнить → Иногда я думаю о элементе как о домашнем животном, скажем, о собаке. Я вижу добавление класса к атрибуту class элемента как выдачу команды собаке. Если я скажу ему сесть, а потом скажу, что он ложится, я ожидаю, что собака ляжет. Я не ожидаю, что собака останется сидеть просто потому, что я научил ее сидеть после (совсем недавно), я научил ее лежать.
Итак... два вопроса.
- Это так, как это должно быть? ответил
- Если так... почему? Я не вижу преимущества того, что нужно копать в классе декларации, чтобы определить, что было объявлено перед другим.
Большое спасибо!