当绘制时也因为衬着树膳绫腔有设置了display:none属性元素的子元素,是以该元素中子元素的背景图片不会衬着出来。
反复图片
- .img-blue {
- background-image: url(../image/blue.png);
- }
- <div class="img-blue"></div>
- <img src=http://developer.51cto.com/art/201708/"../image/blue.png">
- <img src=http://developer.51cto.com/art/201708/"../image/blue.png">
图片资本请求如下:

页面中多个<img>标签或样式表中的背景图片图片路径是同一个,图片只加载一次。
道理
浏览器请求资本时,都邑先断定是否有缓存,如有缓存且未过时则会大年夜缓存中攫取,不会再次请求。先加载的图片会存储到浏览器缓存中,后面再次请求同路径图片时会直接攫取缓存中的图片。
不存在元素的背景图片
图片资本请求如下:

不存在元素的背景图片不会加载。
占位图
图片加载与衬着规矩
道理
不存在的元素不会产出到DOM树上,是以衬着树上也不会有不存在的元素,当解析衬着树时无法解析不存在的元素,不存在的元素上的图片天然不会加载也不会衬着。
伪类的背景图片
- .img-green {
- background-image: url(../image/green.png);
- }
- .img-green:hover{
- background-image: url(../image/red.png);
- }
触发hover前的图片资本请求如下:

触发hover后的图片资本请求如下:

当触发伪类的时刻,伪类样式上的背景图片才会加载。
道理
触发hover前,DOM树与样式规矩树匹配的是无hover状况选择器.img-green的样式,是以衬着树上background-image属性的值是url(../image/green.png),解析衬着树时加载的是green.png,绘制时衬着的也是green.png。
触发hover后,因为.img-green:hover的优先级比较高,是以DOM树与样式规矩树匹配的是有hover状况选择器.img-green:hover的样式,衬着树上background-image属性的值是url(../image/red.png),解析衬着树时加载的是red.png,绘制时衬着的也是red.png。
应用
当使悠揭捉?式表中的背景图片作为占位符时,要把背景图片转为base64格局。这是因为背景图片加载的次序在标签后面,背景图片可能会在<img>标签图片加载完成后才开端加载,达不到想要的效不雅。
预加载
很多场景里图片是在改变或触发状况后才显示出来的,例如点击一个Tab后,一个设置display:none隐蔽的父元素变为显示,这个父元素里的子元素图片会在父元素显示后才开端加载;又如当鼠标hover到搁笔后,改变搁笔图片,图片会在hover上去后才开端加载,导致出现闪一下这种不友爱的体验。
当解析衬着树时衬着树膳绫腔有设置了display:none属性元素的子元素,是以不会加载该元素中子元素的背景图片。

在这种场景下,我们就须要把图片预加载,预加载有很多种方法:
- 若是小搁笔,可以归并成雪碧图,在改变状况前就把所有搁笔都一路加载了。
- 应用上文静到的,设置了display:none属性的元素,图片不会衬着出来,但会加载。把要预加载的图片加到设置了display:none的元素背景图或
标签里。
- 在javascript创建img对象,把图片url设置到img对象的src属性里。
【编辑推荐】
- WebSocket实现道理
- webpack2最终优化
- Web开辟中的响应式图片处理
- Python Web框架介绍
- 浏览器中唤起Native App
推荐阅读
1. 区块和区块链区块链是一种分布在全部营业收集上的共享账本。营业交易被永远记录在仅附加到账本的区块中。所>>>详细阅读
本文标题:Web图片资源的加载与渲染时机
地址:http://www.17bianji.com/lsqh/36525.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示