Según entiendo, el CSS specificity rules indica que una pseudoclase tiene el mismo peso que un selector de etiqueta. Entonces, un selector como "div p a" sería más específico que "a: link".¿Por qué el enlace pseudo clase rompe las reglas de especificidad de CSS esperadas?
Pero como demuestra el siguiente caso de prueba, ese no parece ser el caso. ¿Por qué el enlace es rojo?
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<meta charset="UTF-8">
<style type="text/css" media="screen">
a:link { color: red; }
div p a { color: green; }
div.foobar p a { color: green; }
</style>
</head>
<body>
<div>
<p>
<a href="http://somecrazyurlwierdthing.com">A link... why is it red?</a>
</p>
</div>
<div class="foobar">
<p>
<a href="http://somecrazyurlwierdthing.com">But it turns green when you add a class selector.</a>
</p>
</div>
</body>
</html>
editado el ejemplo para incluir el "div.foobar p un" selector.
Sí, no me di cuenta de que hay una diferencia entre un pseudo selector y una pseudoclase. Tal vez haya una razón por la cual una pseudoclase tiene un peso mayor, pero al menos en mi caso, parece hacer más difícil la codificación de los estilos genéricos de "a: enlace". Creo que voy a cambiar la plantilla de wordpress que estoy editando para usar "a {color: XXX}" en lugar de "a: link {color: XXX". – timmfin
Recuerde que un elemento 'a' no tiene que ser un enlace; en su lugar puede ser un delimitador, para vincularse * a * a través de un fragmento de URL.Esta es la razón principal para '' link' y las pseudo-clases relacionadas: permitir que los elementos 'a' que son enlaces se distingan de aquellos que no lo son. También considere usar las pseudo-clases apropiadas (': link',': visited', ': hover',': focus' y ': active') para mejorar la usabilidad al reflejar el estado de la interacción del usuario con la página/sitio ; Personalmente, no me gustan las páginas con una serie de enlaces que no definen un estilo distinto para ': visited'. – NickFitz