2009-02-04 21 views
34

Ho impostato alcuni stili per i tag h2 (colore, dimensione carattere, ecc.), Ma quando inserisco il tag "A" all'interno, lo stile diventa come collegamento. Il mio html:IE7 L'ereditarietà CSS non funziona

<h2> 
    <a class="no-decor" href="http://localhost/xxx/">Link</a> 
</h2> 

Quindi, come potete vedere, ho creato la classe "no-decor". Dovrebbe ereditare lo stile di h2 per il tag "a".

a.no-decor { 
    color:inherit; 
    font-family:inherit; 
    font-size:inherit; 
    font-weight:inherit; 
    text-decoration:inherit; 
} 

Su Firefox everythig è ok, ma IE mostra ancora tag "uno" stile (sottolineare il testo-decorazione e il colore blu). Lo so, posso impostare un po 'di stile per "h2 a", ma forse in qualche modo è possibile forzare i valori di ereditarietà dei CSS su IE7?

P.S. Anche su IE6 non supporta.

P.P.S. C'è un esempio nello stesso modo: http://www.brunildo.org/test/inherit.html

risposta

55

No, IE non ha mai sostenuto inherit per qualsiasi proprietà - scusa. Questo problema è stato risolto in> = IE8.

Mentre si potrebbe usare una correzione JavaScript per copiare le proprietà da h2 a a, è probabilmente più facile solo per applicare la stessa regola styling per entrambi gli elementi:

h2, h2 a { 
    font: something; 
    color: black; 
    text-decoration: none; 
} 

Non è necessario impostare inherit su la decorazione del testo comunque, perché la decorazione non eredita da un genitore in un bambino: l'effetto di sottolineatura è sul genitore e passa a tramite il bambino; il bambino non può rimuoverlo (bug di modulo IE). 'Text-decoration: none' sul bambino è la cosa giusta, a meno che non si vuole potenzialmente due sottolinea ...

+0

Sì, ho fatto in questo modo. – Pawka

+14

Internet Explorer 7 e versioni precedenti non supportano il valore ereditato da proprietà diverse dalla direzione e dalla visibilità. –

+0

Questo è perfetto :) –

4

Un bug è un bug e non c'è molto che puoi fare, a corto di soluzioni alternative.

Esiste un test per il supporto ereditario here.

Si può anche provare a utilizzare uno script come ie7-js, che "è una libreria JavaScript per rendere Microsoft Internet Explorer si comporta come un browser standard-compliant"

16

provare

a.no-decor{ 
    color:inherit; 
    //color:expression(this.parentNode.currentStyle['color']); 
    text-decoration:none; 
} 

Che sarà sbarazzarsi del vostro colore blu e la sottolineatura . Potresti usare un'espressione simile per la sottolineatura, ma staresti meglio usando solo la decorazione del testo: nessuna poiché è tutto un testo ereditato, la decorazione ti darà comunque e non è necessario usare espressioni quando non è assolutamente necessario (tu prendo un colpo di prestazioni quando si usano le espressioni).

+0

La prima volta che vedo: espressione. Soluzione più elegante rispetto alla duplicazione del markup o all'utilizzo di una libreria JS. – Stijn

+0

Amo questo. È un caso così delicato per me che un'espressione è perfetta qui. – lupos

1

Internet Explorer < = 7 versioni non supportano il valore inherit per qualsiasi proprietà diversa da direction e visibility.

+0

Come menzionato in [questo commento] (http: // stackoverflow.it/questions/511066/ie7-css-inheritance-does-not-work # comment1873681_511108) il 25 dic '09. – WynandB