Tengo un conjunto de enlaces con estilo que usan :before
para aplicar una flecha.
Se ve bien en todos los navegadores, pero cuando aplico el subrayado al enlace, no quiero tener subrayado en la :before
parte (la flecha).
Ver jsfiddle por ejemplo: http://jsfiddle.net/r42e5/1/
¿Es posible eliminar esto? El estilo de prueba con el que me senté #test p a:hover:before
se aplica (según Firebug), pero el subrayado sigue ahí.
¿Alguna forma de evitar esto?
#test {
color: #B2B2B2;
}
#test p a {
color: #B2B2B2;
text-decoration: none;
}
#test p a:hover {
text-decoration: underline;
}
#test p a:before {
color: #B2B2B2;
content: "► ";
text-decoration: none;
}
#test p a:hover:before {
text-decoration: none;
}
<div id="test">
<p><a href="#">A link</a></p>
<p><a href="#">Another link</a></p>
</div>
html
css
hyperlink
pseudo-element
text-decorations
OptimusCrime
fuente
fuente
Respuestas:
Sí, si cambia el estilo de visualización del elemento en línea de
display:inline
(el predeterminado) adisplay:inline-block
:Esto se debe a que las especificaciones de CSS dicen :
(El énfasis es mío.)
Demostración: http://jsfiddle.net/r42e5/10/
Gracias a @Oriol por proporcionar la solución que me impulsó a verificar las especificaciones y ver que la solución es legal.
fuente
text-decoration:underline
aplicado a un padre condisplay:inline-block
. Vea un ejemplo: jsfiddle.net/aZdhN/1 . Entonces, el problema del autor de la pregunta se puede resolver así: stackoverflow.com/a/17347068/1529630Hay un error en IE8-11 , por lo que usar
display:inline-block;
solo no funcionará allí.Encontré una solución para este error, estableciendo explícitamente
text-decoration:underline;
: before-content y luego sobrescribiendo esta regla nuevamente context-decoration:none;
Ejemplo de trabajo aquí: http://jsfiddle.net/95C2M/
Actualización: dado que jsfiddle ya no funciona con IE8, simplemente pegue este código de demostración simple en un archivo html local y ábralo en IE8:
fuente
<img style="text-decoration:underline">
adentro (y aquí estaba la clave)<a style="padding:0; border:none;">
Puedes hacerlo agregando lo siguiente al
:before
elemento:Con
display: inline-block
el subrayado desaparece. Pero entonces el problema es que el espacio después del triángulo colapsa y no se muestra. Para solucionarlo, puede usarwhite-space: pre-wrap
owhite-space: pre
.Demostración : http://jsfiddle.net/r42e5/9/
fuente
pre-wrap
pista. Estaba usandocontent:'►\a0'
(\ a0 = & nbsp;)Envuelva sus enlaces en tramos y agregue la decoración de texto al tramo en a: hover así,
He actualizado tu violín a lo que creo que estás intentando hacer. http://jsfiddle.net/r42e5/4/
fuente
intente usar en su lugar:
¿Eso servirá?
fuente
utilizar este
fuente