IE7 CSS继承不起作用

时间:2009-02-04 12:03:45

标签: css internet-explorer internet-explorer-7

我为h2标签设置了一些样式(颜色,字体大小等),但是当我把“A”标签放在里面时,样式就变成了链接。我的HTML:

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

所以,正如你所看到的,我创造了“无装饰”课程。它应该继承h2的“a”标签样式。

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

在Firefox上,everythig没问题,但IE仍显示标签“a”样式(下划线文字装饰和蓝色)。我知道,我可以为“h2 a”设置一些样式,但也许某种程度上可以在IE7上强制工作CSS继承值?

P.S。在IE6上也不支持。

P.P.S。有一些例子:http://www.brunildo.org/test/inherit.html

4 个答案:

答案 0 :(得分:55)

不,IE从未支持inherit任何财产 - 抱歉。这已在&gt; = IE8中修复。

虽然您可以使用JavaScript修补程序将属性从h2复制到a,但最简单的方法是将相同的样式规则应用于这两个元素:

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

您无需在文本修饰上设置inherit,因为装饰不会从父级继承到子级:下划线效果在父级上并且通过孩子;孩子无法删除它(模块IE错误)。孩子的'text-decoration:none'是正确的,除非你想要潜在的两个下划线......

答案 1 :(得分:16)

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

那将摆脱你的蓝色和下划线。你可以使用类似的表达式作为下划线,但你最好只使用text-decoration:none,因为所有继承的文本修饰都会给你无论如何都不需要使用表达式而不是绝对必要的(你'在使用表达式时会受到性能损失。

答案 2 :(得分:4)

错误是一个错误,没有什么可以做的,缺乏解决方法。

对继承支持here进行了测试。

您还可以尝试使用像ie7-js这样的脚本,其中“是一个JavaScript库,使Microsoft Internet Explorer的行为类似于符合标准的浏览器”

答案 3 :(得分:1)

Internet Explorer&lt; = 7版本不支持inheritdirection以外的任何属性的值visibility