我想为一般对象( )设置overflow
(或两者overflow-x
和overflow-y
)到某个值( ),并为特定对象( )覆盖(到)而不更改。hidden
*
overflow-x
visible
foo
overflow-y
我做了:
*{overflow: hidden;}
foo{overflow-x: visible;}
当我在谷歌浏览器开发者工具中检查它时,对于foo
对象,规范
overflow: hidden
(来自*
)和overflow-x: visible
(来自foo
)都是有效的。然而,从视觉上看,这似乎overflow: hidden
是压倒一切的overflow-x: visible
。这与我的预期相反,即更具体的foo
规范应该覆盖不太具体的*
规范。
当我改为这样做时:
*{overflow: hidden;}
foo{overflow: visible;}
然后,似乎overflow: visible
(from ) 按照我的意图foo
覆盖了overflow: hidden
(from *
),但随后overflow-y
forfoo
也设置为visible
,这是我不想要的。
规范是否overflow
优先于overflow-x
and overflow-y
?如果不是,那是怎么回事?
编辑也许事情比我最初想象的要复杂。设置
overflow-x
为visible
摆脱水平滚动条,这会降低对象的高度,这可能会造成干扰。
编辑看起来这个问题和这个问题的答案中有提示。特别是,根据 W3C 规范,当其中一个
overflow-x
或overflow-y
设置为visible
而另一个设置为其他值时,似乎visible
变成了auto
. 这是一个奇怪的规范。