如何解释`outline:inherit 0`?

时间:2014-02-16 10:09:59

标签: css web-standards css-parsing

According to w3schoolsoutline的语法是:
outline: <color> <style> <width>;并且三者中的任何一个都可能丢失。

inherit是三个有效值,或者outline: inherit表示它应该继承所有三个。

我问这个是因为我正在研究CSS minifier的属性优化器。根据以上链接,
outline: inherit none 3px相当于outline: inherit 3px
outline: invert inherit 3px也相当于outline: inherit 3px
但结果似乎过于暧昧。

所以问题是,浏览器如何解释outline: inherit 0px?他们是否将inherit分配给颜色或样式?

1 个答案:

答案 0 :(得分:5)

被忽略了。这是当前的浏览器实践和CSS中的预期原则:对于像outline这样的简写符号,关键字inherit被允许作为值(使所有子属性继承),但不能与任何其他价值。原因很明显:否则价值不会有明确的解释。在值inherit 0中,值0只能是outline-width的值,但inherit可以是outline-styleoutline-color的值

原则在CSS 2.1规范的附录中提到,C.3.1。从理论上讲,附录C是对变化的信息性描述,而不是规范性的,在这里它并不反映实际的变化。也就是说,这已经搞砸了:描述了意图,但规范性地说CSS 2.1没有这个原则,并且会认为outline: inherit 0是有效的(但是W3C CSS Validator拒绝它)。参看至Is this font: shorthand property syntax valid? (My reading of the spec says yes, but half of my installed browsers disagree.)(处理与font简写相同的问题。)

如果您希望继承所有outline属性但宽度设置为零(这有点奇怪),则需要两个声明

outline: inherit;
outline-width: 0;