2009-02-04 14 views
34

He establecido un estilo para las etiquetas h2 (color, tamaño de fuente, etc.), pero cuando introduzco la etiqueta "A", el estilo se convierte en un enlace. Mi html:La herencia de IE7 CSS no funciona

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

Así que, como pueden ver, he creado la clase "sin decoración". Debe heredar el estilo de h2 para la etiqueta "a".

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

En everythig Firefox está bien, pero IE sigue mostrando etiqueta "un" estilo (subrayar el texto-decoración y el color azul). Lo sé, puedo establecer un estilo para "h2 a", pero tal vez de alguna manera es posible forzar el trabajo CSS heredar valores en IE7?

P.S. En IE6 no es compatible también.

P.P.S. Hay algunos ejemplos de la misma manera: http://www.brunildo.org/test/inherit.html

Respuesta

55

NO, es decir nunca ha apoyado inherit para cualquier propiedad - lo siento. Esto ha sido arreglado en> = IE8.

Si bien se puede utilizar una solución JavaScript para copiar las propiedades de h2 a a, es probablemente más fácil simplemente a aplicar la misma regla de estilo para ambos elementos:

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

No es necesario para establecer inherit en texto-decoración de todos modos, porque la decoración no hereda de un elemento primario a un elemento secundario: el efecto de subrayado está en el elemento primario y va hasta el elemento secundario; el niño no puede eliminarlo (errores modulo IE). 'Text-decoration: none' en el niño es lo correcto, a menos que quiera potencialmente dos ... subraya

+0

Sí, he hecho esto. – Pawka

+14

Internet Explorer 7 y versiones anteriores no admiten el valor heredar para ninguna otra propiedad que no sea la dirección y la visibilidad. –

+0

Esto es perfecto :) –

4

Un error es un error y no hay mucho que pueda hacer, salvo las soluciones.

Hay una prueba para heredar el soporte here.

También puede tratar de usar un script como ie7-js, que "es una biblioteca JavaScript para hacer que Microsoft Internet Explorer se comporta como un navegador compatible con los estándares"

16

tratar

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

Eso va a deshacerse de su color azul y subrayado . Podrías usar una expresión similar para el subrayado, pero sería mejor que simplemente uses la decoración de texto: ninguna, ya que eso es todo un texto heredado: la decoración te dará de todos modos y no es necesario usar expresiones cuando no sea absolutamente necesario (tú tomaré un golpe de rendimiento cuando use expresiones).

+0

Primera vez que veo: expresión. Solución más elegante que la duplicación de marcado o el uso de una biblioteca JS. – Stijn

+0

Me encanta esto. Es un caso tan extremo para mí que una expresión es perfecta aquí. – lupos

1

Internet Explorer < = 7 versiones no son compatibles con el valor inherit para las propiedades que no sean direction y visibility.

+0

Como se menciona en [este comentario] (http: // stackoverflow.com/questions/511066/ie7-css-inheritance-does-not-work # comment1873681_511108) el 25 de diciembre de 2009. – WynandB