我想为一般对象( )设置overflow(或两者overflow-x和overflow-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-x为visible摆脱水平滚动条,这会降低对象的高度,这可能会造成干扰。
编辑看起来这个问题和这个问题的答案中有提示。特别是,根据 W3C 规范,当其中一个
overflow-x或overflow-y设置为visible而另一个设置为其他值时,似乎visible变成了auto. 这是一个奇怪的规范。