Css 简明教程

CSS - Image Sprites

图片精灵是一种在 Web 开发中用于将多张图片组合成单个图片文件的方法。此方法可以帮助减少服务器请求数量,并提高网站性能。

图片精灵通常用于网站上的图标、按钮和其他小图形。然后使用 CSS 根据需要显示精灵图片的特定部分。

以下分步指南说明了如何在 CSS 中创建和使用图片精灵:

Step 1: Create The Sprite Image

  1. 创建一张包含你希望在网站上使用的所有单个图片(图标、按钮等)的图片文件。你可以使用 Photoshop 或类似工具将这些图片排列到一张图片文件中。

  2. 以 PNG 或 JPEG 等合适格式保存精灵图片。确保精灵中的各个图片组织良好,且彼此之间具有间距一致。

Step 2: Add HTML Markup

在你的 HTML 文档中,你需要添加将从精灵中显示各个图片的元素。为此,通常你会使用 <div> 或 <span> 等 HTML 元素。以下是一个示例:

<html>
<head>
  <!-- CSS styling here -->
</head>
<body>
  <div class="sprite-icon"></div>
</body>
</html>

Step 3: Define CSS Classes

在你的 CSS 文件/样式标签(内联样式)中,为每个使用精灵图片的元素定义类。你将 background-image 设置为精灵图片,并指定 background-position 以显示精灵所需的部件。以下是一个示例:

.sprite-icon {
   width: 32px; /* Set the width of the displayed image */
   height: 32px; /* Set the height of the displayed image */
   background-image: url('sprites.png'); /* Path to your sprite image */
   background-position: -16px -16px; /* Position of the individual image within the sprite */
   }

在上面的示例中,使用了 background-position 属性来指定显示部分精灵图像。值 (-16px, -16px) 表示精灵中所需的图像位置。通过调整这些值,您可以精灵中显示不同的图像。

Step 4: Use The Sprites In HTML

你现在可以使用在 HTML 元素中定义的 CSS 类来显示精灵中的各个图像:

<div class="sprite-icon"></div>

对从精灵显示图像的每个元素重复此过程。

CSS Image Sprites - Basic Example

以下示例演示如何使用 CSS 图像精灵从单个图像文件中显示多个图像。

<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('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>Orignal Image</h3>
   <img class="orignal-img" src="images/devices.png"/>
   <h3>After implementing CSS image 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 Image Sprites - Hover Effect

以下示例演示如何使用图像精灵创建鼠标悬停效果,当您将鼠标悬停在其上时,图像会变得稍微透明−

<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('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>Orignal Image</h3>
   <img class="orignal-img" src="images/devices.png"/>
   <h3>After implementing CSS image 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>