2010-04-14 10 views
13

Así que estamos obligados a utilizar la siguiente orden para el ancla CSS pseudo-clasesCSS: a: link vs sólo una (sin la: parte de enlace)

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

pero mi pregunta es ¿por qué molestarse con la A : parte del enlace? Más bien, ¿hay alguna ventaja para el anterior (con excepción quizás de mayor claridad) sobre: ​​

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

Respuesta

13

:link selecciona los enlaces no visitados, es decir: anclas con un atributo href que no han sido visitadas por el navegador (por cualquier definición del el proveedor del navegador tiene para "visitado").

Si tiene :link entonces nunca coincidirá <h1><a name="foo">A foo to be linked to</a></h1>

(Aunque usted debe utilizar <h1 id="foo">A foo to be linked to</h1> estos días.)

Aparte de eso, hace que sea más claro para qué sirve.

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>

(También tienen diferentes niveles de specificity)

+0

¿Puede explicar las paradas para que coincida con la parte un poco más, por favor? No estoy seguro de comprender. – Rob

+2

'a' coincide con todos los anclajes. 'a: link' coincide con los anclajes que son enlaces no visitados. 'a: visited' coincide con los enlaces que se visitan. '' es un ancla que no es un enlace de ningún tipo. – Quentin

+1

@Quentin: ¿De verdad? No puedo encontrar eso en las especificaciones. – feklee

8

sólo "una" se refiere a todos los posibles vínculos (no visitados, visitó, mantenido, y activo), mientras que "a: enlace "solo se refiere a enlaces normales no visitados".

Si usa "a" en lugar de "a: enlace", está configurando el CSS predeterminado para TODOS los enlaces a lo que sea que "a" esté configurado. En este caso específico, dado que especifica cada pseudoclass posible, esencialmente no importa si dice "a: link" o simplemente "a"

Entonces en el primer grupo, donde escribe todas las pseudoclases (a : link, a: visited, etc), que está especificando la CSS para cada caso posible dentro de la "a"

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 

En el segundo grupo, en el que acaba de escribir "a", que está configurando en realidad el CSS por defecto para todos los enlaces a lo que escribe en la primera línea, luego redefiniendo el CSS para las otras pseudoclases

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' no coincide con * solo * enlaces no visitados, coincide ** con ** todos los enlaces. – OdraEncoded

+0

@OdraEncoded ': link' does _not_ always match _all_ links, p. Ej. ': visited' y' a' tienen prioridad (en ese orden). ': link' solo coincidirá con los enlaces * all * (en cierta medida) si ni' 'visited' ni' a' coinciden. Es por eso que es más probable que ': link' haga coincidir los enlaces no visitados 'solo'. – WynandB

+1

@Wynand ': enlace' ** siempre coincide con todos los enlaces **. ': visited' tiene una precedencia más alta, sí, pero si hay un': link' y un ': visited', entonces ** both ** son coincidentes y los efectos del selector': visited' se aplican después del ': link' efectos de selector. Al igual que en cualquier otro caso de coincidencia de selector múltiple. En CSS no existe un selector que no coincida porque existe otro selector. http://jsfiddle.net/z9X54/1/ – OdraEncoded

1

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

: enlace es cuando el enlace no se ha visitado. Entonces, cuando hay un anclaje con un atributo href y el usuario nunca ha estado en la página detrás del anclaje.

+0

Eso no responde la pregunta. – Quentin

+0

@Quentin En realidad, esta respuesta es perfecta. – WynandB

+0

@Wynand no, no lo es, ': link' coincide más que hipervínculos no visitados. – OdraEncoded

0

Selector :link es un selector de pseudo-elemento para hipervínculos, se combinará cualquier elemento que sea un hipervínculo. El selector a coincidirá con los elementos de ancla "solo".

Normalmente, cada elemento a es también un hipervínculo, y no estoy consciente de mí mismo de cualquier manera de crear un hipervínculo en HTML sin necesidad de utilizar un ancla, por lo que probablemente puede utilizar cualquiera de ellos en la mayoría de los casos .

Sin embargo, al usar solo a coincidirá con los elementos de anclaje que no son hipervínculos.Por ejemplo, un elemento de ancla escrito de esta manera <a name=sign-up>Sign up form</a> no coincidirá con el selector de pseudo-elemento de hipervínculo :link, pero coincidirá con el selector a.

Cuestiones relacionadas