代码如下:
CSS
.test1 {
display: none;
/*visibility: hidden;*/
}
.test2 {
background-image: url('test.jpg');
}
HTML
<div class="test1">
<div class="test2"></div>
</div>
Result
- 代码执行时,监测网络却发现
test.jpg
没有被下载? - 而把
display: none;
换成visibility: hidden;
之后,test.jpg
被下载了
QA
-
display: none;
和visibility: hidden;
的区别是什么? - 尤其是在不同情景下使用中的区别(如上示例),请尽可能的举例说明。
display:none;会使test1直接消失,不存在。
visibility:hidden;只是隐藏,test1还是存在。
想详解的话请看张鑫旭大神的博客.
display:none: 透明了不占据位置了,后代全部死绝了(也就是全看不到了)
visibility:hidden; 透明了位置还在,后台也全部死绝了,不过有办法拯救,在需要显示的ele上加上visibility:visible;
关于两者还有就是回流啊重绘的问题啊;
针对你这个问题我也没试过, 图片为什么不会下载呢
个人理解的是当display:none的时候,dom会并不对div进行渲染,所以css里的背景图片没有加载,但而显示的时候,浏览器全新解析渲染,而这时会读取css里的背景图片。
另外对于display为none的时候,当前区域会消息,不占用位置,而visibility为hiden的时候,会占用位置,但内容不显示.
不清楚理解的对不对?
display:none 的元素占据文档空间,占据文档空间浏览器就需要解析 dom;
当 test1 display:none 后,其后代 就不进行渲染;不渲染 当然就不会去解析 URL()..
试试把 test2 加 display:none, 会发起 请求的;
visibility:hidden 只是说明 不让该dom显示,类似透明,dom 该解析的解析,该渲染的渲染;