1

我想为一般对象( )设置overflow(或两者overflow-xoverflow-y)到某个值( ),并为特定对象( )覆盖(到)而不更改。hidden*overflow-xvisiblefoooverflow-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-yforfoo也设置为visible,这是我不想要的。

规范是否overflow优先于overflow-xand overflow-y?如果不是,那是怎么回事?


编辑也许事情比我最初想象的要复杂。设置overflow-xvisible摆脱水平滚动条,这会降低对象的高度,这可能会造成干扰。


编辑看起来这个问题这个问题的答案中有提示。特别是,根据 W3C 规范,当其中一个overflow-xoverflow-y设置为visible而另一个设置为其他值时,似乎visible变成了auto. 这是一个奇怪的规范。

4

0 回答 0