English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
A tecnologia CSS Sprites é um método para reduzir o número de solicitações de recursos de imagem HTTP ao combinar imagens em um único arquivo.
Sub-quadros são imagens bidimensionais, compostas por pequenas imagens combinadas em uma grande imagem sob os eixos X e Y definidos.
Para exibir uma única imagem dentro de uma imagem combinada, você pode usar CSS background-positionAtributo, define a posição exata da imagem a ser exibida.
Páginas com muitos imagens, especialmente muitas imagens pequenas (por exemplo, ícones, botões, etc.) podem levar muito tempo para carregar e gerar várias solicitações de servidor.
Usar sprites de imagem em vez de imagens individuais reduz significativamente o número de solicitações HTTP que o navegador envia para o servidor, o que é muito eficaz para reduzir o tempo de carregamento da página da web e o desempenho geral do site.
Atenção:Reduzir o número de solicitações HTTP tem um impacto significativo na redução do tempo de resposta, que faz a página da web responder mais rapidamente ao usuário.
Veja o exemplo a seguir, você verá uma diferença evidente. Quando você coloca o ponteiro do mouse em um ícone de navegador não Sprite pela primeira vez, uma imagem de ponta de interagir aparecerá após um período de tempo, isso porque a imagem de ponta de interagir é carregada do servidor quando o mouse está sobre ele, pois a imagem normal e a imagem de ponta de interagir são duas imagens diferentes.
Enquanto na versão Sprite, devido a todas as imagens estarem combinadas em uma única imagem, ao passar o mouse sobre ela, a imagem de ponta de suspensão é exibida imediatamente, resultando em um efeito de ponta de suspensão suave. Após o uso do CSS Sprite, o usuário pode acessar a imagem combinada, reduzindo o número de solicitações HTTP e o tamanho total do arquivo, aumentando a eficiência do acesso.
através de10imagens individuais combinadas em uma única imagem (mySprite.png)para criar essa imagem sprite. Você pode usar qualquer ferramenta de edição de imagem preferida para criar sua própria sprite.
提示:Para simplificar, usamos ícones de mesmo tamanho e os colocamos próximos uns dos outros para facilitar o cálculo das quantias de deslocamento.
Por fim, usando CSS, podemos exibir apenas uma parte da imagem sprite necessária.
Primeiro, criaremos a classe .sprite que carregará a imagem sprite. Isso é para evitar repetições, pois todos os itens compartilham a mesma imagem de fundo.
.sprite { background: url("images/mySprite.png") no-repete; }Teste para Ver‹/›
Agora, devemos definir uma classe para cada item a ser exibido. Por exemplo, para exibir o ícone do Internet Explorer, o sprite de imagem será o código CSS.
.ie { largura: 50px; /* Largura do ícone */ height: 50px; /* Altura do ícone */ display: inline-block; /* Exibir ícone como bloco em linha */ background-position: 0 -200px; /* Icone de fundo de posição no sprite */ }Teste para Ver‹/›
Agora, surge um problema, como obteremos esses valores de pixelsbackground-position?Vamos encontrar a resposta. O primeiro valor é a posiçãohorizontal,o segundo é a posiçãoposição vertical。Devido ao canto superior esquerdo do ícone do Internet Explorer tocar na margem esquerda, a distância horizontal entre ele e o ponto de partida (ou seja, o canto superior esquerdo da imagem sprite) é0e, devido a ela estar na5posição,Portanto, a distância vertical da imagem sprite ao ponto de partida é4 X 50px = 200px, pois a altura de cada ícone é50px。
Para exibir o ícone do Internet Explorer, devemos mover o canto superior esquerdo para o ponto de partida, ou seja, o canto superior esquerdo da imagem sprite (mySprite.png). Além disso, devido à distância vertical deste ícone200px,portanto, precisamos mover toda a imagem de fundo (mySprite.png) verticalmente para cima200px,isto requer que apliquemos o valor como número negativo-200px,porque um valor negativo o faria mover-se verticalmente para cima, enquanto um valor positivo o faria mover-se para baixo. No entanto, não há necessidade de deslocamento horizontal, pois o canto superior esquerdo do ícone do Internet Explorer não possui pixels.
提示:只需background-position在后面的示例中使用property 的值,即可快速了解偏移量的工作原理。
在上一节中,我们学习了如何显示图像精灵中的单个图标。这是使用图像精灵的最简单方法,现在我们将通过构建一个具有翻转效果的导航菜单向前迈出一步。
在这里,我们将使用相同的精灵图像(mySprite.png)创建导航菜单。
我们将从创建带有HTML 无序列表的导航菜单开始。
<ul class="menu"> <li class="firefox"><a href="#">Firefox</a></li> <li class="chrome"><a href="#">Chrome</a></li> <li class="ie"><a href="#">Explorer</a></li> <li class="opera"><a href="#">Opera</a></li> <li class="safari"><a href="#">Safari</a></li> </ul>Teste para Ver‹/›
以下各节将介绍如何使用CSS将上面示例中给出的简单无序列表转换为基于恶意图像的导航。
默认情况下,HTML 无序列表显示为项目符号。我们需要通过将list-style-type属性设置为来删除默认的项目符号none。
ul.menu { list-style-type: none; } ul.menu li { padding: 5px; font-size: 16px; font-family: "Trebuchet MS", Arial, sans-serif; }Teste para Ver‹/›
In this step, we will set all the common CSS properties that all links will share. For example:color,background-image,display,paddingetc.
ul.menu li a { height: 50px; line-height: 50px; display: inline-block; padding-left: 60px; /* To sift text off the background-image */ color: #3E789F; background: url("images/mySprite.png") no-repete; /* Como todos os links compartilham o mesmo fundo-image */ }Teste para Ver‹/›
Agora,我们必须 definir uma classe para cada item do menu, porque cada item dentro do sprite de imagem tembackground-position. Por exemplo, o ícone Firefox está no ponto de partida do sprite de imagem, ou seja, no canto superior esquerdo, portanto, não é necessário mover a imagem de fundo. Portanto, neste caso, a posição vertical e horizontal do fundo será 0. Da mesma forma, você pode definir a posição de fundo para outros ícones dentro do sprite de imagem.
ul.menu li.firefox a { background-position: 0 0; } ul.menu li.chrome a { background-position: 0 -100px; } ul.menu li.ie a { background-position: 0 -200px; } ul.menu li.safari a { background-position: 0 -300px; } ul.menu li.opera a { background-position: 0 -400px; }Teste para Ver‹/›
Adicionar o estado de sobreposição é o mesmo princípio que adicionar o link acima. Basta mover o canto superior esquerdo para o ponto de partida do sprite de imagem (ou seja, o canto superior esquerdo), como fizemos acima. Você podebackground-positionPode ser calculado simplesmente usando a seguinte fórmula:
A posição vertical do estado de sobreposição = a posição vertical do estado normal - 50px
Como a imagem de sobreposição do mouse está abaixo do estado padrão, a altura de cada ícone é igual a50px. O estado de sobreposição do ícone também não precisa de deslocamento horizontal, pois não há pixels antes do canto superior esquerdo do ícone.
ul.menu li.firefox a:hover { background-position: 0 -50px; } ul.menu li.chrome a:hover { background-position: 0 -150px; } ul.menu li.ie a:hover { background-position: 0 -250px; } ul.menu li.safari a:hover { background-position: 0 -350px; } ul.menu li.opera a:hover { background-position: 0 -450px; }Teste para Ver‹/›
Concluído! Após combinar todo o processo, este é nosso código HTML e CSS final: