34 votes

L'héritage CSS d'IE7 ne fonctionne pas

J'ai défini certains styles pour les balises h2 (couleur, taille de police, etc.), mais lorsque je place la balise "A" à l'intérieur, le style devient un lien. Mon html :

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

Donc, comme vous pouvez le voir, j'ai créé la classe "no-decor". Elle devrait hériter du style de h2 pour la balise "a".

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

Sur Firefox tout est ok, mais IE montre toujours le style de la balise "a" (soulignement de la décoration du texte et couleur bleue). Je sais que je peux définir un style pour "h2 a", mais peut-être est-il possible de forcer le travail des valeurs héritées du CSS sur IE7 ?

P.S. Sur IE6 ne supporte pas aussi.

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

55voto

bobince Points 270740

Non, IE n'a jamais supporté l'option "inherit" pour aucune propriété - désolé. Ce problème a été corrigé dans >= IE8.

Vous pourriez utiliser un correctif JavaScript pour copier les propriétés de 'h2' vers 'a', mais le plus simple est d'appliquer la même règle de style aux deux éléments :

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

De toute façon, il n'est pas nécessaire d'activer la fonction "hériter" pour la décoration du texte, car la décoration n'est pas héritée d'un parent vers un enfant : l'effet de soulignement est sur le parent et s'étend à l'enfant. par le biais de l'enfant ; l'enfant ne peut pas le supprimer (modulo les bugs d'IE). L'utilisation de 'text-decoration : none' sur l'enfant est la bonne solution, à moins que vous ne vouliez potentiellement dos souligne...

16voto

Carsen Points 178

Essayez

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

Ça fera disparaître votre couleur bleue et le soulignement. Vous pourriez utiliser une expression similaire pour le soulignement, mais vous feriez mieux d'utiliser text-decoration:none puisque c'est tout ce qu'une décoration de texte héritée vous donnera de toute façon et qu'il n'est pas nécessaire d'utiliser des expressions si ce n'est pas absolument nécessaire (vous subirez une baisse de performance en utilisant des expressions).

4voto

yoavf Points 4410

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

Il y a un test pour le support des héritages aquí .

Vous pouvez aussi essayer d'utiliser un script comme ie7-js qui "est une bibliothèque JavaScript permettant à Microsoft Internet Explorer de se comporter comme un navigateur conforme aux normes".

1voto

Khaled Points 779

Les versions d'Internet Explorer <= 7 ne supportent pas la valeur inherit pour toutes les propriétés autres que direction y visibility .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X