Я согласен с выбранным ответом (который превосходен), но я хочу добавить, что вы должны быть настолько конкретны, насколько вам нужно.Это гарантирует, что вы можете переопределять с большей конкретностью по мере необходимости.Если вы всегда очень конкретны, у вас не останется способов переопределить стили.
Если вам интересно, порядок специфичности будет следующим:
идентификаторы (100 баллов), классы.* (10 баллов), элементы (1 балл).
*, включая псевдоклассы
Подсистема CSS подсчитывает баллы за каждый выбранный вами селектор в зависимости от уровня специфичности.
ul.menu li a = ((1 + 10) + 1 + 1) = 13
#widget ul.menu = (100 + (1 + 10)) = 111 points
#widget ul.menu li = 112 points
#widget ul.menu li#home = 212 points
#widget ul.menu li#home a = 213 points
body #widget ul.menu li#home a#homeLink = 313 points (High-score FAIL!)
Если вы подумаете об этом, преднамеренное создание классов или идентификаторов для вещей означает, что вы пытаетесь отличить их от других похожих элементов, поэтому это придает им вес.
Все страницы имеют разныеСтруктуры DOM и некоторые проекты могут не иметь повторяющихся шаблонов (O_0), но если вы укажете каждый шаг по привычке (то есть селекторы с высокими показателями), у вас будет меньше способов превзойти предыдущие оценки;ваши первоначальные определения установят высокие записи и уменьшат количество способов их переопределения на более поздний срок (без добавления разметки или использования важного флага IE!).
Как правило, япопробуйте написать страницы с низким баллом.Они вставили «каскад» в CSS;в результате меньше кода, больше удобства сопровождения и, как мы надеемся, более быстрый рендеринг (?!).
http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/