According to w3schools,outline
的语法是:
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
分配给颜色或样式?
答案 0 :(得分:5)
被忽略了。这是当前的浏览器实践和CSS中的预期原则:对于像outline
这样的简写符号,关键字inherit
被允许作为值(使所有子属性继承),但不能与任何其他价值。原因很明显:否则价值不会有明确的解释。在值inherit 0
中,值0
只能是outline-width
的值,但inherit
可以是outline-style
或outline-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;