Tengo un conjunto de enlaces con estilo que usan :beforepara aplicar una flecha.
Se ve bien en todos los navegadores, pero cuando aplico el subrayado al enlace, no quiero tener subrayado en la :beforeparte (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:beforese 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:underlineaplicado 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
:beforeelemento:Con
display: inline-blockel 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-wrapowhite-space: pre.Demostración : http://jsfiddle.net/r42e5/9/
fuente
pre-wrappista. 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