CSS Sprite 是 Web 开发中使用的一种技术,用于将多个图像组合成一个图像文件。这种方法可以帮助减少服务器请求数量并提高网站性能。
CSS sprite 通常用于网站上的图标、按钮和其他小图形。然后使用 CSS 根据需要显示sprite的特定部分。
以下是有关如何在 CSS 中创建和使用sprite的分步指南:
第 1 步 :创建 Sprite 图像
创建一个图像文件,其中包含您要在网站上使用的所有单个图像(图标、按钮等)。您可以使用 Photoshop 等软件或类似工具将这些图像排列成单个图像文件。
以合适的格式(如 PNG 或 JPEG)保存sprite。确保sprite 中的各个图像组织良好,图像之间的间距一致。
第 2 步:添加 HTML 标记
在 HTML 文档中,您需要添加将显示sprite 中的各个图像的元素。通常,您将使用 <div> 或 <span> 等 HTML 元素来实现此目的。下面是一个示例:
<html>
<head>
<!-- 这里的 CSS 样式 -->
</head>
<body>
<div class="sprite-icon"></div>
</body>
</html>
第 3 步:定义 CSS 类
在 CSS 文件/样式标记(内联样式)中,为使用sprite的每个元素定义类。您将 background-image 设置为sprite并指定 background-position 显示sprite 所需的部分。下面是一个示例:
.sprite-icon {
width: 32px; /* 设置显示图像的宽度 */
height: 32px; /* 设置显示图像的高度 */
background-image: url('sprites.png'); /* 图像的路径 */
background-position: -16px -16px; /* 单个图像的位置 */
}
在上面的示例中,background-position 属性用于指定要显示sprite的哪一部分。值(-16px、-16px)表示所需图像在sprite 中的位置。通过调整这些值,您可以显示sprite 中的不同图像。
第 4 步:在 HTML 中使用sprite
您现在可以使用在 HTML 元素中定义的 CSS 类来显示sprite 中的各个图像:
<div class="sprite-icon"></div>
对需要显示sprite 中的图像的每个元素重复此过程。
CSS sprite: 基本示例
以下示例演示如何使用 CSS sprite显示单个图像文件中的多个图像。
<html>
<head>
<style>
.orignal-img {
width: 300px;
height: 100px;
}
ul {
list-style: none;
padding: 0;
}
li {
height: 150px;
display: block;
}
li a {
display: block;
height: 100%;
}
.bootstrap, .html, .css {
width: 150px;
height: 150px;
background-image: url('/css/images/devices.png');
background-repeat: no-repeat;
}
.bootstrap {
background-position: -5px -5px;
}
.html {
background-position: -155px -5px;
}
.css {
background-position: -277px -5px;
}
</style>
</head>
<body>
<h3>原始图片</h3>
<img class="orignal-img" src="/css/images/devices.png"/>
<h3>实现 CSS 图像sprites后</h3>
<ul class="navbar">
<li><a href="#" class="bootstrap"></a></li>
<li><a href="#" class="html"></a></li>
<li><a href="#" class="css"></a></li>
</ul>
</body>
</html>
CSS sprite: 悬停效果
以下示例演示如何使用sprite创建悬停效果,当您将鼠标悬停在图像上时,图像会变得稍微透明 -
<html>
<head>
<style>
.orignal-img {
width: 300px;
height: 100px;
}
ul {
list-style: none;
padding: 0;
}
li {
height: 150px;
display: block;
}
li a {
display: block;
height: 100%;
}
.bootstrap, .html, .css {
width: 150px;
height: 150px;
background-image: url('/css/images/devices.png');
background-repeat: no-repeat;
}
.bootstrap {
background-position: -5px -5px;
}
.html {
background-position: -155px -5px;
}
.css {
background-position: -277px -5px;
}
.bootstrap:hover, .html:hover, .css:hover {
opacity: 0.7;
}
</style>
</head>
<body>
<h3>原始图像</h3>
<img class="orignal-img" src="/css/images/devices.png"/>
<h3>实现 CSS 图像sprites后</h3>
<ul class="navbar">
<li><a href="#" class="bootstrap"></a></li>
<li><a href="#" class="html"></a></li>
<li><a href="#" class="css"></a></li>
</ul>
</body>
</html>