首页 > display: none 和 visibility: hidden 的区别,为什么设置的背景图片没下载?

display: none 和 visibility: hidden 的区别,为什么设置的背景图片没下载?

代码如下:

CSS

.test1 {
    display: none;
    /*visibility: hidden;*/
}
.test2 {
    background-image: url('test.jpg');
}

HTML

<div class="test1">
    <div class="test2"></div>
</div>

Result

  1. 代码执行时,监测网络却发现test.jpg没有被下载?
  2. 而把display: none;换成visibility: hidden;之后,test.jpg被下载了

QA

  1. display: none;visibility: hidden;的区别是什么?
  2. 尤其是在不同情景下使用中的区别(如上示例),请尽可能的举例说明。

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 该解析的解析,该渲染的渲染;

【热门文章】
【热门文章】