Quero Vender 1 .com
Canais iMasters

CSS + Linguagens

CSS Sprite

O que é Sprite?

Antes que façam a piadinha [rs], Sprite não é a marca de refrigerante e sim "um conjunto de dados que definem determinado objeto ou personagem num jogo. Para uma pessoa, por exemplo, podemos ter um sprite que contenha as posições vertical e horizontal dela no mundo, a direção para onde ela está virada e os bitmaps que podem representá-la durante o jogo".

E o CSS Sprite?

CSS Sprite é uma técnica que usa um Sprite para fazer uma "troca de imagem", ou seja, o deslocamento de posição do mapa de imagem que irá fazer no caso a "animação". Essa técnica permite que utilizemos várias imagens em uma só, assim economizamos número de requisições no servidor e quantidade de imagens.

Como desenvolver essa técnica?

Usarei aqui um exemplo de como aplicar CSS Sprite em um menu, onde ao passar o mouse ele trocará a imagem de fundo. Usarei a imagem e somente essa imagem abaixo para desenvolvimento do tutorial.

O menu inicialmente será em preto e branco, conforme abaixo, e ao passar o mouse ele ficará colorido. Veja o exemplo:

Ao passar o mouse sobre (hover), a opção mudará a cor de fundo:

Depois da produção das imagens, vamos ao HTML!

Cada link tem sua ID, ou seja, cada link terá seu fundo individual, por isso utilizo ID ao invés de classe.

<div id="top_menu">
<ul>
	<li><a href="#" id="opt1">Option 1</a></li>
	<li><a href="#" id="opt2">Option 2</a></li>
	<li><a href="#" id="opt3">Option 3</a></li>
	<li><a href="#" id="opt4">Option 4</a></li>
</ul>
</div>

Depois de construído o menu em HTML, iremos estilizá-lo com CSS.

Enfim, o CSS:

Aqui está o código mais importante do nosso CSS.

#top_menu ul li a{
    background-image:url(bg_sprite.gif);
    background-repeat:no-repeat;
    background-position:right;
    (...)
}   
#top_menu ul li a:hover#opt1{ background-position:-3px 6px; }
#top_menu ul li a:hover#opt2{ background-position:-110px 6px; }
#top_menu ul li a:hover#opt3{ background-position:-217px 6px; }
#top_menu ul li a:hover#opt4{ background-position:-320px 6px; }

Explicando:

#top_menu ul li a: Ele carrega a imagem bg_sprite.gif como fundo (background) uma única vez, não repetindo a imagem e posicionando a direita, local onde está a cor de fundo do nosso menu, como está na imagem menu pronto.

Agora explicarei somente um estilo, que é equivalente aos posteriores, pois alteramos somente a posição X (horizontal) e Y (vertical) da imagem, dando a sensação que a mesma está sendo trocado.

#top_menu ul li a:hover#opt1: É alterado somente a posição do background ao mover o mouse sobre o link, uma vez que a imagem já está carregada pelo estilo #top_menu ul li a.

O primeiro valor do background é equivalente a posição X (horizontal) e o segundo Y (vertical);

Conclusão:

O CSS Sprite pode ser usado em várias ocasiões, a exemplo de vários ícones na página. Se você tem 10 ícones, você pode produzir somente uma imagem com os 10 ícones e posicioná-las como background a sua necessidade.

Notas:

O exemplo desse artigo está disponível aqui.

O arquivo completo pode ser baixado nesse aqui.

Abraço, e até a próxima!

Eder Prado

Eder Prado

é graduando em Gestão em Marketing pela Unip (SP). Hoje atua como web designer na Sodré Santoro - Leiloeiro Oficial, e como analista em marketing digital pela sua empresa.


Comente também

16 Comentários

Éder da Silva
Éder da Silva

Excelente materia meu amigo,isso ira ajudar muitas pessoas pode ter certeza disso. Valewww

Vinicius Vicente
Vinicius Vicente

É, isso é algo a pensar... até que é bom o artigo... valeu pela idéia!

marco moura
marco moura

Em um artigo do YAHOO sobre performa-se, é dito q diminuir o numero de requisições na página tem um grande impacto na redução do tempo de resposta para o usuário

CSS sprite na veia, nada de pensar, vamos usar já

Performace
Performace

only shittt performa-se!!!!

Edimar Ramos
Edimar Ramos

show de bola... ficou bacana o resultado

Rafael Brugnollo
Rafael Brugnollo

Não conhecia a técnica... obrigado pelo artigo!!! me ensinou muito!

Igor Escobar
Igor Escobar

Legal a idéia desta artigo amigo. Original, parabens ;)

Davi Lima
Davi Lima

Tem como eu colocar ALTs ou TITLEs para cada botão da sprite?

Eder Prado
Eder Prado

Davi Lima, respondendo sua pergunta. Não é possível colocar alt e title na imagens, uma vez que elas são carregadas como background.

O que você pode fazer é colocar title na tag <a>, por exemplo, <a title="Imasters" hreh="...

Abraço!

Rafael 001
Rafael 001

Realmente é artigos assim que valem a pena ler... Essa técnica não conhecia, apesar de simples não sabia que com o "background-position" podiamos usar -100px; -20px, etc...

Valeuuuuu!!!

Neucimar Flávio Vieira
Neucimar Flávio Vieira

Horra, parabens ótima matéria mesmo.

Gustavo Buarque Costa Cardoso
Gustavo Buarque Costa Cardoso

Porque de uma imagem em preto branco, se somente usa a imagem colorida.

Eder Prado
Eder Prado

Infelizmente não entendi sua pergunta!

Rodrigo Luiz Genz
Rodrigo Luiz Genz

Nossa nunca tive tal pensamento sobre efeito de menus quanto a esse, mas confesso ter me confundido quanto a escolha do artigo para a leitura ^^ pensei que aqui estaria sendo postado sobre os spray.
Mas terminei satisfeito, pois tal conhecimento não tinha ainda .. vlw continue assim ;D

Gislailson
Gislailson

Gostei muito, é bem explicativo
:D

taito
taito

mto bom o artigo!!
Andei fuçando sites grandes esses dias e eles usam esse metodo. na verdade, eu só vi a imagem grande com os icones, e fiquei imaginando como eles usavam...
agora sei!
hahaha
tecnica de grande utilidade.

Qual a sua opinião?

Comentários considerados ofensivos serão moderados.
BlackBerry

Parceiros

IBM
Abril
Hostmídia
PagSeguro
Impacta
Internet Innovation
Grupo Buscapé
Dialhost
O Ligador
RedeHost
Campus Party
Apiki
Tecla
Verisign
KingHost
DotStore
Café Azul - Social, Mobile e Smart TV
WebMatrixWebMatrix