Firstly, I know that CSS expressions are defunct and wrong in so many ways, and also to avoid using !important
where possible. This is for a special case stylesheet.
In Short
My question is... Is there any way for a CSS expression to set the !important
flag?
E.g. this doesn't work:
a { color:expression('red !important'); }
[Edit: thanks to MarmaladeToday's comment below]. This also doesn't work:
a { color:expression('red') !important; }
Can this be done some other way?
In Detail
What I'm actually trying to do is mimic the inherit
value in IE6 & 7. This works:
color:expression(
this.parentNode.currentStyle ?
this.parentNode.currentStyle.color: 'red'
);
But I also want to set the !important
flag, and this doesn't work:
color:expression(
(
this.parentNode.currentStyle ?
this.parentNode.currentStyle.color: 'red'
) + ' !important');
I'm aware that, in JavaScript, it isn't possible to set !important
via an element's style
object. E.g. this won't work:
element.style.color = 'red !important';
However, it is possible to set !important
via the element's style
attribute:
element.setAttribute('style', 'color:red !important;');
So... are CSS expressions limited to interacting with the style
object, and therefore, what I want to achieve is impossible - or is there any way for an expression to affect an element's attributes, or pass !important
in some other way?
Starting a Bounty
No solid answers so far, so I'm starting a bounty.
Ideally, I'm looking for a CSS-based solution for mimicking inherit !important
in IE6 and IE7, either with or without CSS expressions. (Please do verify that your suggestions work before posting).
At least, a link to some authoritative reference telling me that this is impossible would mean I could lay this train of thought to rest - I've not seen anything mentioning the use of CSS expressions with the !important
rule.