<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>bittersweet dev &#187; Sprite</title>
	<atom:link href="http://blog.hboaventura.com/tag/sprite/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.hboaventura.com</link>
	<description>'cause that's the dev life</description>
	<lastBuildDate>Wed, 12 May 2010 02:29:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Otimize seu site usando CSS Sprite</title>
		<link>http://blog.hboaventura.com/otimize-seu-site-usando-css-sprites/</link>
		<comments>http://blog.hboaventura.com/otimize-seu-site-usando-css-sprites/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 02:35:37 +0000</pubDate>
		<dc:creator>kidh0</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Sprite]]></category>

		<guid isPermaLink="false">http://hboaventura.com/blog/?p=31</guid>
		<description><![CDATA[O que é um Sprite? Sprite é uma técnica utilizada originalmente em jogos 2-D  que tem por principio colocar todas as ações de um personagem (movimentos) em uma só imagem, e só mudar a posição que deve ser mostrada na tela. Quando foi criada essa técnica, o hardware era muito limitado, por isso havia a [...]

<br/><br/>
<strong>  Leia também:</strong><ol><li><a href='http://blog.hboaventura.com/css3-propriedade-box-shadow/' rel='bookmark' title='Permanent Link: CSS3: propriedade box-shadow'>CSS3: propriedade box-shadow</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h3>O que é um Sprite?</h3>
<p><a title="Link para a wikipedia" href="http://en.wikipedia.org/wiki/Sprite_(computer_graphics)" target="_blank">Sprite</a> é uma técnica utilizada originalmente em jogos 2-D  que tem por principio colocar todas as ações de um personagem (movimentos) em uma só imagem, e só mudar a posição que deve ser mostrada na tela. Quando foi criada essa técnica, o hardware era muito limitado, por isso havia a necessidade de otimizar os gráficos para não sobrecarregar o processador.</p>
<p style="text-align: left;">
<div id="attachment_32" class="wp-caption aligncenter" style="width: 310px"><a href="http://sdb.drshnaps.com/display.php?object=8535"><img class="size-medium wp-image-32" title="bountyhunters" src="http://hboaventura.com/blog/wp-content/uploads/2009/04/bountyhunters-300x102.gif" alt="Exemplo de Sprite do jogo Super Star Wars: The Empire Strikes Back, para SNES" width="300" height="102" /></a><p class="wp-caption-text">Exemplo de Sprite do jogo Super Star Wars: The Empire Strikes Back, para SNES</p></div>
<p>No desenvolvimento Web, os Sprites são amplamente utilizados em ícones e em menus rollover.</p>
<h3>Por que utilizar Sprites</h3>
<p>Vários sites, como <a href="http://www.google.com" target="_blank">Google</a> e <a href="http://www.yahoo.com" target="_blank">Yahoo</a>, utilizam essa prática para otimizar o carregamento das imagens usadas. Ao invés de requisitar 15 imagens, é feita a requisição de uma só imagem. Isso pode parecer muito pouco de for pensar em 10, 20 acessos, mas pense em milhões de acessos simultâneos? A economia de requisições neste caso é enorme.</p>
<p>A utilização de Sprites trás também a facilidade de alteração do tema do site. Imagine um site com 15 icones: Para mudar o tema, seria necessário mudar 1 por 1 os ícones. Utilizando os Sprites, seria necessário apenas mudar uma imagem que contém todos os ícones.</p>
<h3>Como usar essa técnica</h3>
<p>Vou demonstrar 2 exemplos do uso da técnica, um para ícones e outro para menus rollover.</p>
<p>O primeiro passo é criar o Sprite contendo as imagens necessárias. Para este exemplo, criei 4 estágios de botões (bem simples, diga-se de passagem):</p>
<p style="text-align: center;">
<div id="attachment_52" class="wp-caption aligncenter" style="width: 290px"><a href="http://hboaventura.com/blog/wp-content/uploads/2009/04/menu_sprite.png"><img class="size-full wp-image-52" title="menu_sprite.png" src="http://hboaventura.com/blog/wp-content/uploads/2009/04/menu_sprite.png" alt="Menu Sprite" width="280" height="25" /></a><p class="wp-caption-text">Menu Sprite</p></div>
<p>Feito isso, vamos colocar a mão na massa e fazer o HTML.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ul<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;li</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;opcao1&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;a</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;#&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Opção 1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/li<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;li</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;opcao2&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;a</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;#&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Opção 2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/li<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;li</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;opcao3&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;a</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;#&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Opção 3<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/li<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ul<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Cada item tem definido um ID, pois  cada um terá um fundo (ícone) diferente.</p>
<p>Agora que temos o HTML, podemos estilizar usando CSS. Para este caso, usaremos a seguinte definição, abstraindo os estilos comuns e mostrando apenas o necessário para fazer a &#8220;mágica&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">ul li<span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">menu_sprite.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #933;">0px</span> <span style="color: #933;">0px</span> <span style="color: #993333;">no-repeat</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
ul li<span style="color: #cc00cc;">#opcao1</span><span style="color: #3333ff;">:hover</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #933;">-70px</span> <span style="color: #933;">0px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
ul li<span style="color: #cc00cc;">#opcao2</span><span style="color: #3333ff;">:hover</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #933;">-140px</span> <span style="color: #933;">0px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
ul li<span style="color: #cc00cc;">#opcao3</span><span style="color: #3333ff;">:hover</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #933;">-210px</span> <span style="color: #933;">0px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span></pre></div></div>

<h3>Explicando tudo</h3>
<p><strong>ul li</strong>: Aqui eu defino o background padrão para os botões do menu e posiciono ele na posição (0px, 0px), pois é essa a posição da imagem que eu quero que apareça. Cabe aqui explicar a sintax da propriedade <a href="http://www.htmldog.com/reference/cssproperties/background/" target="_blank">background</a>:</p>
<blockquote><p>É a combinação de algum ou todos os valor para background-color, background-image, background-repeat, background-attachment e background-position</p></blockquote>
<p>Como a mesma regra se aplica a todos os links, só alterando a posição, vou colocar a explicação somente para a primeira opção.</p>
<p><strong>ul.li#opcao1:hover</strong>: Aqui se aplica a propriedade background-position{ -70px 0px; }, ou seja, deslocar a imagem de background 70 pixels para a esquerda quando o mouse estiver sobre o li, fazendo aparecer a outra imagem do sprite.</p>
<p>Dessa maneira, temos um menu rollover usando apenas uma imagem e a prática do CSS Sprite, com o seguinte resultado:</p>
<div id="attachment_57" class="wp-caption aligncenter" style="width: 230px"><a href="http://hboaventura.com/blog/wp-content/uploads/2009/04/menu_sprite_rollover.png"><img class="size-full wp-image-57" title="menu_sprite_rollover.png" src="http://hboaventura.com/blog/wp-content/uploads/2009/04/menu_sprite_rollover.png" alt="Menu Sprite com o rollover" width="220" height="41" /></a><p class="wp-caption-text">Menu Sprite com o rollover</p></div>
<p>O exemplo desta técnica está disponível <a href="http://hboaventura.com/blog/wp-content/uploads/2009/04/menu_sprite.html" target="_blank">aqui</a></p>
<p>Links interessantes sobre o assunto:</p>
<p><a title="CSS Sprite Generator" href="http://hboaventura.com/blog/wp-content/uploads/2009/04/menu_sprite.html" target="_blank">CSS Sprite Generator</a></p>
<p><a title="HTML Dog" href="http://www.htmldog.com" target="_blank">HTMLDog</a></p>


<br/><br/><p><strong>  Leia também:</strong><ol><li><a href='http://blog.hboaventura.com/css3-propriedade-box-shadow/' rel='bookmark' title='Permanent Link: CSS3: propriedade box-shadow'>CSS3: propriedade box-shadow</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.hboaventura.com/otimize-seu-site-usando-css-sprites/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
