Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IE7 CSS inheritance does not work

I have set some style for h2 tags (color, font-size, etc.), but when I put "A" tag inside, then style becomes as link. My html:

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

So, as You can see, I've created "no-decor" class. It should inherit h2's style for "a" tag.

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

On Firefox everythig is ok, but IE still shows tag "a" style (underline text-decoration and blue color). I know, I can set some style for "h2 a", but maybe somehow it is possible to force work CSS inherit values on IE7?

P.S. On IE6 doesn't supports too.

P.P.S. There is some example in same way: http://www.brunildo.org/test/inherit.html

like image 699
Pawka Avatar asked Feb 04 '09 12:02

Pawka


People also ask

Which CSS properties are not inherited?

CSS properties such as height , width , border , margin , padding , etc. are not inherited.

Does CSS support inheritance?

The inherit CSS keyword causes the element to take the computed value of the property from its parent element. It can be applied to any CSS property, including the CSS shorthand property all . For inherited properties, this reinforces the default behavior, and is only needed to override another rule.

What is auto and inherit in CSS?

auto - The browser calculates the height. This is default. inherit - Specifies that the value of the height property should be inherited from the parent element.


2 Answers

No, IE has never supported inherit for any property - sorry. This has been fixed in >= IE8.

Whilst you could use a JavaScript fix to copy the properties from h2 to a, it's probably easiest just to apply the same styling rule to both elements:

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

You don't need to set inherit on text-decoration anyway, because decoration doesn't inherit from a parent into a child: the underline effect is on the parent and goes through the child; the child cannot remove it (modulo IE bugs). 'text-decoration: none' on the child is the right thing, unless you want potentially two underlines...

like image 91
bobince Avatar answered Oct 21 '22 05:10

bobince


try

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

That'll get rid of your blue color and the underline. You could use a similar expression for the underline, but you'd be better off just using text-decoration:none since that's all an inherited text-decoration is gonna give you anyhow and no need to use expressions when not absolutely necessary (you'll take a performance hit when using expressions).

like image 37
Carsen Avatar answered Oct 21 '22 05:10

Carsen