2012-02-29 2 views
1

У меня есть панель навигации, и мне нужна активная страница, отмеченная «субактивным» классом на элементе li, чтобы иметь белый текст вместо черного. HTML и CSS можно найти здесь: http://jsfiddle.net/a4hBz/Цвет текста ссылки с «активным» классом

Я использую цвет в .subactive селекторе в CSS, но его игнорирует браузер.

ответ

4

Это в значительной степени из-за того, как CSS "весит" стили. Идентификаторы всегда имеют большее количество утверждений по имени стандартного тега, имени класса или псевдокласса. Простое решение должно быть специфичным с вашим классом привязки, применяя стиль «Активный», как и вы, с остальными стандартными элементами. В основном:

.subactive a 

должны стать

#sidenav .subactive a 

Если это не работает для вашей схемы, вам необходимо либо обратиться #sidenav в к классу, или обходным это какой-то другой способ.


Кстати, то, что я имел в виду ранее это стиль specificity-х. В настоящее время он стоит, ваши стили весят примерно так:

#sidenav a    a=0, b=1, c=0, d=1 -> specificity = 0,1,0,1 
.subactive a   a=0, b=0, c=1, d=1 -> specificity = 0,0,1,1 
#sidenav .subactive a a=0, b=1, c=1, d=1 -> specfiicity = 0,1,1,1 

Почти думать об этом так:

(a * 1000) + (b * 100) + (c * 10) + d 

стиль с наибольшим количеством побед.

+0

Селекторы уровня 3 выбрасывают встроенные стили, поскольку они не связаны с селекторами, поэтому вместо этого вы получаете триплет значений для специфики, а четвертый - самый левый. – BoltClock

+0

@BoltClock: Я либо устаю, либо этот комментарий неясен. Вы избегаете 'style =" "' переопределения в отношении специфики? –

+1

Я имел в виду, что специфика относится к селекторам, поэтому встроенные стили не должны учитываться, следовательно, их удаление из спецификации CSS3 для вычисления специфичности. Они всегда переопределяют любые правила CSS (где '! Important' не касается), но это скорее каскад, чем специфика. В любом случае, это просто интересно. – BoltClock

1

Либо добавить !imporatant:

.subactive a 
{ 
    color: #fff!important; 

    /**/ 

} 

Или увеличить specificity из определения:

http://www.w3.org/TR/CSS2/cascade.html#specificity

+3

Я всегда стараюсь избегать '! Important', поскольку это был один из тех атрибутов, который был разработан для конечных пользователей и переопределяет стили в случаях доступности. Хотя это возможно, мое скромное мнение избегает использования его как можно больше. –

+0

Согласен, поэтому я упомянул «специфичность» ... – xandercoded

0

Я бы не использовал важный, если мне не нужно.

Чтобы заставить его работать, я бы заменить строку

#sidenav a:hover, .subactive a 

в

#sidenav a:hover, #sidenav .subactive a:link 

и удалить код, ниже которого, кажется, не использовать

.subactive a 
{ 
    color: #fff; 
    background-color: #034676; 
} 

Проверьте рабочий пример на http://jsfiddle.net/a4hBz/1/

+1

Нежное напоминание, SO - отличный ресурс, потому что вопрос и ответ обычно находятся на той же странице. Хотя решение, которое вы отправили в jsFiddle, работает и ссылается, всегда полезно опубликовать, какие ваши изменения в вашем ответе здесь, в случае (дни/месяцы/годы), теперь кому-то захотелось решения, но ваша ссылка больше недействительна. Помимо этого, добро пожаловать в SO! –

+0

Спасибо за совет, я буду продолжать наращивать свою способность отвечать на вопросы наилучшим образом. благодаря – Filype

Смежные вопросы