如何解释"outline:inherit 0"



根据w3schools,outline的语法为:
outline: <color> <style> <width>;,三者中的任何一个都可以缺失。

inherit是三个值中的一个有效值,或者一个outline: inherit意味着它应该继承这三个值。

我之所以问这个问题,是因为我正在为CSS迷你程序开发属性优化器。根据上面的链接,
outline: inherit none 3px等价于outline: inherit 3px
outline: invert inherit 3px也等价于outline: inherit 3px,<br]但结果似乎太模糊了。>

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

它被忽略。这是当前浏览器的做法,也是CSS的预期原则:对于像outline这样的简写表示法,关键字inherit可以作为一个值(使所有子属性都继承),但不能与任何其他值结合使用。原因很明显:否则,价值就不会有明确的解释。在值inherit 0中,值0只能是outline-width的值,但inherit可以是outline-styleoutline-color的值。

CSS 2.1规范的附录C.3.1中提到了这一原理。理论上,附录C是对变化的信息性描述,而不是规范性的,在这里它并没有反映实际的变化。也就是说,这被搞砸了:意图被描述了,但从规范上讲,CSS2.1没有这个原则,并认为outline: inherit 0是有效的(但W3C CSS验证器拒绝了它)。Cf.to这个字体:简写属性语法有效吗?(我对规范的解读是肯定的,但我安装的浏览器中有一半不同意。)(这涉及到关于font简写的相同问题)。

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

outline: inherit;
outline-width: 0;

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

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

相关内容

最新更新