В двух словах, как CSS определяет, когда применять один стиль над другим?Специфика CSS. Как «он» определяет, какие стили применять?
В прошлом году я работал с большим количеством JavaScript, а селекторы на основе CSS, используемые в jQuery, заставили меня узнать больше о том, как они работают. Я несколько раз проходил через W3 CSS3 selectors document, и это помогло мне понять, как лучше использовать селектора CSS в jQuery, но это не помогло мне понять, когда одно правило CSS будет применено к другому.
Я покажу вам пример того, чего я не понимаю.
У меня есть следующий HTML-код:
<div class='item'>
<a>Link 1</a>
<a class='special'>Link 2</a>
</div>
У меня есть следующие CSS:
.item a {
text-decoration: none;
color: black;
font-weight: bold;
font-size: 1em; }
.special {
text-decoration: underline;
color: red;
font-weight: normal;
font-size: 2em; }
Учитывая вышеизложенное, как Link 1 и Link 2 будет стиль же, как определено .item a
CSS. Почему стиль, связанный с .special
, не имеет приоритета для ссылки 2?
Очевидно, что я могу получить вокруг него, как это:
.special {
text-decoration: underline !important;
color: red !important;
font-weight: normal !important;
font-size: 1em !important; }
Но я чувствую, что это хак, что я должен посыпать из-за мое отсутствие понимания. Когда я использую !important
, я чувствую себя немного похож на наркомана, который скользит по небольшому количеству запрещенного вещества, заявляя, что нормально заниматься «одним-единственным», прежде чем уйти навсегда.
Кроме того, если бы я хотел действительно узнать CSS, есть ли отличные книги, чтобы рекомендовать?
Эта ссылка выглядит довольно тщательной, и в качестве бонуса есть фотографии штурмовиков и Дарта Вейдера. [Специфика CSS] (http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/) –
Спасибо, что задали этот вопрос. Я в той же лодке, что и ты. – srijan
@JamesMontagne +1 для темной стороны. – Jonathan