我试图通过在我的项目中使用精灵图像来减少 HTTP 调用的数量。所以结构是这样的:
<div class="parent">
<div class="child-1">Content here</div>
<div class="child-2">Content here</div>
</div>
<div class="outsider">
Content here
</div>
我有一个具有 3 个图像的精灵——每个用于 2 个父类的子类,最后一个用于“局外人”类。
我可以尝试像这样给出 CSS:
.parent{
background-image: url("../img/4-in-one-sprite.png");
}
.child-1{
background-position: 0px -10px;
width: 10px;
}
.child-2{
background-position: 0px -20px;
width: 10px;
}
.outsider{
background-position: 0px -30px;
width: 10px;
}
既然外人不属于父母,就不会得到那个背景吧?因此,我还必须在其类定义中重新指定相同的背景图像,如下所示:
.outsider{
background-image: url("../img/4-in-one-sprite.png");
background-position: 0px -30px;
width: 10px;
}
我的疑问是:
浏览器不会为局外人类发出额外的图像请求吗?想象一下图像没有被缓存并且它是该页面的第一次加载。
或者浏览器会以某种方式智能地理解其相同的资源并且总共只进行 1 次调用?
当我们提供背景图片时,在渲染页面的哪个阶段,浏览器会请求资源?是在解析 css 时还是在将它们绘制到 dom 上时?
在不单独放置第三张图片的情况下,在这里使用 sprite 并将 http 调用减少到最低限度的最佳方法是什么?