2009-02-04 7 views
34

J'ai défini un style pour les balises h2 (couleur, taille de police, etc.), mais lorsque je mets une balise "A" à l'intérieur, le style devient un lien. Mon html:IE7 L'héritage CSS ne fonctionne pas

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

Ainsi, comme vous pouvez le voir, j'ai créé la classe "no-decor". Il devrait hériter du style de h2 pour "a" tag. Sur Firefox, tout est ok, mais IE affiche toujours le style "a" (soulignement texte-décoration et couleur bleue). Je sais, je peux définir un style pour "h2 a", mais peut-être en quelque sorte, il est possible de forcer le travail CSS hériter des valeurs sur IE7?

P.S. Sur IE6 ne supporte pas aussi.

P.P.S. Il y a un exemple de la même manière: http://www.brunildo.org/test/inherit.html

Répondre

55

Non, IE n'a jamais soutenu inherit pour toute propriété - Pardon. Cela a été corrigé dans> = IE8.

Alors que vous pouvez utiliser une solution JavaScript pour copier les propriétés de h2 à a, il est probablement plus simple d'appliquer la même règle de style aux deux éléments:

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

Vous n'avez pas besoin de mettre inherit sur text-decoration de toute façon, car la décoration n'hérite pas d'un parent dans un enfant: l'effet de soulignement est sur le parent et va à l'enfant; l'enfant ne peut pas l'enlever (bogues modulo IE). « Text-decoration: none » sur l'enfant est la bonne chose, à moins que vous voulez potentiellement deux ... souligne

+0

Oui, j'ai fait comme ça. – Pawka

+14

Internet Explorer 7 et les versions antérieures ne prennent pas en charge la valeur héritée pour les propriétés autres que la direction et la visibilité. –

+0

C'est parfait :) –

4

Un bug est un bug et il n'y a pas grand-chose que vous puissiez faire, à court de solutions de contournement.

Il existe un test de prise en charge héritée here.

Vous pouvez aussi utiliser un script comme ie7-js, qui « est une bibliothèque JavaScript pour faire Microsoft Internet Explorer se comporte comme un navigateur conforme aux normes »

16

essayer

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

Ça va se débarrasser de votre couleur bleue et le soulignement . Vous pourriez utiliser une expression similaire pour le soulignement, mais vous feriez mieux d'utiliser la fonction text-decoration: none puisque tout cela est un héritage-text-decoration qui vous donnera de toute façon et pas besoin d'utiliser des expressions quand ce n'est pas absolument nécessaire ll prendra un coup de performance en utilisant des expressions).

+0

Première fois que je vois: expression. Solution plus élégante que la duplication de balisage ou l'utilisation d'une bibliothèque JS. – Stijn

+0

J'aime ça. C'est un tel cas pour moi qu'une expression est parfaite ici. – lupos

1

Internet Explorer < = 7 versions ne prennent pas en charge la valeur inherit pour les propriétés autres que direction et visibility.

+0

Comme mentionné dans [ce commentaire] (http: // stackoverflow.com/questions/511066/ie7-css-héritage-ne-travaille-pas # comment1873681_511108) le 25 décembre 09. – WynandB