样式“可见性:隐藏”对于元素意味着什么?

时间:2013-01-22 01:31:45

标签: html css

样式visibility:hidden在应用于html元素时会执行什么操作?是否与滚动条有关,尤其是关于IE7?

背景:Oracle Apex生成此代码,我试图解决它是否导致IE7中间歇性隐藏的水平滚动条出现问题:

<style> html {visibility:hidden;} </style>

1 个答案:

答案 0 :(得分:6)

规格

According to the specvisibility属性仍应影响布局。这意味着如果元素最终导致滚动行为,它不应该影响滚动。此外,设置为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属性的传播。