视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何使用CSS控制前端图片HTTP请求
2020-11-27 18:48:28 责编:小采
文档
 Web前端图片加载的方式多种多样,其所产生的HTTP请求也各异,这里我们就来列举CSS控制前端图片HTTP请求的各种情况示例,需要的朋友可以参考下

图片的http请求,有很多种情况,那么究竟什么情况下面不会发生请求呢?下面我用案例一一列举一下,希望对你深入了解http图片请求有所帮助。

1. 隐藏图片

<img src="haorooms.jpg" style="display: none" />

http请求如下:

结论:只有Opera不产生请求。 注意:用visibility: hidden隐藏图片时,在Opera下也会产生请求。

2. 重复图片

<img src="haorooms.jpg" />
<img src="haorooms.jpg" />

http请求如下:

结论:所有浏览器都只产生一次请求 。

3. 重复背景

<style type="text/css"> 
 .test1 { background: url(haorooms.jpg) } 
 .test2 { background: url(haorooms.jpg) } 
</style> 
<p class="test1">test1</p> 
<p class="test2">test2</p>

http请求如下:

结论:所有浏览器都只产生一次请求。

4. 不存在的元素的背景

<style type="text/css"> 
 .test1 { background: url(haorooms.jpg) } 
 .test2 { background: url(http2.jpg) } /* 页面中没有class为test2的元素 */
</style> 
<p class="test1">test1</p>

http请求如下:

结论:背景仅在应用的元素在页面中存在时,才会产生请求。这对CSS框架来说,很有意义。

5. 隐藏元素的背景

<style type="text/css"> 
 .test1 { background: url(haorooms.jpg); display: none; } 
 .test2 { background: url(http2.jpg); visibility: hidden; } 
</style> 

<p class="test1">test1</p>

http请求如下:

结论:Opera和Firefox对于用display: none隐藏的元素背景,不会产生HTTP请求。仅当这些元素非display: none时,才会请求背景图片。

6. 多重背景

<style type="text/css"> 
 .test1 { background: url(haorooms.jpg); } 
 .test1 { background: url(http2.jpg); } 
</style> 
<p class="test1">test1</p>

上面这段代码的http请求,只会请求http2.jpg这一张图片,原因是test1的class把上面的给覆盖掉了,所有只请求后面的一张图片!

假如用css3多张背景图片的写法:

<style type="text/css"> 
 .test1 { background-image:url("haorooms.jpg"),url("http2.jpg"); } 
</style> 
<p class="test1">test1</p>

那么http请求如下:

webkit引擎浏览器对背景图都请求,是因为支持CSS3中的多背景图。

7. hover的背景加载

<style type="text/css"> 
 a.test1 { background: url(haorooms.jpg); } 
 a.test1:hover { background: url(http2.jpg); } 
</style> 
<a href="#" class="test1">test1</a>

http请求如下:

结论:触发hover时,才会请求hover状态下的背景。不触发的话,只请求默认的背景图片。

8. JS里innerHTML中的图片

<script type="text/javascript"> 
 var el = document.createElement('p'); 
 el.innerHTML = '<img src="haorooms.jpg" />'; 
 //document.body.appendChild(el); 
</script>

http请求如下:

结论:只有Opera不会马上请求图片。

注意:当添加到DOM树上时,Opera才会发送请求。

9. 图片预加载
最常用的是JS方案:

<script type="text/javascript"> 
 new Image().src = 'haorooms.jpg'; 
 new Image().src = 'http2.jpg'; 
</script>

在无JS支持的环境下,可以采用隐藏元素来预加载:

<img src="haoroomscom.jpg" style="visibility: hidden; height: 0; width: 0" />

总结
1、对于隐藏图片和隐藏元素的背景,Opera不会产生请求。
2、对于隐藏元素的背景,Firefox也不会产生请求。
3、对于尚未插入DOM树的img元素,Opera不会产生请求。
4、基于webkit引擎的Safari和Chrome,支持多背景图。
5、其它情景,所有主流浏览器保持一致。
希望上面的图片http请求对您有所帮助,大家可以相互留言交流!

下载本文
显示全文
专题