2010-10-28 3 views
1

Нечетное поведение CSS. Когда я устанавливаю посещенный цвет с помощью CSS (a.nav: hover, как показано ниже), тогда зависание не работает после того, как пользователь посетит ссылку. Однако, когда я устанавливаю его со ссылкой на родительский элемент (.header a.nav: hover, как показано ниже), он работает. Зачем ?Помогите мне понять странное поведение CSS!

a.nav:visited{ 
color:yellow; 
} 

/*once the link is visited by user this rule not working*/ 
a.nav:hover{ 
color:red; 
} 

/*if we use this rule it works even after the link is visited*/ 
.header a.nav:hover{ 
color:red; 
} 

<div class="header"> 
<a class="nav" .. >test </a> 
</div> 
+0

Работы для меня: http://jsfiddle.net/9S9h5/ – poke

ответ

2

Это звучит как вопрос specificity. У вас есть какие-либо другие псевдоселектора a в вашем CSS? Если есть селектор, который более специфичен, чем a.nav:hover (например, .header a.nav:hover), он будет переопределять его независимо от его положения в файле.

+0

Официальная спецификация CSS2, если кто-то хочет ее прочитать: http://www.w3.org/TR/CSS21/cascade.html#specificity (и люди должны это прочитать! раздел о специфике селектора легко понять) –

+0

@ Denilson Спасибо за это. Я связался с тем, что было выше, потому что я думаю, что это удивительно, чтобы объяснить специфику Star Wars :) – Skilldrick

0
a.nav:hover, 
a.nav:visited:hover{ 
color:red; 
} 

или

a.nav:hover{ 
color:red !important; 
} 

Если заставить его работать.

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