Esempio: http://jsfiddle.net/RuQNP/Perché fa .foo a: link, .foo a: visited {} selettore sovrascrive a: hover, a: selettore {} attivo in CSS?
<!DOCTYPE html>
<html>
<head>
<title>Foo</title>
<style type="text/css">
a:link, a:visited {
color: blue;
}
a:hover, a:active {
color: red;
}
.foo a:link, .foo a:visited {
color: green;
}
/* A possible fix */
/*
.foo a:hover, .foo a:active {
color: red;
}
*/
</style>
</head>
<body>
<div class="foo">
<a href="http://example.com/">Example</a>
</div>
</body>
</html>
quello che mi aspettavo:
Il collegamento apparirebbe rosso al passaggio del mouse.
cosa ottengo:
Il collegamento appare verde al passaggio del mouse.
Domande:
- Perché il
color
definito.foo a:link, .foo a:visited
selettore di Override quello ina:hover, a:active
? Cosa sta succedendo? - Capisco che posso risolvere il problema e ottenere quello che mi aspetto da decommentare il codice commentato. Tuttavia, desidero sapere in che modo è possibile correggere il selettore in modo che non sia sovrascrivere lo
color
definito ina:hover, a:active
?
Se ho capito correttamente http://www.w3.org/TR/CSS21/cascade.html#specificity (Grazie, BoltClock), questa è la tabella di specificità per i vari selettori nel codice.
a:link - 0 0 1 1
a:visited - 0 0 1 1
a:hover - 0 0 1 1
a:active - 0 0 1 1
.foo a:link - 0 0 2 1
.foo a:visited - 0 0 2 1
Così, lo stile definito per .foo a:link
prevale lo stile per a:hover
quando entrambi link
così come hover
pseudo-classi si applicano a un elemento A di classe foo
.
Analogamente, lo stile definito per .foo a:visited
sostituisce lo stile per a:hover
quando entrambi visited
nonché hover
pseudo-classi applicano a un elemento A di classe foo
.
selettori avere il concetto di * specificità *, il che significa che una "più specifica" il selezionatore supererà uno più generale (es 'html a.foo' trionferà' .foo'). Google o cerca qui su SO, ci sono un sacco di domande simili. – Jon
possibile duplicato di [CSS: Comprensione della priorità/specificità del selettore] (http://stackoverflow.com/questions/4072365/css-understanding-the-selectors-priority-specificity) – Jon
Sì, ma lo stile più specifico non si applica a a: al passaggio del mouse, quindi la domanda. –