一直搞不明白,隐藏的元素的背景图,在页面加载时,是否自动加载?

img隐藏时,图片会加载吗?

测试代码如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>img load</title>
<style>
.divImg {background:url(cssImg1.jpg);}
.divImg {background:url(cssImg2.jpg);}
.divNullImg {background:url(cssNullImg.jpg);}
.divImgNone {display:none;}
.divImgNone {background:url(cssNoneImg1.jpg);}
.divImgNone div {background:url(cssNoneImg2.jpg);}
#divNone {background:url(cssNoneImg3.jpg);}
.divHoverImg:hover {background:url(cssHoverImg1.jpg);}
</style>
</head>
<body> <img src="img.jpg" />
<img src="cssImg2.jpg" />
<img src="ImgNone.jpg" style="display:none;" /> <div id="divNone" style="display:none; background:url(divNoneBack1.jpg);">
<img src="divNoneImg1.jpg" />
<div style="background:url(divNoneBack2.jpg);"></div>
</div>
<input type="button" value="显示隐藏" onclick="document.getElementById('divNone').style.display = 'block';" /> <div class="divImg">
img
</div> <div class="divImgNone">
<img src="divNoneImg2.jpg" />
img none
<div></div>
<div style="background:url(divNoneBack3.jpg);"></div>
</div> <div class="divHoverImg">
test Hover
</div> <script>
var img = new Image();
img.src = 'jsImg.jpg';
document.getElementById('divNone').style.backgroundImage = 'url(jsNoneImg.jpg)';
</script> </body>
</html>

测试了chrome33 和 IE7 使用Fiddler 监控

测试结果如下:

结果很复杂,IE和chrome下hover样式的背景图,只有鼠标悬浮时才加载。chrome下隐藏的背景不加载,IE下隐藏的背景要加载。

结论chrome:

  • 隐藏的元素及其包含的背景图不会加载(样式隐藏元素的当前背景会加载)。
  • hover的背景图不会加载,当hover时才加载。
  • 隐藏的img或img在隐藏的元素内也会加载。
  • 没有匹配的样式中,包含的背景不会显示。
  • 使用JS给隐藏的元素设置背景图时,会加载背景图。
结论IE:

  • hover的背景图不会加载,当hover时才加载。
  • 没有匹配的样式中,包含的背景不会显示。

测试img在不显示时是否加载?的更多相关文章

  1. 【技巧】easyUI datagrid在隐藏时加载,显示时无法加载出界面

    注意在显示时调用再调用一次resize就可以显示出来 $("#"+datagridId).datagrid("resize");

  2. webpack中dev-server不写contentBase时如何设置可以显示页面并且加载js

    今天学习了dev-server这个配置,中间遇到疑惑,我写了contentBase是可以走通,可以再localhost:8080看到页面并且正确加载bundle.js的,但是这个contentBase ...

  3. 动态链接库知识点总结之三(如何以显示的方式加载DLL)

    总结一下如何显示加载方式加载DLL, 首先,我们新建一个win32项目,选择dll,空项目,再添加一个源文件,一个模块定义文件(.def),具体如下图.(详细方法已经在前两篇文章中讲述,如有不懂,打开 ...

  4. JQuery/JS插件 jsTree加载树,预先加载,初始化时加载前三级节点,当展开第三级节点时 就加载该节点下的所有子节点

    jsTree加载树, 初始化时 加载前三级节点, 当展开第三级节点时 就加载该节点下的所有子节点 html: <!DOCTYPE html> <html> <head&g ...

  5. js 鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层异步加载模式

    js用处:在做商城时,首页图片太多,严重影响首页打开速度,所以我们需要用到异步加载楼层.js名称:鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层模式js解释:1.用于商城的楼层内容异步加载,滚动条 ...

  6. selenium启动Chrome时,加载用户配置文件

    selenium启动Chrome时,加载用户配置文件   Selenium操作浏览器是不加载任何配置的,网上找了半天,关于Firefox加载配置的多点,Chrome资料很少,下面是关于加载Chrome ...

  7. 基于spring的web项目启动时预加载数据到ServletContext

    1.要在web启动时预加载数据到ServletContext,实现方法有很多,一种比较简单的方案就是: 1)新建一个bean,定义其初始化方法: <bean id="beanId&qu ...

  8. 【WordPress】外网访问WordPress时无法加载样式表CSS

    情况: 阿里云ECS服务器,用WampServer搭建的WordPress站点,服务端自身访问该站点时显示正常,但外网访问时不能加载样式表CSS的问题. 重要的参考: https://www.doub ...

  9. Linux中实现在系统启动时自动加载模块

    下面是以前学习Linux时写的,后来仔细研究rc.sysinit后发现,只需要修改下列地方就可以了,不必这么麻烦的: rc.sysinit中有这样的一段代码: # Load other user-de ...

随机推荐

  1. Qt的quit(),exit()以及close()事件捕获

         使用QT编辑界面,其中带来很大方便的一点就是Qt中自带丰富的.种类齐全的类及其功能函数,程序员可以在编辑程序的过程中简单地直接调用.关于窗口关闭的操作,在这里指出常用的三个槽,即quit() ...

  2. 参数化SQL sql语句

    在日常的数据插入时,需要避免数据脚本注入攻击,所以进行参数化SQL很有必要. --说明参数 ) --参数赋值 ' --数据插入 ,'A')

  3. jquery节点操作

    很久没有jquery写东西了,最近使用jquery的时候发现很多节点的操作都不太熟悉了,于是就进行了一个小小的总结. 创建节点:var dom=$('<div></div>') ...

  4. Apache脚本路径别名(CGI接口)

    CGI:Common Gateway Interface(通用网关接口)使WEB可以跟一个应用程序进行通信,从通信环境中获得结果. CGI是不安全的,需要mod_alias,mod_cgi模块 Scr ...

  5. ZOJ-3929 Deque and Balls (DP+找规律)

    题目大意:n个数,每个数的大小都在1~n之间.操作n次,第 i 次将第 i 个数放到一个双端队列里面,放到队列两端的概率是相等的.问操作n次之后双端队列中元素满足xi>xi+1的对数的期望,输出 ...

  6. Java——File(文件)

     public static void main(String[] args) { // getFile(); /* * 需求:  对指定目录进行所有内容的列出,(包含子目录中的内容) * */ ...

  7. java的nio之:java的nio系列教程之channel的概念

    一:java的nio的channel Java NIO的通道类似流,但又有些不同: ==>既可以从通道中读取数据,又可以写数据到通道.但流的读写通常是单向的. ==>通道可以异步地读写. ...

  8. Flash pixel Bender学习笔记

    pixel Bender是指用来创建,编译,测试和导出pixel shader,用于各种flash产品的一个IDE. Pixel Bender是Adobe推出的一个高性能的图像视频处理技术.它能跨平台 ...

  9. android:id="@+id/button1" 与 android:id="@id/button1" 区别 @string

    一.android:id="@+id/button1" 与 android:id="@id/button1" 区别 android:id="@+id/ ...

  10. GPU(CUDA)学习日记(十一)------ 深入理解CUDA线程层次以及关于设置线程数的思考

    GPU线程以网格(grid)的方式组织,而每个网格中又包含若干个线程块,在G80/GT200系列中,每一个线程块最多可包含512个线程,Fermi架构中每个线程块支持高达1536个线程.同一线程块中的 ...