在 CSS 中实现图像精灵
图像精灵用于许多使用多个图像的 Web 应用程序。与其将每个图像作为单独的图像文件包含,不如将它们作为单个图像发送,这样可以更节省内存和带宽;使用背景位置作为区分同一图像文件中各个图像的方法,从而减少 HTTP 请求数。
注意:使用 HTTP/2 时,使用多个小型请求实际上可能更节省带宽。
实施
假设每个具有类 toolbtn
的项目都给定一个图像
css
.toolbtn {
background: url(myfile.png);
display: inline-block;
height: 20px;
width: 20px;
}
可以在背景中的 url()
后添加背景位置,也可以作为 background-position
添加。例如
css
#btn1 {
background-position: -20px 0px;
}
#btn2 {
background-position: -40px 0px;
}
这将使 ID 为 btn1
的元素的背景图像的起始点向左滑动 20 像素,而 ID 为 btn2
的元素的背景图像的起始点向左滑动 40 像素(假设它们都分配了类 toolbtn
并且受上面图像规则的影响)。
同样,您也可以使用以下方法创建悬停状态:
css
#btn:hover {
background-position: <pixels shifted right>px <pixels shifted down>px;
}