2010-04-14 11 views
13

Quindi stiamo costringendoci a utilizzare il seguente ordine per ancora CSS pseudo-classiCSS: a: link vs solo (senza il: parte link)

a:link { color: red }  
a:visited { color: blue } 
a:hover { color: yellow } 
a:active { color: lime } 

ma la mia domanda è: perché perdere tempo con l'a : collegamento parte? Piuttosto, c'è qualche vantaggio a quanto sopra (tranne forse la chiarezza) su:

a { color:red; } /* notice no :link part */ 
a:visited { color: blue; } 
etc.,etc. 

risposta

13

:link seleziona i collegamenti non visitati, vale a dire: le ancore con un attributo href che non sono stati visitati dal browser (per qualsiasi definizione il venditore del browser ha per "visitato").

Se ha :link allora non sarà mai soddisfatta <h1><a name="foo">A foo to be linked to</a></h1>

(Anche se si deve usare <h1 id="foo">A foo to be linked to</h1> in questi giorni.)

A parte questo, lo fa rendere più chiaro ciò che è per.

a   { color: orange } 
 
a:link { color: blue }  
 
a:visited { color: indigo } 
 
a:hover { color: green } 
 
a:active { color: lime }
<a>my anchor without href</a> 
 
    <br><br> 
 
    <a href="http://somelinkhere.com">my anchor without href</a>

(Essi hanno anche diversi livelli di specificity)

+0

puoi spiegare le fermate corrispondenti alla parte un po 'di più per favore? Non sono sicuro di aver capito. – Rob

+2

'a' corrisponde a tutte le ancore. 'a: link' corrisponde alle ancore che sono collegamenti non visitati. 'a: visited' corrisponde alle ancore che sono link visitati. '' è un'ancora che non è un collegamento di alcun tipo. – Quentin

+1

@Quentin: Davvero? Non riesco a trovarlo nelle specifiche. – feklee

8

solo "un" si riferisce a tutti i possibili collegamenti (non visitati, visitato, aleggiava, e attivo), mentre "un: link "si riferisce solo ai normali collegamenti non visitati.

Se si utilizza "a" anziché "a: link", si imposta il CSS predefinito per TUTTI i collegamenti a qualunque "a" è impostato su. In questo caso specifico, poiché specifichi ogni possibile pseudoclass, in sostanza non importa se dici "a: link" o semplicemente "a"

Quindi nel primo gruppo, dove scrivi tutte le pseudoclass (un : Link, a: visited, ecc), si sta specificando il CSS per ogni caso possibile entro "un"

a:link { color: red }  //set unvisited links to red 
a:visited { color: blue } //set visited links to blue 
a:hover { color: yellow } //set hovered links to yellow 
a:active { color: lime } //set active links to lime 

Nel secondo gruppo, dove basta scrivere "a", in realtà si sta impostando il CSS di default per tutti i collegamenti a ciò che scrivi nella prima riga, quindi ridefinendo il CSS per le altre pseudoclassie

a { color: red }   //set ALL links to red! 
a:visited { color: blue } //hm, never mind, let's set visited links to blue 
a:hover { color: yellow } //hm, never mind, let's set hovered links to yellow 
a:active { color: lime } //hm, never mind, let's set active links to lime 
+0

': link' non corrisponde * solo * collegamenti non visitati, corrisponde a ** tutti ** i collegamenti. – OdraEncoded

+0

@OdraEncoded ': link' fa _non_ corrisponde sempre _all_ link, ad es. ': visited' e' a' hanno la precedenza (in questo ordine). ': link' abbinerà solo * tutti * i collegamenti (in una certa misura) se né ': visited' né' a' sono abbinati. È quindi più probabile che ': link' corrisponda ai collegamenti non visitati 'solo'. – WynandB

+1

@Wynand ': link' ** corrisponde sempre a tutti i collegamenti **. ': visited' ha una precedenza più alta, sì, ma se c'è un': link' e un ': visited' allora ** both ** sono abbinati e gli effetti selettore': visited' vengono applicati dopo ': link' effetti selettori. Proprio come in ogni altra casella di selezione del selettore multiplo. In CSS non esiste un selettore che non corrisponda perché esiste un altro selettore. http://jsfiddle.net/z9X54/1/ – OdraEncoded

1

http://www.w3schools.com/css/css_pseudo_classes.asp

: collegamento è quando il collegamento non è visitato. Quindi, quando c'è un ancoraggio con un attributo href e l'utente non è mai stato sulla pagina dietro l'ancora.

+0

Questo non risponde alla domanda. – Quentin

+0

@Quentin In realtà, questa risposta è azzeccata. – WynandB

+0

@Wynand no, non lo è, ': link' corrisponde a più di hyperlink non visitati. – OdraEncoded

0

Il selettore :link è un selettore di pseudo-elementi per i collegamenti ipertestuali, qualsiasi elemento che è un collegamento ipertestuale verrà abbinato. Il selettore a corrisponderà a "solo" elementi di ancoraggio.

Normalmente, ogni elemento a è anche un collegamento ipertestuale, e io non sono a conoscenza me di un modo per creare un collegamento ipertestuale in HTML senza l'utilizzo di un ancoraggio, quindi probabilmente è possibile utilizzare una di esse nella maggior parte dei casi .

Tuttavia, l'utilizzo di solo a corrisponderà a elementi di ancoraggio che non sono collegamenti ipertestuali.Ad esempio, un elemento di ancoraggio scritto in questo modo <a name=sign-up>Sign up form</a> non corrisponderà allo pseudoelemento elemento di collegamento ipertestuale :link ma corrisponderà al selettore a.