【发布时间】:2010-12-07 08:02:54
【问题描述】:
首先,我知道 CSS 表达式在很多方面都已失效和错误,并且尽可能避免使用!important。这是special case stylesheet。
简而言之
我的问题是...... CSS 表达式有没有办法设置!important 标志?
例如这不起作用:
a { color:expression('red !important'); }
[编辑:感谢 MarmaladeToday 下面的评论]。 这也不起作用:
a { color:expression('red') !important; }
这可以通过其他方式完成吗?
详细说明
我实际上想要做的是模仿 IE6 和 7 中的 inherit 值。这行得通:
color:expression(
this.parentNode.currentStyle ?
this.parentNode.currentStyle.color: 'red'
);
但我也想设置!important 标志,而这不起作用:
color:expression(
(
this.parentNode.currentStyle ?
this.parentNode.currentStyle.color: 'red'
) + ' !important');
我知道,在 JavaScript 中,无法通过元素的 style 对象设置 !important。例如。 这行不通:
element.style.color = 'red !important';
但是,是可以通过元素的style 设置!important 属性:
element.setAttribute('style', 'color:red !important;');
所以... CSS 表达式是否仅限于与 style 对象交互,因此,我想要实现的目标是不可能的 - 或者表达式有什么方法可以影响元素的属性,或者传递 !important以其他方式?
开始赏金
到目前为止还没有可靠的答案,所以我开始赏金了。
理想情况下,我正在寻找一种基于 CSS 的解决方案,用于在 IE6 和 IE7 中模拟 inherit !important,无论是否使用 CSS 表达式。 (请在发布之前验证您的建议是否有效)。
至少,一些权威参考的链接告诉我这是不可能的,这意味着我可以放下这个思路——我还没有看到任何提到使用 !important 规则的 CSS 表达式。
【问题讨论】:
-
不知道这个问题在doctype.com 会不会更好?
-
@artlung - 为什么?到目前为止,我对 doctype.com 没有任何经验,但似乎以 HTML/CSS 为重点。您认为这是一个过于技术性的问题吗?
标签: javascript css internet-explorer inheritance css-expressions