样式visibility:hidden
在应用于html
元素时会执行什么操作?是否与滚动条有关,尤其是关于IE7?
背景:Oracle Apex生成此代码,我试图解决它是否导致IE7中间歇性隐藏的水平滚动条出现问题:
<style> html {visibility:hidden;} </style>
答案 0 :(得分:6)
According to the spec,visibility
属性仍应影响布局。这意味着如果元素最终导致滚动行为,它不应该影响滚动。此外,设置为visible
的所有子项都应在hidden
元素中可见。
使用this fiddle ...
Firefox,IE 8-10,Opera
使visibility: hidden
元素上的html
不呈现body
(应该如此),但仍会显示html
本身的一些呈现,因为它显示{{1} }}。正如BoltClock在他的评论中指出的那样,实际上这可能是预期的,因为background-color
的{{1}}是(according to spec)成为...
“画布的背景及其背景绘画区域延伸 覆盖整个画布。“
这些浏览器还允许内部设置回background
的元素显示为html
指示的规范,因此visible
正在显示并可以滚动。
Chrome和Safari
它不会在visibility
上呈现div
,但它会允许显示background-color
并显示滚动条。因此,Chrome不会将html
属性传播到画布,可能是因为其div
设置为background
。
IE7
visibility
元素的hidden
不会呈现(例如Chrome),但内部的background-color
元素也没有没有显示的滚动条。这似乎表明它不符合规范的布局。
因此,html
属性可能是您问题的部分。显然,背景点与您的滚动问题完全无关,但确实解决了关于属性如何影响div
元素的整体问题。
在我看来,Chrome和Safari呈现似乎是最直观的(我可能期望作为设计师),因为我不希望visibility: hidden
呈现(因为元素是{{1但是,同时,如果我将子项设置为html
,那么即使background-color
包装器设置为{,我也希望浏览器让我代表该子项滚动{1}}。 然而,webkit浏览器或其他浏览器是否最接近规范是有争议的,因为BoltClock在他的评论中注意到,该规范似乎并未表明hidden
是否visible
在{{ 1}}元素应该或不应该影响html
属性的传播。