Большинство ответов верны, когда говорят, что это проблема специфичности, но неверны или неполны в объяснении правил специфичности.
В основном в вашем случае .rightColoumn *
«более конкретен», чем td
, и поэтому правило побеждает, даже если оно наступает раньше.
Правила CSS 2.1 находятся здесь . Вот эти правила:
Конкатенация четырех чисел abcd (в системе счисления с большой базой) дает специфичность.
Таким образом, в вашем случае у вас есть два правила:
.rightColumn * {} /* a = 0, b = 0; c = 1, d = 0 : Specificity = 0010*/
td {} /* a = 0, b = 0, c = 0, d = 1 : Specificity = 0001 */
0001 ниже, чем 0010, и поэтому первое правило выигрывает.
Есть два способа исправить это:
!important
, чтобы сделать правило более «важным». Я бы избегал этого, потому что это сбивает с толку, когда у вас много правил, распределенных по нескольким файлам. Пример:
Редактировать: Исправлены правила специфичности для *. Комментарий Дэвида побудил меня перечитать спецификацию, которая показывает, что селектор * ничего не влияет на оценку специфичности.
Я думаю, вы имеете в виду соглашение об именах методов ShouldSerialize * PropertyName *
, но AFAIK это относится не к сериализации XML, а к сериализации свойств компонентов в Windows Forms (I все равно может ошибаться). См. Здесь: http://msdn.microsoft.com/en-us/library/53b8022e%28VS.71%29.aspx
ОБНОВЛЕНИЕ . Кажется, что это также работает для сериализации XML, но это недокументированная функция: http://horacegoescoding.blogspot.com/2009/04/using-shouldserialize-for-conditional.html