如下:
这里有三个关于图片的加载(三张图片不一样),那么display:none和visibility:hidden是否对img的请求造成影响呢?
我们来验证一下便知晓,Chrome的F12查看Network:
显然,4次请求,其中3次img请求!(这里使用的是Chrome)
关于图片请求的不同情况不同浏览器下可能都会有不同的结果。
具体可参考:https://www.haorooms.com/post/web_http_request
总结图片请求的不同情况,有以下几种:
1. 隐藏图片
display: none —— 只有Opera不产生请求。
visibility: hidden —— 在Opera下也会产生请求。
2. 隐藏元素的背景
Opera和Firefox对于用display: none隐藏的元素背景,不会产生HTTP请求。
3. 重复图片(所加载图片是一样的 <img />)
所有浏览器产生一次请求
4. 重复背景
所有浏览器产生一次请求
5. 页面中不存在的元素的背景
不请求(只用对应元素在html页面中存在时,才会加载图片,先渲染DOM,再渲染CSS 树)
6. 多重背景
请求最后一个(样式覆盖)
7. hover的背景加载
触发hover时,才会请求
8. JS里innerHTML中的图片
只有Opera不会马上请求图片。当添加到DOM树上时,Opera才会发送请求。
9. 图片预加载