Diciamo che avete questo html:non può annullare text-decoration per bambini-elementi
<a href="#">
This is underlined
<span>
This isn't.
</span>
</a>
E questo css:
a:hover {
text-decoration: underline; /* I know, this is enabled by default. */
}
a:hover span {
text-decoration: none !important;
}
Perché la a> elemento arco ha ancora una sottolineatura. Sono abbastanza sicuro che dovresti aver annullato la decorazione usando 'none'. So che è possibile ottenere il risultato che voglio utilizzando questo:
<a href="#">
<span class="underlined">
This is underlined
</span>
<span>
This isn't.
</span>
</a>
oltre a questo css:
a:hover {
text-decoration: none;
}
a:hover span.underlined {
text-decoration: underline;
}
Ma ... è semplicemente non ha senso per me il motivo per cui non si può disinserire la decorazione del testo di un elemento figlio. Quindi, perché ...?
Edit: inline-block
Secondo @amosrivera, funziona quando si utilizza inline-block. Posso confermare questo per funzionare in Safari e Chrome!
a:hover span{
text-decoration:none;
display:inline-block;
}
Come accennato, questo funziona per Safari e Chrome, ma non per Firefox. La seguente soluzione funziona per Firefox, ma non per Safari e Chrome ...
a:hover span{
text-decoration:none;
display:block;
}
Tavolino:
CSS-Rule | Webkit | Firefox | Opera | IE
--------------------------------------------------------------------------------
display: block; | x | | ? | ?
display: inline-block; | | x | ? | ?
IE7, funziona senza niente, IE8 e Opera funzionano entrambi con inline-block. FF3.6/4 è sbagliato, dice esplicitamente nella [definizione della decorazione del testo] (http://www.w3.org/TR/CSS21/text.html#propdef-text-decoration) "_Gli agenti utente non devono rendere queste decorazioni di testo sul contenuto che non è testo. Ad esempio, le immagini e i blocchi in linea non devono essere sottolineati._ " – clairesuzy