Ответ 1
Читайте о специфичности:
Короткий ответ: если два селектора имеют одинаковую специфичность, последний объявленный выигрыш.
Я знаю, что можно указать несколько классов для элемента в HTML:
<div class='one two'>Text</div>
Кажется, что классы доступны из Javascript как одна строка.
Что происходит, когда классы задаются с конфликтующими свойствами? Например,
div.one {
background-color: red;
color: blue;
}
div.two {
background-color: green;
}
Будет ли результат зависеть от порядка, в котором указаны классы? Например, могу ли я разумно ожидать, что div выше появится с синим текстом и зеленым фоном, потому что класс two
будет оцениваться вторым, перезаписав свойство background-color
?
Читайте о специфичности:
Короткий ответ: если два селектора имеют одинаковую специфичность, последний объявленный выигрыш.
CSS имеет очень четко определенный порядок приоритета.
В таких случаях, когда все остальные одинаковы, а приоритет равен, браузер должен выбрать стиль, определенный последним в таблицах стилей.
В приведенном примере это означало бы, что стили div.two
переопределили бы div.one
, где одно и то же свойство определено в обоих.
Кстати, это тоже та же функция, которая позволяет вам определять несколько стилей с тем же свойством в одном и том же селекторе, чтобы поддерживать различные функции браузера. Например, некоторые браузеры могут не поддерживать цвета rgba, поэтому вы можете сделать следующее:
.myclass {
background: rgb(200, 54, 54);
background: rgba(200, 54, 54, 0.5);
}
Все браузеры будут выбирать последнее объявление background
, которое они поддерживают, поэтому браузеры, которые поддерживают rgba
, будут выбирать второй, в то время как браузеры, которые этого не делают, будут делать с первым.
Это также причина того, что при использовании стилей с префиксом поставщика вы также должны указывать версию без префикса после префиксной версии (версий), так что, когда этот браузер поставщика начнет поддерживать версию с префиксом стиль, вы можете быть уверены, что он будет использовать его, а не префиксную версию (которая может не поддерживать все функции окончательной версии).
Если селектора имеют тот же уровень приоритета (как они здесь делают), в зависимости от того, что указано позже, имеет приоритет. В этом случае фон должен быть зеленым, но цвет шрифта синий.
Из спецификация CSS:
Наконец, сортировка по указанному порядку: если два объявления имеют одинаковые вес, происхождение и специфичность, последний указал победы. Объявления в импортированных таблицах стилей считаются объявления в самой таблице стилей.
То, что вы используете для их стиля, называется "каскадные таблицы стилей". Каскадная часть означает, что он как водопад и будущие правила основываются на (или перезаписывают) предыдущие. Таким образом, второе правило перезапишет свойство background-color, но оно все равно сохранит цвет шрифта.
(будьте осторожны с приоритетом, хотя правило, которое отключается от идентификатора, имеет более высокий приоритет над тем, который отключается от класса, независимо от того, где они размещены.)
http://jsfiddle.net/mrtsherman/2NpXS/
Зависит от порядка таблицы стилей. Более поздние декларации стиля имеют приоритет. Вы можете инвертировать две строки css для просмотра.
Результат зависит от порядка, в котором указаны классы.
Здесь хорошая запись о порядке выполнения правил CSS: http://htmlhelp.com/reference/css/structure.html