1

根据 w3schoolsoutline的说法, is:的语法
outline: <color> <style> <width>;可能会丢失这三个中的任何一个。

并且该值inherit是三个的有效值,或者单个outline: inherit意味着它应该继承所有三个。

我问这个是因为我正在为 CSS 缩小器开发属性优化器。根据上面的链接,
outline: inherit none 3px等价于outline: inherit 3px
outline: invert inherit 3px也等价于outline: inherit 3px
但结果似乎太模棱两可了。

那么问题来了,浏览器如何解释outline: inherit 0px?他们指定inherit颜色还是样式?

4

2 回答 2

7

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

该原理在 CSS 2.1 规范的附录C.3.1中有所提及。理论上,附录 C 是对变化的信息性描述,而不是规范性的,在这里它并不反映实际的变化。也就是说,这是搞砸了:描述了意图,但通常 CSS 2.1 没有这个原则并且会被认为outline: inherit 0是有效的(但 W3C CSS Validator 拒绝它)。参照。此字体:速记属性语法是否有效?(我对规范的阅读说是的,但我安装的浏览器中有一半不同意。)(它处理关于font速记的相同问题)。

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

outline: inherit;
outline-width: 0;
于 2014-02-16T12:07:51.637 回答
0

需要注意的是,w3schools 对order的定义并不完整。以下所有内容均有效

outline: <color> <style> <width>
outline: <color> <width> <style> 


outline: <width> <style> <color>
outline: <width> <color> <style>


outline: <style> <width> <color>
outline: <style> <color> <width>

因为顺序无关紧要。这反过来outline: inherit none 3px成为无效的原因,这3px也可以表示color

类似outline: inherit 0px地等价于outline: inherit initial 0px,因此可以指outline-color: 0px.

于 2021-09-17T12:06:39.570 回答