CSS中display与visibility不仅是物理占位的不同

有一个用CSS隐藏HTML元素的任务,需要把body>div>div>下的文字隐藏掉。HTML代码一个字都不能改,只能靠CSS来解决。

开始用“display: none”来解决。但是这么一来,不仅body>div>div>下的文字消失,TABLE元素也消失了。然后用display: block恢复TABLE为可见,书上说,这个属性可以把元素改为可见,结果是没有任何反映。

试了很多选择符,无奈IE支持有限。于是用visibility试了试,哈,简直跟拉电线开关一样方便,想显示就显示,想隐藏就隐藏。先吧body>div>div隐藏,然后把body>div>div>table显示就OK了。

查网上资料说,display与visibility的隐藏元素的方法就是占不占物理位置的问题,看来那只是表面现象,display: block也只是设置块属性,不具有设置元素为可见的功能。display与visibility其实有本质上的区别:自从display: none出现的那一刻起,这个区块就是不存在的,哪怕他的子元素如何挣扎要显示出来也是无济于事的,地球都不存在了,还有珠穆朗玛峰吗?visibility就象是哈利波特的隐身衣,他只是不显示出来而已,在物理上他还是存在的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注