Это в значительной степени из-за того, как 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
стиль с наибольшим количеством побед.
Селекторы уровня 3 выбрасывают встроенные стили, поскольку они не связаны с селекторами, поэтому вместо этого вы получаете триплет значений для специфики, а четвертый - самый левый. – BoltClock
@BoltClock: Я либо устаю, либо этот комментарий неясен. Вы избегаете 'style =" "' переопределения в отношении специфики? –
Я имел в виду, что специфика относится к селекторам, поэтому встроенные стили не должны учитываться, следовательно, их удаление из спецификации CSS3 для вычисления специфичности. Они всегда переопределяют любые правила CSS (где '! Important' не касается), но это скорее каскад, чем специфика. В любом случае, это просто интересно. – BoltClock