Digamos que tiene este código HTML:no puede deshacer el texto-decoración para niños-elementos
<a href="#">
This is underlined
<span>
This isn't.
</span>
</a>
Y esto css:
a:hover {
text-decoration: underline; /* I know, this is enabled by default. */
}
a:hover span {
text-decoration: none !important;
}
¿Por qué la a> elemento span todavía tiene un subrayado. Estoy bastante seguro de que realmente deberías haber deshecho la decoración usando 'ninguno'. Sé que se puede lograr el resultado que quiero a través de este:
<a href="#">
<span class="underlined">
This is underlined
</span>
<span>
This isn't.
</span>
</a>
además este CSS:
a:hover {
text-decoration: none;
}
a:hover span.underlined {
text-decoration: underline;
}
Pero ... simplemente no tiene sentido para mí por qué no se puede desarma la decoración de texto de un elemento hijo. Entonces, ¿por qué ...?
Editar: Inline-bloques
Según @amosrivera, funciona cuando se utiliza inline-block. ¡Puedo confirmar esto para trabajar en Safari y Chrome!
a:hover span{
text-decoration:none;
display:inline-block;
}
Como se mencionó, esto funciona para Safari y Chrome, pero no para Firefox. La siguiente solución funciona para Firefox, pero no para Safari y Chrome ...
a:hover span{
text-decoration:none;
display:block;
}
Poco vector:
CSS-Rule | Webkit | Firefox | Opera | IE
--------------------------------------------------------------------------------
display: block; | x | | ? | ?
display: inline-block; | | x | ? | ?
IE7, funciona sin nada, IE8 y Opera funcionan con bloque en línea. FF3.6/4 está mal, dice explícitamente en la [definición de decoración de texto] (http://www.w3.org/TR/CSS21/text.html#propdef-text-decoration) "_Los agentes de usuario no deben renderizarse estas decoraciones de texto en contenido que no es texto. Por ejemplo, las imágenes y los bloques en línea no deben estar subrayados. " – clairesuzy