<?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; HTML</title>
	<atom:link href="http://blog.hboaventura.com/tag/html/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>CSS3: propriedade box-shadow</title>
		<link>http://blog.hboaventura.com/css3-propriedade-box-shadow/</link>
		<comments>http://blog.hboaventura.com/css3-propriedade-box-shadow/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 16:04:51 +0000</pubDate>
		<dc:creator>kidh0</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://blog.hboaventura.com/?p=198</guid>
		<description><![CDATA[Continuando o assunto CSS3 e as maravilhas que ele nos trará, hoje apresentarei a propriedade box-shadow. Com esta propriedade podemos aplicar sombras em elementos utilizando somente CSS. Assim como o text-shadow, essa propriedade veio trazer um pouco de alívio para webdevelopers e webdesigners. Onde antes eram necessárias imagens, definições de backgrounds, POG&#8217;s e outras práticas [...]

<br/><br/>
<strong>  Leia também:</strong><ol><li><a href='http://blog.hboaventura.com/css3-propriedade-text-shadow/' rel='bookmark' title='Permanent Link: CSS3: propriedade text-shadow'>CSS3: propriedade text-shadow</a></li>
<li><a href='http://blog.hboaventura.com/otimize-seu-site-usando-css-sprites/' rel='bookmark' title='Permanent Link: Otimize seu site usando CSS Sprite'>Otimize seu site usando CSS Sprite</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-147 alignleft" title="CSS" src="http://blog.hboaventura.com/wp-content/uploads/2009/07/css-300x184.jpg" alt="CSS" width="216" height="132" />Continuando o assunto CSS3 e as maravilhas que ele nos trará, hoje apresentarei a propriedade <a href="http://www.w3.org/TR/css3-background/#the-box-shadow" target="_blank">box-shadow</a>. Com esta propriedade podemos aplicar sombras em elementos utilizando somente CSS. Assim como o <a href="http://blog.hboaventura.com/css3-propriedade-text-shadow/" target="_blank">text-shadow</a>, essa propriedade veio trazer um pouco de alívio para webdevelopers e webdesigners. Onde antes eram necessárias imagens, definições de backgrounds, <a href="http://desciclo.pedia.ws/wiki/POG" target="_blank">POG&#8217;s</a> e outras práticas não menos nocivas, agora há possibilidade de definição direto no seu CSS. Não é uma maravilha esse pessoal da <a href="http://www.w3.org/" target="_blank">W3C</a>?</p>
<h3>Definição</h3>
<p>A propriedade box-shadow pode ser aplicada a qualquer elemento e é aceito atualmente pelo Firefox 3.5+ (utilizando o prefixo -moz a propriedade) e pelo Safari 3.1+ (utilizando o prefixo -webkit a propriedade). Não preciso dizer que os &#8211;projetos de browsers&#8211; de Redmond não aceitam (ainda) esta propriedade.</p>
<p>O box-shadow não faz parte do box-shadow, ou seja, não influencia no tamanho total que o elemento terá na tela.</p>
<p>A propriedade é declarada da seguinte maneira:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">box-shadow<span style="color: #00AA00;">:</span><span style="color: #933;">5px</span> <span style="color: #933;">5px</span> <span style="color: #933;">10px</span> <span style="color: #cc00cc;">#ccc</span><span style="color: #00AA00;">;</span>
<span style="color: #808080; font-style: italic;">/* implementação para o firefox */</span>
-moz-box-shadow<span style="color: #00AA00;">:</span><span style="color: #933;">5px</span> <span style="color: #933;">5px</span> <span style="color: #933;">10px</span> <span style="color: #cc00cc;">#ccc</span><span style="color: #00AA00;">;</span>
<span style="color: #808080; font-style: italic;">/* implementação para safari */</span>
-webkit-box-shadow<span style="color: #00AA00;">:</span><span style="color: #933;">5px</span> <span style="color: #933;">5px</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#ccc</span><span style="color: #00AA00;">;</span></pre></div></div>

<p>Onde:</p>
<ul>
<li> o primeiro valor é a posição horizontal da sombra em relação ao elemento. Valor positivo projeta a sombra para a direita e negativo para a esquerda;</li>
<li>o segundo valor é a posição vertical da sombra em relação ao elemento. Valor positivo projeta a sombra para baixo e negativo, adivinhem?, para cima;</li>
<li>o terceiro valor é o blur da sombra, só aceita valores positivos ou 0 (zero);</li>
<li>o quarto e último valor é a cor da sombra;</li>
</ul>
<p>A propriedade aceita multiplas sombras. Podemos implementar inúmeros efeitos desta forma. Para isso é só separar a declaração de cada sombra com vírgulas:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">box-shadow<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span> <span style="color: #933;">5px</span> <span style="color: #933;">10px</span> <span style="color: #cc00cc;">#333</span><span style="color: #00AA00;">,</span> <span style="color: #933;">-5px</span> <span style="color: #933;">-5px</span> <span style="color: #933;">10px</span> <span style="color: #cc00cc;">#ccc</span><span style="color: #00AA00;">;</span></pre></div></div>

<h3>Exemplos</h3>
<p>Vamos então colocar a mão na massa e implementar os dois exemplos acima, primeiro a sombra simples:</p>
<div style="-moz-box-shadow:5px 5px 10px #ccc;font-size:1.2em; border:1px solid #ccc; padding:30px 5px; text-align:center;">bittersweet dev &#8211; CSS3: propriedade box-shadow</div>
<p>E agora o exemplo com múltiplas sombras:</p>
<div style="-moz-box-shadow:5px 5px 10px #333, -5px -5px 10px #ccc;;font-size:1.2em; border:1px solid #ccc; padding:30px 5px; text-align:center;">bittersweet dev &#8211; CSS3: propriedade box-shadow</div>
<p>Para aqueles que estão me taxando de louco ou acham que essa é a versão web do conto <a href="http://pt.wikipedia.org/wiki/A_Roupa_Nova_do_Rei" target="_blank">A Roupa Nova do Rei</a>, seguem as respectivas imagens com o que você deveria ter visto aqui:</p>
<div id="attachment_216" class="wp-caption aligncenter" style="width: 526px"><img class="size-full wp-image-216" title="sombra_simples" src="http://blog.hboaventura.com/wp-content/uploads/2009/07/sombra_simples.png" alt="Sombra Simples" width="516" height="102" /><p class="wp-caption-text">Sombra Simples</p></div>
<div id="attachment_217" class="wp-caption aligncenter" style="width: 531px"><img class="size-full wp-image-217" title="sombra_multipla" src="http://blog.hboaventura.com/wp-content/uploads/2009/07/sombra_multipla.png" alt="Sombra Múltipla" width="521" height="108" /><p class="wp-caption-text">Sombra Múltipla</p></div>
<p>E por hoje é só pessoal! Dúvidas, críticas, sugestões?</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 566px; width: 1px; height: 1px;">http://pt.wikipedia.org/wiki/A_Roupa_Nova_do_Rei</div>


<br/><br/><p><strong>  Leia também:</strong><ol><li><a href='http://blog.hboaventura.com/css3-propriedade-text-shadow/' rel='bookmark' title='Permanent Link: CSS3: propriedade text-shadow'>CSS3: propriedade text-shadow</a></li>
<li><a href='http://blog.hboaventura.com/otimize-seu-site-usando-css-sprites/' rel='bookmark' title='Permanent Link: Otimize seu site usando CSS Sprite'>Otimize seu site usando CSS Sprite</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.hboaventura.com/css3-propriedade-box-shadow/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CSS3: propriedade text-shadow</title>
		<link>http://blog.hboaventura.com/css3-propriedade-text-shadow/</link>
		<comments>http://blog.hboaventura.com/css3-propriedade-text-shadow/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 01:17:59 +0000</pubDate>
		<dc:creator>kidh0</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://blog.hboaventura.com/?p=142</guid>
		<description><![CDATA[Quem nunca recebeu aquele layout finalizado, com um título sombreado e silenciosamente pensou: &#8220;P*** ****, lá vou eu fazer um text-replacement novamente&#8221;. Essa atitude era comum entre os webdevelopers, mas finalmente o pessoal da W3C veio solucionar nossos problemas. Definição O text-shadow pode ser aplicado a qualquer elemento que tenha texto, lógico, e é aceito [...]

<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[<p><img class="alignleft size-medium wp-image-147" title="CSS" src="http://blog.hboaventura.com/wp-content/uploads/2009/07/css-300x184.jpg" alt="CSS" width="216" height="132" /></p>
<p>Quem nunca recebeu aquele layout finalizado, com um título sombreado e silenciosamente pensou: &#8220;P*** ****, lá vou eu fazer um text-replacement novamente&#8221;. Essa atitude era comum entre os webdevelopers, mas finalmente o pessoal da <a href="http://www.w3.org/" target="_blank">W3C</a> veio solucionar nossos problemas.</p>
<h3>Definição</h3>
<p>O text-shadow pode ser aplicado a qualquer elemento que tenha texto, lógico, e é aceito pela grande maioria dos browsers modernos: Firefox 3.5, Opera 9.5+, Safari 3+. Infelizmente, mesmo com todas as melhorias (e realmente foram muitas) no Internet Explorer 7 e mais ainda no Internet Explorer 8, eles ainda não suportam essa propriedade, ou seja, escolheram a pílula azul.</p>
<p>A propriedade text-shadow é usada da seguinte maneira:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">text-shadow</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #933;">2px</span> <span style="color: #933;">2px</span> <span style="color: #cc00cc;">#00f</span><span style="color: #00AA00;">;</span></pre></div></div>

<p>Onde:</p>
<ul>
<li> os dois primeiros valores são as coordenadas top left, para onde a sombra será projetada;</li>
<li>o terceiro valor é o blur da sombra;</li>
<li>o quarto valor é a cor da sombra;</li>
</ul>
<p>A propriedade também aceita multiplas sombras. Sim! Até degradê é possível de se implementar usando somente CSS. Para isso, é só separar a declaração das sombras usando vírgulas:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">text-shadow</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #933;">2px</span> <span style="color: #933;">2px</span> <span style="color: #cc00cc;">#000</span><span style="color: #00AA00;">,</span> <span style="color: #933;">4px</span> <span style="color: #933;">4px</span> <span style="color: #933;">2px</span> <span style="color: #cc00cc;">#00f</span><span style="color: #00AA00;">;</span></pre></div></div>

<p>Essa propriedade não é nova. Na verdade ela foi proposta na especificação do <a href="http://www.w3.org/TR/REC-CSS2/text.html#text-shadow-props" target="_blank">CSS2</a>. A definição completa da propriedade pode ser encontrada <a href="http://www.w3.org/TR/2003/CR-css3-text-20030514/#text-shadows" target="_blank">aqui.</a></p>
<h3>Exemplos</h3>
<p>Vamos então implementar então os dois exemplos acima, primeiro a sombra simples:</p>
<p><span style="text-shadow: 2px 2px 2px #00f; padding:5px 10px; background-color:#666; color:#fff; font-size:1.2em;">bittersweet dev &#8211; CSS3: Propriedade text-shadow</span></p>
<p>E também o com sombras multiplas:</p>
<p><span style="text-shadow: 2px 2px 2px #000, 4px 4px 2px #00f; padding:5px 10px; background-color:#666; color:#fff; font-size:1.2em;">bittersweet dev &#8211; CSS3: Propriedade text-shadow</span></p>
<p>Pra quem não viu nada diferente nessas frases dê uma olhada nas imagens abaixo que representam respectivamente os exemplos acima:</p>
<p style="text-align: center;"><img class="size-medium wp-image-175  aligncenter" title="CSS3 text-shadow exemplo 1" src="http://blog.hboaventura.com/wp-content/uploads/2009/07/exemplo1-300x25.png" alt="CSS3 text-shadow exemplo 1" width="300" height="25" /></p>
<p style="text-align: center;"><img class="size-medium wp-image-176  aligncenter" title="CSS3 text-shadow exemplo 2" src="http://blog.hboaventura.com/wp-content/uploads/2009/07/exemplo2-300x25.png" alt="CSS3 text-shadow exemplo 2" width="300" height="25" /></p>
<p>&#8230; e uma dica, tome a pílula vermelha, ou seja, use um <a href="http://pt-br.www.mozilla.com/pt-BR/" target="_blank">browser</a> decente!</p>
<p>Aguardem novos posts explicando as novas propriedades do CSS3, até lá, deixe seu comentário, dúvida ou critica</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 173px; width: 1px; height: 1px;">

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">text-shadow</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #933;">2px</span> <span style="color: #933;">4px</span> <span style="color: #cc00cc;">#f00</span><span style="color: #00AA00;">;</span></pre></div></div>

</div>


<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/css3-propriedade-text-shadow/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Usando o SWFObject para adicionar Flash ao seu projeto</title>
		<link>http://blog.hboaventura.com/usando-o-swfobject-para-adicionar-flash-ao-seu-projeto/</link>
		<comments>http://blog.hboaventura.com/usando-o-swfobject-para-adicionar-flash-ao-seu-projeto/#comments</comments>
		<pubDate>Wed, 27 May 2009 11:14:37 +0000</pubDate>
		<dc:creator>kidh0</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.hboaventura.com/?p=107</guid>
		<description><![CDATA[Todo o desenvolvedor web que se preste deve gerar um HTML/XHTML válido para suas páginas. Isso não é mais uma recomendação, é um dever nosso. Quando falamos de inserir um Flash, o negócio fica preto, o código gerado pelos famigerados programas da Adobe não são válidos, criando tags que não existem (&#60;embed&#62;?) e um fonte [...]

<br/><br/>
<strong>Sem Posts Relacionados.</strong>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-118" title="swfobject_logo" src="http://blog.hboaventura.com/wp-content/uploads/2009/05/swfobject_logo-300x76.gif" alt="swfobject_logo" width="240" height="61" /></p>
<p>Todo o desenvolvedor web que se preste deve gerar um HTML/XHTML válido para suas páginas. Isso não é mais uma recomendação, é um dever nosso.</p>
<p>Quando falamos de inserir um Flash, o negócio fica preto, o código gerado pelos <span style="text-decoration: line-through;">famigerados</span> programas da Adobe não são válidos, criando tags que não existem (&lt;embed&gt;?) e um fonte gigantes com parâmetros que não é bom nem refletirmos muito sobre eles.</p>
<p>Outro problema que temos é de usabilidade, visto que esse Flash não tem um conteúdo alternativo, excluindo as pessoas que não tem Flash player. Claro, isso hoje em dia é raro de existir, mas não podemos esquecer que cresce cada vez mais (a passos de tartaruga, mas ainda assim caminha) o acesso a internet usando dispositivos móveis e alguns browsers usados nesses dispositivos não têm suporte. Dessa maneira, o  usuário simplesmente vai ter uma tela em branco, sem saber o que deveria ter de conteúdo ali. Também não podemos esquecer dos leitores de tela (JAWS e afins). Eles não &#8220;entendem&#8221; flash, excluindo, assim,  mais uma parcela de usuários.</p>
<p>Devemos lembrar ainda de um problema existente (pra falar a verdade, eu não sei se ainda existe, pois faz anos que não utilizo o IE) com o Internet Explorer que,  após determinada versão do Flash Player (8 se não estou enganado), tornou-se necessário clicar no flash para ativá-lo, ou seja, você precisava clicar num menu para ele funcionar como um menu.</p>
<p>Mas isso agora é passado! (parece aquelas propagandas de produtos duvidosos que aparecem na TV em horários alternativos) Existe uma maneira de inserir Flash gerando um HTML/XHTML válido, acessível e sem dores de cabeça e se chama SWFObject</p>
<h3>O que é o SWFObject?</h3>
<p>É um pequeno JavaScript  (menos de 4kb após ser comprimido) para adicionar conteúdos feitos em Flash na sua página de maneira fácil e indolor.</p>
<h3>Porque usar o SWFObject?</h3>
<p>Dentre as razões, podemos citar:<br />
* Sua página terá um HTML válido<br />
* Detecta automaticamente o Flash Player (existem outras soluções para isso, mas todas tem seus problemas)<br />
* Remove o incômodo de ter que clicar para ativar o Flash no Internet Explorer<br />
* Como é possível ter um conteúdo alternativo para o Flash, melhora a indexação pelos mecanismos de busca<br />
* Permite que se tenha uma<a href="http://www.tableless.com.br/graceful-degradation-e-tudo-sobre-acessibilidade" target="_blank"> Graceful Degradation</a></p>
<h3>Como usar</h3>
<p>Antes de tudo, devemos fazer o download do SWFObject do página do projeto no <a href="http://code.google.com/p/swfobject/downloads/list" target="_blank">Google Code</a>.<br />
A última versão estável disponível quando escrevi o artigo é a 2.1. Já existe a 2.2, mas é uma versão beta, deixem ela para depois, ok?</p>
<p>Descompacte o arquivo swfobject_2_1.zip e copie o swfobject.js e o expressInstall.swf para o diretório do seu projeto.</p>
<p>Usando o SWFObject, existem duas maneiras de adicionar o conteúdo flash na sua página.</p>
<h4>Maneira Estática</h4>
<p>Adiciona o Flash e o conteúdo alternativo usando marcação válida e usa o JavaScript para resolver que a marcação não pode resolver sozinha.  vantagem<br />
<strong>Tem como vantagem: </strong></p>
<ul>
<li>Usa marcação standard</li>
<li>Não usa javascript para adicionar o conteúdo a página, apenas para corrigir problemas pontuais, ou seja, o Flash vai ser acessível a um número maior de usuários (os que não tem suporte a JavaScript, leitores RSS, etc)</li>
</ul>
<p><strong>1º Passo </strong><br />
Seu Flash deve ser adicionado da seguinte maneira no &lt;body&gt; da sua página:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">object</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;meuId&quot;</span> <span style="color: #000066;">classid</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;</span> <span style="color: #000066;">width</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;300&quot;</span> <span style="color: #000066;">height</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;120&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">param</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;movie&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;test.swf&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
    <span style="color: #808080; font-style: italic;">&lt;!--[if !IE]&gt;--&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">object</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;application/x-shockwave-flash&quot;</span> <span style="color: #000066;">data</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;test.swf&quot;</span> <span style="color: #000066;">width</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;300&quot;</span> <span style="color: #000066;">height</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;120&quot;</span>&gt;</span>
    <span style="color: #808080; font-style: italic;">&lt;!--&lt;![endif]--&gt;</span>
       <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
            <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>Conteudo Alternativo<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>
           <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.adobe.com/go/getflashplayer&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">img</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif&quot;</span> <span style="color: #000066;">alt</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Faça o download do Flash Player&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
    <span style="color: #808080; font-style: italic;">&lt;!--[if !IE]&gt;--&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">object</span>&gt;</span>
    <span style="color: #808080; font-style: italic;">&lt;!--&lt;![endif]--&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">object</span>&gt;</span></pre></div></div>

<p>Você pode adicionar parâmetros adicionais, mas é necessário colocar o &lt;param&gt; em ambas as declarações do &lt;object&gt; para o correto funcionamento</p>
<p><strong>2º Passo </strong><br />
Adicione a chamada para o SWFObject no &lt;head&gt;:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;swfobject.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>

<p><strong>3º Passo </strong><br />
Registre seu Flash no SWFObject e mostrar o que ele deve fazer com ele:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;</span>
     swfobject.registerObject(&quot;meuFlash&quot;, &quot;9.0.0&quot;, &quot;expressInstall.swf&quot;);
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>

<p>Onde o primeiro argumento é o ID do seu Flash, o segundo é a versão mínima do Flash Player que o Flash necessita e o terceiro parâmetro (opcional) é o link para a instalação expressa do Flash Player (vem junto no pacote do SWFObject)</p>
<p><a href="http://blog.hboaventura.com/wp-content/uploads/2009/05/swfobject_static.html" target="_blank">Veja um exemplo</a></p>
<h4>Maneira Dinâmica</h4>
<p>É baseada no conteúdo alternativo e usa o JavaScript para substituir este conteúdo pelo o do Flash caso haja o Flash Player e suporte JavaScript minimo necessário.<br />
<strong>Tem como vantagem: </strong></p>
<ul>
<li>Evita ter que clicar no Flah para ativá-lo no Internet Explorer 6/7 e Opera 9</li>
<li>Se integra melhor com aplicações que usam script</li>
</ul>
<p><strong>1º Passo </strong><br />
Crie um conteúdo alternativo usando uma marcação válida no &lt;body&gt; da sua página:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;meuConteudo&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>Conteudo alternativo<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.adobe.com/go/getflashplayer&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">img</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif&quot;</span> <span style="color: #000066;">alt</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Faça o download do Flash player&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>

<p>É necessário adicionar um ID ao elemento, pois é através dele que o SWFObject irá fazer a substituição do conteúdo.</p>
<p><strong>2º Passo </strong><br />
Adicione a chamada para o SWFObject no &lt;head&gt;:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;swfobject.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>

<p><strong>3º Passo </strong><br />
Adicione o SWF usando JavaScript:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;</span>
    swfobject.embedSWF(&quot;test.swf&quot;, &quot;meuConteudo&quot;, &quot;300&quot;, &quot;120&quot;, &quot;9.0.0&quot;, &quot;expressInstall.swf&quot;);
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>

<p>O método embedSWF tem 5 parâmetros obrigatórios (urlSWF,id,width,height,versionSWF) e 4 opcionais (urlInstallSWF,flashvars,params,attributes). Para este exemplo, vou usar só os obrigatórios, mais detalhes sobre os parâmetros acesse <a href="http://code.google.com/p/swfobject/wiki/documentation" target="_blank">http://code.google.com/p/swfobject/wiki/documentation</a></p>
<p>Isso faz com que o SWFObject substitua o conteúdo do elemento ID, com o conteúdo do urlSWF</p>
<p><a href="http://blog.hboaventura.com/wp-content/uploads/2009/05/swfobject_dynamic.html" target="_blank">Veja um exemplo</a></p>
<p>Alguns links interessantes sobre o assunto:</p>
<ul>
<li><a href="http://code.google.com/p/swfobject/downloads/list" target="_blank">Página do projeto SWFObject</a></li>
<li><a href="http://www.alistapart.com/articles/flashembedcagematch/" target="_blank">A List Apart &#8211; Flash Embedding Cage Match</a></li>
</ul>
<p>E era isso, dúvidas? Críticas? Sugestões? Entre em contato!</p>


<br/><br/><p><strong>Sem Posts Relacionados.</strong></p>]]></content:encoded>
			<wfw:commentRss>http://blog.hboaventura.com/usando-o-swfobject-para-adicionar-flash-ao-seu-projeto/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CSS Hacks ou CSS Condicional? A partir de agora, nenhum!</title>
		<link>http://blog.hboaventura.com/css-hacks-ou-css-condicional-apartir-de-agora-nenhum/</link>
		<comments>http://blog.hboaventura.com/css-hacks-ou-css-condicional-apartir-de-agora-nenhum/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 03:03:15 +0000</pubDate>
		<dc:creator>kidh0</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://blog.hboaventura.com/?p=77</guid>
		<description><![CDATA[Como todo o desenvolvedor Web, sofro diariamente com as dores de cabeça causadas pelos browsers que não seguem os padrões (ok, Internet Explorer). É um tal de margem duplicada pra cá, texto misteriosos que se replicam em final de blocos, uma maravilha! Para contornar esses problemas que nosso &#8220;querido&#8221; Internet Explorer nos causa, temos algumas [...]

<br/><br/>
<strong>Sem Posts Relacionados.</strong>]]></description>
			<content:encoded><![CDATA[<p>Como todo o desenvolvedor Web, sofro diariamente com as dores de cabeça causadas pelos browsers que não seguem os padrões (ok, Internet Explorer). É um tal de margem duplicada pra cá, texto misteriosos que se replicam em final de blocos, uma maravilha!</p>
<p>Para contornar esses problemas que nosso &#8220;querido&#8221; Internet Explorer nos causa, temos algumas práticas interessantes, dentre elas, as que eu <span style="text-decoration: line-through;">utilizo</span> utilizava posso destacar os CSS Hacks e os CSS Condicionais</p>
<h3>CSS Hacks</h3>
<p>Podemos definir como CSS Hacks as formas que encontramos de &#8220;enganar&#8221; o browser (IE, sempre IE) para que ele  renderize corretamente corretamente o CSS da página. Esses Hacks somente se aplicam aos browsers que tem essa falha, lógico.</p>
<p>Podemos citar alguns Hacks famosos:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* IE 6 e anteriores */</span>
<span style="color: #00AA00;">*</span> html <span style="color: #cc00cc;">#um</span>  <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span> <span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* IE 7 e anteriores */</span>
<span style="color: #00AA00;">*</span><span style="color: #3333ff;">:first-child</span><span style="color: #00AA00;">+</span>html <span style="color: #cc00cc;">#dois</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span> <span style="color: #00AA00;">&#125;</span> 
&nbsp;
<span style="color: #808080; font-style: italic;">/* IE 7 e browsers modernos */</span>
html <span style="color: #00AA00;">&gt;</span> body <span style="color: #cc00cc;">#tres</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span> <span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* Somente browsers modernos (sem IE 7) */</span>
html <span style="color: #00AA00;">&gt;</span> <span style="color: #808080; font-style: italic;">/**/</span>body <span style="color: #cc00cc;">#quatro</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span> <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Apesar de parecer ser uma solução simples, os Hacks tornam o CSS não-válidos, o que na minha opinião é um problema. Sem contar o fato de que estamos enganando o browser para ele renderizar algo que ele não foi feito para suporta, ou seja, processamento extra.</p>
<h3>CSS Condicional</h3>
<p>Como o próprio nome já diz, é o uso de uma folha de estilos condicional, ou seja, só é carregada quando for determinado browser que estiver fazendo a requisição, e o melhor, sem javascript!</p>
<p>Essa prática faz uso dos <a title="About Conditional Comments" href="http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx" target="_blank">conditional comments</a>, um comentário HTML com uma sintaxe especial que é interpretado única e exclusivamente pelo Internet Explorer. Os browsers modernos os enxergam apenas como comentários comuns, sem interpretá-los.</p>
<p>Por exemplo, se quisermos que um estilo seja carregado somente no IE 6, fazemos o seguinte:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">&lt;!--[if IE 6]&gt;</span>
<span style="color: #808080; font-style: italic;">	&lt;link rel=&quot;stylesheet&quot; href=&quot;main_ie.css&quot; mce_href=&quot;main_ie.css&quot; type=&quot;text/css&quot; media=&quot;all&quot; /&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;![endif]--&gt;</span></pre></div></div>

<p>A lado bom de se utilizar os CSS Condicionais é que a folha de estilo é válida, pois não usa nenhum hack que possa a ver a invalidá-la. Por outro lado, temos requisições extras que vão ser feitas de acordo com o browser.  Além disso, com está no &lt;head&gt;, a renderização da página fica aguardando ela estar totalmente carregada.</p>
<h3>Uma nova esperança!</h3>
<p>Eis que lendo um artigo do <a href="http://paulirish.com/" target="_blank">Paul Irish</a>, surgiu uma luz no horizonte, que resolve o problema das multiplas requisições de folhas de estilos e também da espera pelo carregamento.</p>
<p>A solução é fazer o uso de conditional comments não para alternar entre folhas de estilos a ser carregadas, e sim para aplicar ou não uma class no &lt;body&gt; do documento da seguinte maneira:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">  <span style="color: #808080; font-style: italic;">&lt;!--[if lt IE 7]&gt; &lt;body class=&quot;ie6&quot;&gt; &lt;![endif]--&gt;</span>
  <span style="color: #808080; font-style: italic;">&lt;!--[if IE 7]&gt;    &lt;body class=&quot;ie7&quot;&gt; &lt;![endif]--&gt;</span>
  <span style="color: #808080; font-style: italic;">&lt;!--[if IE 8]&gt;    &lt;body class=&quot;ie8&quot;&gt; &lt;![endif]--&gt;</span>
  <span style="color: #808080; font-style: italic;">&lt;!--[if !IE]&gt;--&gt;</span>                 <span style="color: #808080; font-style: italic;">&lt;!--&lt;![endif]--&gt;</span></pre></div></div>

<p>Isso  faz com que de acordo com o browser, seja adicionado a class (ie6, ie7 ou ie8) no corpo do documento, possibilitando corrigir as falhas de renderização direto na folha de estilo principal, facilitando até a manutenção do código.</p>
<p>Como exemplo, para adicionar alguma correção, fariamos o seguinte no CSS:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">    div<span style="color: #cc00cc;">#container</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">margin-left</span><span style="color: #00AA00;">:</span><span style="color: #933;">10px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
    //corrigindo o famoso bug da margem dupla
    body<span style="color: #6666ff;">.ie6</span> div<span style="color: #cc00cc;">#container</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">margin-left</span><span style="color: #00AA00;">:</span><span style="color: #933;">5px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>E é isso!</p>
<p>De agora em diante, essa é a solução que utilizarei!</p>
<p>Segue alguns links interessantes sobre o assunto:</p>
<ul>
<li><a title="CSS Validator" href="http://jigsaw.w3.org/css-validator/" target="_blank">http://jigsaw.w3.org/css-validator/</a></li>
<li><a href="http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/" target="_blank">http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/</a></li>
<li><a href="http://paulirish.com/2009/browser-specific-css-hacks/" target="_blank">http://paulirish.com/2009/browser-specific-css-hacks/</a></li>
<li><a href="http://www.quirksmode.org/css/condcom.html" target="_blank">http://www.quirksmode.org/css/condcom.html</a></li>
</ul>
<p><span id="more-77"></span><!--more--><!--more--></p>


<br/><br/><p><strong>Sem Posts Relacionados.</strong></p>]]></content:encoded>
			<wfw:commentRss>http://blog.hboaventura.com/css-hacks-ou-css-condicional-apartir-de-agora-nenhum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Tradução] 10 coisas legais que poderemos fazer quando o IE6 estiver morto. E algumas que não poderemos</title>
		<link>http://blog.hboaventura.com/traducao-10-coisas-legais-que-poderemos-fazer-quando-o-ie6-estiver-morto-e-algumas-que-nao-poderemos/</link>
		<comments>http://blog.hboaventura.com/traducao-10-coisas-legais-que-poderemos-fazer-quando-o-ie6-estiver-morto-e-algumas-que-nao-poderemos/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 17:02:41 +0000</pubDate>
		<dc:creator>kidh0</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE6]]></category>

		<guid isPermaLink="false">http://blog.hboaventura.com/?p=64</guid>
		<description><![CDATA[Segue a tradução do artigo 10 Cool Things We’ll Be Able To Do Once IE6 Is Dead; And A Few We Can’t do site Ajaxian. Vale a pena conferir o que estamos perdendo quando desenvolvemos pensando em IE6. James Edwards tem uma pequena lista que ousa sonhar com uma vida pós IE6. Ele nos deu [...]

<br/><br/>
<strong>Sem Posts Relacionados.</strong>]]></description>
			<content:encoded><![CDATA[<p id="post-6610"><img class="alignleft size-full wp-image-67" title="wanted-dead" src="http://blog.hboaventura.com/wp-content/uploads/2009/04/wanted-dead.jpg" alt="wanted-dead" width="200" height="200" />Segue a tradução do artigo <em>10 <a href="http://ajaxian.com/archives/10-cool-things-we%E2%80%99ll-be-able-to-do-once-ie6-is-dead-and-a-few-we-cant" target="_blank">Cool Things We’ll Be Able To Do Once IE6 Is Dead; And A Few We Can’t</a> </em>do site <a href="http://ajaxian.com/" target="_blank">Ajaxian</a>. Vale a pena conferir o que estamos perdendo quando desenvolvemos pensando em IE6.</p>
<p><a href="http://www.brothercake.com" target="_blank">James Edwards</a> tem uma pequena lista que ousa sonhar com uma vida pós IE6. Ele nos deu uma lista de 10 coisas que que poderemos fazer quando este dia chegar:</p>
<h3>Usar child-selectors</h3>
<p>Não vamos mais precisar definir intermináveis regras para remover as regras dos <a href="http://www.w3.org/TR/CSS21/selector.html#child-selectors" target="_blank">child-selectors</a>. Com os eles no CSS2  poderemos especificar regras CSS que sejam aplicadas apenas no elemento filho, não nos descendentes em geral.</p>
<h3>Usar PNGs de 24-bit</h3>
<p>Não vamos mais precisar adaptar imagens em diferentes backgrounds coloridos para que tenhamos um anti-aliasing descente. Com o suporte ao canal alpha do PNG, poderemos usar imagens com sombras, glows e outros efeitos de opacidade, com segurança que todos os navegadores gráficos poderão vê-los.</p>
<h3>Usar attribute selectors</h3>
<p>Não vamos mais precisar definir classes de tipagem para os inputs &#8211; coisas como &lt;input class=&#8221;text&#8221; &#8230; /&gt; &#8211; quando podemos endereça-las com os <a href="http://www.w3.org/TR/CSS21/selector.html#attribute-selectors" target="_blank">attribute seletors</a> do CSS2, como input[type="text"]. Podemos usar até mesmo o <a href="http://www.w3.org/TR/css3-selectors/#attribute-substrings" target="_blank">attribute selector  substring-matching</a> do CSS3 (suportado por todos os navegadores modernos, inclusive o IE7), que pode ser muito útil quando definimos seletores que se aplicam a um grande numero de atributos, diminuindo significantemente o número de código que teremos que fazer.</p>
<h3>Usar um grande número de propriedades display</h3>
<p>Poderemos usar coisas como display:inline-block ao invés de float:left. Isso significa não ter mais os intermináveis float dentro de float dentro de float, ou ainda o duvidável uso do overflow:hidden, só para os blocos ficarem posicionados corretamente. (Embora eu deva dizer que teremos que esperar até o Firefox 3 para termos isso também!).</p>
<h3>Usar min-width e max-width</h3>
<p>Apesar da implementação do propriedade width do IE6 ser muito parecida com a correta implementação do <a href="http://www.w3.org/TR/CSS21/visudet.html#min-max-widths" target="_blank">min-width</a>, não é a mesma coisa, e não serve para o mesmo propósito; e isso não faz nada para o max-width. Com o fim do IE6 virá uma nova renascença dos designs em block, com a grande flexibilidade que os designers vem reclamando a anos.</p>
<h3>Jogar fora 90% dos CSS hacks (e 90% da razão pela qual precisamos deles!)</h3>
<p>No nos preocuparemos com repetições bizarras de caracteres, misteriosos blocos invisíves ou frustantes margens duplicadas; com o fim do IE6 acabará a necessidade de diagnosticar e curar tantos bugs de reendenização</p>
<h3>Adicionar abreviações que todos poderão ver</h3>
<p>Apesar de pessoalmente só usar o elemento <a href="http://reference.sitepoint.com/html/abbr" target="_blank">&lt;abbr&gt;</a> e nunca usar <a href="http://reference.sitepoint.com/html/acronym" target="_blank">&lt;acronym&gt;</a>, ainda sim me aborreço ao lembrar que os usuários do IE6 não verão a expansão, e me aborrece mais ainda as ocasiões que eu preciso usar scripts para eles (e não posso).</p>
<h3>Confiar novamente no z-index</h3>
<p>Não vamos mais precisar coçar nossas e refletir sobre o porque a camada X estão acima da camada Y quando deveria estar abaixo, imaginando o que podemos ter feito de errado, só pra lembrar que &#8211; duh &#8211; não fizemos nada de errado, é apenas o<a href="http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html" target="_blank"> contexto de empilhamento do IE6</a>.</p>
<h3>Poupar tempo e dinheiro</h3>
<p>Gastar um tempo consideravelmente menor hackeando significa menos tempo de desenvolvimento e menos custos.</p>
<h3>Aproveitar novamente!</h3>
<p>Escrever CSS vai se tornar prazeiroso como costumava ser. Isso é, até nossas expectativas aumentarem novamente e o IE7 se tornar nosso monstro</p>
<p>Mas ainda teremos que esperar pelos contadores CSS, box-sizing, e um JavaScript mais decente (e muito muito mais, como Canvar e suporte a SVG).</p>
<p>Tomara que o update automático para o IE8 coloque tudo nos eixos</p>


<br/><br/><p><strong>Sem Posts Relacionados.</strong></p>]]></content:encoded>
			<wfw:commentRss>http://blog.hboaventura.com/traducao-10-coisas-legais-que-poderemos-fazer-quando-o-ie6-estiver-morto-e-algumas-que-nao-poderemos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
