<?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>Klaus Paiva &#187; Firefox</title>
	<atom:link href="http://blog.klaus.pro.br/tags/firefox/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.klaus.pro.br</link>
	<description>Idéias e desventuras de Klaus Paiva</description>
	<lastBuildDate>Mon, 12 Jul 2010 20:26:46 +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>FireQuery &#8211; Firebug++ para a jQuery</title>
		<link>http://blog.klaus.pro.br/2010/ler/firequery-firebug-para-a-jquery/index.html</link>
		<comments>http://blog.klaus.pro.br/2010/ler/firequery-firebug-para-a-jquery/index.html#comments</comments>
		<pubDate>Wed, 14 Apr 2010 16:03:56 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[FireQuery]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=400</guid>
		<description><![CDATA[Dica rápida pra quem usa a biblioteca jQuery no seu dia-a-dia. A extensão FireQuery se acopla ao já famoso Firebug e adiciona uma série de novos recursos, todos pensados em facilitar a vida de quem usa jQuery. Entre os vários recursos vale destacar a listagem dos eventos que estão associados a um elemento na página. [...]]]></description>
			<content:encoded><![CDATA[<p>Dica rápida pra quem usa a biblioteca jQuery no seu dia-a-dia.</p>
<p>A extensão <a href="http://firequery.binaryage.com/">FireQuery</a> se acopla ao já famoso <a href="http://getfirebug.com/">Firebug</a> e adiciona uma série de novos recursos, todos pensados em facilitar a vida de quem usa jQuery.</p>
<p>Entre os <a href="http://firequery.binaryage.com/#features">vários recursos</a> vale destacar a listagem dos eventos que estão associados a um elemento na página. Isso é extremamente útil quando você precisa alterar códigos feitos por outras pessoas, ou mesmo um código seu que você já nem lembra mais como ele funciona. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Dica enviada pelo meu colega de trabalho Paulo Lomanto, que é totalmente <strong>Web 1.0</strong> e não tem Twitter, nem blog, nem nada pra eu <em>linkar</em> aqui. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2010/ler/firequery-firebug-para-a-jquery/index.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fazendo uma faxina nos seus arquivos CSS</title>
		<link>http://blog.klaus.pro.br/2010/ler/fazendo-uma-faxina-nos-seus-arquivos-css/index.html</link>
		<comments>http://blog.klaus.pro.br/2010/ler/fazendo-uma-faxina-nos-seus-arquivos-css/index.html#comments</comments>
		<pubDate>Wed, 03 Feb 2010 12:36:50 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=390</guid>
		<description><![CDATA[Todo mundo que já mexeu em um arquivo CSS &#8220;legado&#8221; vai saber do que estou falando: adicionar novas regras a um arquivo CSS é fácil, difícil é remover as regras que não são mais usadas. A dúvida é sempre a mesma: &#8220;será que não tem nenhuma &#8216;tela&#8217; que usa essas regras?&#8221;. E como a resposta [...]]]></description>
			<content:encoded><![CDATA[<p>Todo mundo que já mexeu em um arquivo CSS &#8220;legado&#8221; vai saber do que estou falando: adicionar novas regras a um arquivo CSS é fácil, difícil é remover as regras que não são mais usadas.</p>
<p>A dúvida é sempre a mesma: &#8220;será que não tem nenhuma &#8216;tela&#8217; que usa essas regras?&#8221;. E como a resposta nem sempre é fácil de se descobrir, deixo aqui uma dica de ferramenta que pode ajudar nessa tarefa.</p>
<p>Trata-se da extensão de <a href="http://www.getfirefox.com/">Firefox</a> de nome &#8220;<a href="https://addons.mozilla.org/en-US/firefox/addon/10704"><strong>CSS Usage</strong></a>&#8220;. O que ela faz, conforme o nome já sugere, é identificar quais regras na folha de estilo de um site que estão em uso e quais não estão. Com base nessas informações você pode reduzir seu arquivo CSS sem medo!</p>
<p>Após instalar a extensão, basta abrir o <a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a> e você verá uma aba &#8220;<strong>CSS Usage</strong>&#8220;. Entrando nela você pode iniciar o processo e verificar a utilização dos seletores. Depois disso é só fazer a limpeza, conforme você achar melhor.</p>
<p>Para que o efeito da extensão seja o esperado, é importante que você navegue no máximo de páginas possíveis de seu site para garantir que todas as &#8220;telas&#8221; serão testadas de acordo com as regras na sua folha de estilos. E se você acha que dá muito trabalho ter de navegar em todas as páginas sempre que quiser limpar seu CSS, acho que é hora de você conhecer o <a href="http://www.seuenium.com.br/">Selenium</a>!</p>
<p>Aqui tem uma <a href="http://blog.klaus.pro.br/wp-content/uploads/2010/02/css-usage.png">figura de exemplo</a> com os resultados da extensão obtidos após uma navegação no <a href="http://www.taperas.com/">Taperás</a>.</p>
<p>Via <a href="http://twitter.com/smashingmag/status/8580942768">Smashing Magazine no Twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2010/ler/fazendo-uma-faxina-nos-seus-arquivos-css/index.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Web Workers &#8211; Threads em Javascript</title>
		<link>http://blog.klaus.pro.br/2009/ler/web-workers-threads-em-javascript/index.html</link>
		<comments>http://blog.klaus.pro.br/2009/ler/web-workers-threads-em-javascript/index.html#comments</comments>
		<pubDate>Wed, 22 Jul 2009 22:10:48 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Web Workers]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=322</guid>
		<description><![CDATA[No final do mês passado eu coloquei aqui no blog uma nota sobre o lançamento do Firefox 3.5 e as novidades trazidas por essa versão. Fiz uma leitura mais aprofundada nos textos e vi um recurso bastante interessante chamado Web Workers. Segundo a descrição do MDC, os Web Workers permitem a execução de códigos de [...]]]></description>
			<content:encoded><![CDATA[<p>No final do mês passado eu coloquei aqui no blog uma <a href="http://blog.klaus.pro.br/2009/ler/firefox-35/index.html">nota sobre o lançamento do Firefox 3.5</a> e as novidades trazidas por essa versão.</p>
<p>Fiz uma leitura mais aprofundada nos textos e vi um recurso bastante interessante chamado <a href="https://developer.mozilla.org/En/Using_web_workers">Web Workers</a>. Segundo a descrição do <a href="https://developer.mozilla.org/">MDC</a>, os Web Workers permitem a execução de códigos de forma <em>multi-thread</em> dentro de aplicações <em>web</em> e sites.</p>
<p>Quem escreve código Javascript hoje em dia sabe que não é raro o navegador &#8220;congelar&#8221; durante um código que exige um pouco mais de processamento. Existem algumas formas de evitar esse &#8220;congelamento&#8221; sim&#8230; mas certamente os Web Workers elevam a resolução deste problema a outro nível de soluções e possibilidades. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Com os Web Workers você pode iniciar um código que será executado em paralelo ao código Javascript da sua página. Esse código executado pelo &#8220;worker&#8221; trabalha num ambiente diferente, sem acesso à página pai e, principalmente, sem acesso ao DOM. A única forma de comunicação entre a página pai e um processo &#8220;worker&#8221; se dá através de mensagens.</p>
<p>Como eu estava interessado em verificar se esses Web Workers realmente trabalham em paralelo <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , fiz uma página que faz esse teste. Nela, há duas versões de um mesmo código que calcula a <a href="http://pt.wikipedia.org/wiki/N%C3%BAmero_de_Fibonacci">sequência (ou número) de Fibonacci</a>. Além disso, na página há uma <a href="http://docs.jquery.com/Effects">animação com jQuery</a> rodando, o que vai permitir perceber claramente se o navegador vai ou não &#8220;congelar&#8221;.</p>
<p><strong><a href="http://www.klaus.pro.br/projects/web-workers/fibonacci.html">Veja aqui o teste com Web Workers</a></strong>. (para o Firefox só funciona na versão 3.5)</p>
<p>Como você pode ver pelo teste acima, realmente o código roda em <em>background</em>, sem afetar a página renderizada.</p>
<p>Vale ressaltar que nos testes eu exibo também o tempo em milissegundos que a operação levou. Fazendo os testes aqui no meu computador, a versão com Web Workers leva em média 1600 ms, enquanto a versão &#8220;normal&#8221; leva em média 800 ms. O dobro de tempo mas é algo a se ponderar se lembrarmos que a versão &#8220;normal&#8221; trava totalmente o navegador enquanto o cálculo é feito. (<del>interessante&#8230; rodando o teste local, a versão com &#8220;worker&#8221; executa bem mais rápido do que a versão online aqui no blog, talvez pelo tempo de download do &#8220;worker.js&#8221;?</del>)</p>
<p><strong>Update</strong>: na versão do código de testes que eu fiz ontem, ao clicar no botão para calcular o número de Fibonacci, o código do &#8220;worker.js&#8221; era baixado antes do cálculo em si ser executado. Isso causava uma grande diferença entre o teste rodando local e o teste rodando <em>online</em> (óbvio hehe). Fiz uma modificação hoje para deixar o &#8220;worker.js&#8221; já carregado (assim como os demais arquivos &#8220;.js&#8221;).</p>
<p>E como comentário final: tentei deixar os códigos tão similares quanto possível para não afetar significativamente os resultados em favor de uma ou outra forma de cálculo. Sugestões e/ou correções são bem-vindas. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<dl class="references">
<dt>Referências</dt>
<dd>developer.mozilla.org: <a href="https://developer.mozilla.org/En/Using_web_workers">Using web workers</a></dd>
<dd>hacks.mozilla.org: <a href="http://hacks.mozilla.org/2009/07/working-smarter-not-harder/">using web workers: working smarter, not harder</a></dd>
<dd>ejohn.org: <a href="http://ejohn.org/blog/web-workers/">Computing with JavaScript Web Workers</a></dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2009/ler/web-workers-threads-em-javascript/index.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Firefox 3.5</title>
		<link>http://blog.klaus.pro.br/2009/ler/firefox-35/index.html</link>
		<comments>http://blog.klaus.pro.br/2009/ler/firefox-35/index.html#comments</comments>
		<pubDate>Tue, 30 Jun 2009 16:35:08 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[Vídeos]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=313</guid>
		<description><![CDATA[Hoje saiu a versão 3.5 do Firefox. A lista de novidades é bastante extensa e empolgante. Dentre as novidades está o suporte para a tag &#60;video&#62;, para exibição nativa de vídeos num documento HTML. Se você quiser ver uma versão, digamos, alto nível das novidades, acesse esta página. Se você está interessado em ver as [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje saiu a <a href="http://www.getfirefox.com/">versão 3.5 do Firefox</a>. A lista de novidades é bastante extensa e empolgante. Dentre as novidades está o suporte para a <a href="http://www.mozilla.com/en-US/firefox/video/">tag &lt;video&gt;</a>, para exibição nativa de vídeos num documento HTML. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Se você quiser ver uma versão, digamos, alto nível das novidades, <a href="http://en-us.www.mozilla.com/en-US/firefox/3.5/releasenotes/#whatsnew2">acesse esta página</a>.</p>
<p>Se você está interessado em ver as novidades da versão 3.5 para nós, desenvolvedores, <a href="https://developer.mozilla.org/En/Firefox_3.5_for_developers">veja esta página</a>.</p>
<p>Fica a dica! <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2009/ler/firefox-35/index.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>O progresso dos novos navegadores</title>
		<link>http://blog.klaus.pro.br/2009/ler/o-progresso-dos-novos-navegadores/index.html</link>
		<comments>http://blog.klaus.pro.br/2009/ler/o-progresso-dos-novos-navegadores/index.html#comments</comments>
		<pubDate>Mon, 02 Mar 2009 22:54:58 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Desempenho]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Vídeos]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=219</guid>
		<description><![CDATA[Este texto é baseado (uma nota mental pública e estruturada, digamos) na apresentação &#8220;Performance Improvements in Browsers&#8221; feita por &#8220;John Resig&#8220;, que é ninguém menos que o pai da famosa biblioteca jQuery. Abaixo está o vídeo com a apresentação feita (aproximadamente 1h) e na sequência algumas notas e comentários sobre os temas apresentados. Abas separadas [...]]]></description>
			<content:encoded><![CDATA[<p>Este texto é baseado (uma nota mental pública e estruturada, digamos) na apresentação &#8220;<a href="http://ejohn.org/blog/talk-performance-improvements-in-browsers/"><em>Performance Improvements in Browsers</em></a>&#8221; feita por &#8220;<a href="http://ejohn.org/">John Resig</a>&#8220;, que é ninguém menos que o pai da famosa biblioteca <a href="http://jquery.com/">jQuery</a>.</p>
<p>Abaixo está o <a href="http://www.youtube.com/watch?v=13-3VMzfU3Y">vídeo com a apresentação</a> feita (aproximadamente 1h) e na sequência algumas <strong>notas e comentários sobre os temas apresentados</strong>.</p>
<div class="videos"><object width="425" height="344" data="http://www.youtube.com/v/13-3VMzfU3Y&amp;hl=pt-br&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/13-3VMzfU3Y&amp;hl=pt-br&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></div>
<h3 class="subtitles">Abas separadas por processos</h3>
<p>Este é um fato que certamente você deve conhecer. Você está lá navegando tranquilamente com uma <strong>dezena (ou mais =) de abas abertas</strong>&#8230; Daí que você resolve acessar um site com um Javascript mal escrito, com uma animação em que o <a href="http://www.adobe.com/products/flashplayer/">Flash Player</a> se revolta e lá foi, o navegador inteiro congela e não resta outra opção senão matar o processo. Claro que a maioria dos navegadores traz opções para <strong>restaurar a seção anterior</strong> mas não deixa de ser bastante incômodo.</p>
<p>A separação das abas por processos permitiria <strong>matar (encerrar) apenas a aba problemática</strong>, mantendo as outras abas isoladas. Isso por si só já seria uma grande vantagem da separação por abas mas ainda há uma segunda vantagem também bastante interessante! =)</p>
<p>Com a separação em diversos processos o sistema operacional pode <strong>gerenciar melhor o processamento</strong>, alocando mais recursos para as partes onde é realmente necessário, sem congelar as outras partes do navegador.</p>
<p>Vale notar que essa divisão em processos distintos causa um aumento do consumo do memória sim mas, como a quantidade de memória disponível nos PCs atuais (mesmo para os &#8220;PCs de prateleira&#8221;) está deixando de ser um gargalo para o desempenho dos computadores, é de se esperar que os programas passem a fazer alocações maiores de memória. Mais ou menos como o princípio da <strong>lei da oferta e da demanda</strong>.</p>
<h3 class="subtitles">Linearização das instruções de funções</h3>
<p>O termo em inglês acho que permite um entendimento melhor: &#8220;<strong>&#8216;<a href="http://en.wikipedia.org/wiki/Inline_function">function inlining</a></strong>&#8220;. Essa é uma característica que, por exemplo, C++ possui. Usando essa propriedade o compilador pode trocar a chamada de uma função pelo corpo da função, fazendo com que a execução das instruções ocorra <strong>sem o <em>overhead</em> de chamar uma função</strong>.</p>
<p>Além disso, pelo código exibido nos <em>slides</em> parece que, diferentemente do C++, você não precisa dar uma dica para o compilador na hora de escrever a função indicando que a função é candidata ao &#8220;<em>inlining</em>&#8220;.</p>
<h3 class="subtitles">Rede</h3>
<p>Aqui vale destacar o <strong>aumento do número de <em>downloads</em> simultâneos para um mesmo domínio</strong>. Com o IE 7 ainda temos o limite de dois downloads mas, felizmente o IE 8 (beta) já tratá um <strong>limite três vezes maior</strong>, de <a href="http://www.microsoft.com/windows/internet-explorer/beta/readiness/developers-new.aspx#ajax">seis <em>downloads</em> simultâneos para o mesmo domínio</a>. A última versão dos demais navegadores já possui um valor de seis ou sete <em>downloads</em>.</p>
<p>Outro recurso bem legal, e este é uma boa ideia da Microsoft, é o <strong>atributo &#8220;defer&#8221; para a <em>tag</em> &lt;script&gt;</strong>. Esse atributo indica para o navegador que ele pode continuar a <strong>renderizar a página sem esperar o arquivo Javascript</strong> referenciado carregar. O atributo já funcionava no IE e vai funcionar nas novas versões do Firefox e Opera.</p>
<h3 class="subtitles">window.postMessage</h3>
<p>O método <strong>window.postMessage</strong> me chamou a atenção. Com ele será possível a <strong>comunicação entre páginas de domínios distintos</strong> de forma bem simples. O princípio é o seguinte: a página remetente da mensagem irá tentar enviar a mensagem para, por exemplo, um <em>iframe</em> destinatário. Este <em>iframe</em> irá verificar se o remetente é alguém que ele conhece para então aceitar a mensagem e executar alguma ação.</p>
<p>A página que receberá as mensagens pode &#8220;ouvir&#8221; os <strong>eventos de mensagens</strong> usando o tradicional método <a href="https://developer.mozilla.org/En/DOM/Element.addEventListener">addEventListener</a>. Verificando a propriedade <em>origin</em>, a página receptora pode <strong>descobrir pelo domínio se a mensagem está vindo de um destinatário conhecido ou não</strong>.</p>
<h3 class="subtitles">Ajax entre domínios diferentes</h3>
<p>Aquele sonho de fazer requisições Ajax entre os N domínios da sua aplicação está prestes a se realizar. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Adicionando um cabeçalho (<em>header</em>) na resposta da requisição Ajax é possível especificar uma origem (além do próprio domínio) de onde aquela requisição pode ser atendida com segurança. O nome deste cabeçalho é &#8220;<strong>Access-Control-Allow-Origin</strong>&#8221; e está <a href="https://developer.mozilla.org/En/HTTP_Access_Control">melhor descrito nesta página</a>.</p>
<h3 class="subtitles">document.querySelectorAll</h3>
<p>Se você já usou a jQuery sabe como <strong>é prático encontrar os elementos da página usando a sintaxe de CSS</strong>. Melhor ainda se encontrar esses elementos usando a sintaxe de CSS seja possível de ser <strong>feito usando um método nativo do navegador</strong>. É isso que o método <a href="https://developer.mozilla.org/En/DOM/Document.querySelectorAll">document.querySelectorAll</a> permitirá. O melhor de tudo é que as próximas versões do IE, Firefox, Opera e Safari já trarão este método disponível.</p>
<h3 class="subtitles">Visual e CSS</h3>
<p>Adoradas por 10 em cada 10 <em>webdesigners</em>, as <strong>bordas redondas vieram pra ficar</strong>. =) Apesar de os navegadores trazerem implementações com nomes diferentes, todas as implementações funcionam bem. Ou seja, juntando essas propriedades: -moz-border-radius, -webkit-border-radius, -khtml-border-radius e <a href="http://www.w3.org/TR/css3-background/#the-border-radius">border-radius</a> as bordas redondas saem com facilidade.</p>
<p><strong>Sombras também estarão disponíveis</strong>. Nesta página há vários <a href="http://maettig.com/code/css/text-shadow.html">exemplos de uso da propriedade text-shadow</a>.</p>
<p>Outro recurso que certamente vai ser muito usado (e provavelmente muito mal usado também <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) é a possibilidade de se usar <strong><a href="http://ejohn.org/apps/fontface/blok.html">fontes personalizadas na página</a></strong>. Por fontes personalizadas entenda fontes que não estão instaladas na sua máquina. Coisa que já era possível de se fazer no Flash, agora também com CSS.</p>
<p>Além disso, há uma série de <a href="http://www.the-art-of-web.com/css/css-animation/">animações</a> que estarão disponíveis, por enquanto, para Firefox e Safari.</p>
<h3 class="subtitles">Desenho</h3>
<p>O objeto Canvas permite a renderização de elementos numa superfície 2D usando retas, curvas, arcos e/ou círculos. No <a href="https://developer.mozilla.org/">MDC</a> tem um <a href="https://developer.mozilla.org/En/Canvas_tutorial">tutorial bem bacana sobre Canvas</a>. Até me arrisquei a fazer uma &#8220;arte&#8221;: =)</p>
<pre class="javascript"><code><span class="co1">// &lt;canvas id="draw-area" width="150" height="150"&gt;&lt;/canvas&gt; no HTML</span>
<span class="kw2">var</span> canvas = document.<span class="me1">getElementById</span><span class="br0">(</span> <span class="st0">"draw-area"</span> <span class="br0">)</span>;
<span class="kw1">if</span><span class="br0">(</span> !canvas.<span class="me1">getContext</span> <span class="br0">)</span>
<span class="br0">{</span>
  <span class="kw1">return</span>;
<span class="br0">}</span>
<span class="kw2">var</span> context = canvas.<span class="me1">getContext</span><span class="br0">(</span> <span class="st0">"2d"</span> <span class="br0">)</span>;

context.<span class="me1">beginPath</span><span class="br0">(</span><span class="br0">)</span>;
<span class="kw2">var</span> side = <span class="nu0">150</span>;
<span class="kw2">var</span> offset = <span class="nu0">-4</span>;
<span class="kw2">var</span> i = <span class="nu0">0</span>;
<span class="kw1">while</span><span class="br0">(</span> <span class="kw2">true</span> <span class="br0">)</span>
<span class="br0">{</span>
  <span class="kw1">if</span><span class="br0">(</span> i % <span class="nu0">4</span> == <span class="nu0">0</span> <span class="br0">)</span>
  <span class="br0">{</span>
    <span class="kw2">var</span> x = offset + <span class="nu0">4</span>;
    context.<span class="me1">lineTo</span><span class="br0">(</span> x, offset <span class="br0">)</span>;
    offset = x;
    <span class="kw1">if</span><span class="br0">(</span> offset + <span class="nu0">4</span> &gt; <span class="nu0">78</span> <span class="br0">)</span> <span class="co1">// hard-coded mesmo ;P</span>
    <span class="br0">{</span>
      <span class="kw1">break</span>;
    <span class="br0">}</span>
  <span class="br0">}</span>
  <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">(</span> i % <span class="nu0">4</span> == <span class="nu0">1</span> <span class="br0">)</span>
  <span class="br0">{</span>
    context.<span class="me1">lineTo</span><span class="br0">(</span> offset, side - offset <span class="br0">)</span>;
  <span class="br0">}</span>
  <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">(</span> i % <span class="nu0">4</span> == <span class="nu0">2</span> <span class="br0">)</span>
  <span class="br0">{</span>
    context.<span class="me1">lineTo</span><span class="br0">(</span> side - offset, side - offset <span class="br0">)</span>;
  <span class="br0">}</span>
  <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">(</span> i % <span class="nu0">4</span> == <span class="nu0">3</span> <span class="br0">)</span>
  <span class="br0">{</span>
    context.<span class="me1">lineTo</span><span class="br0">(</span> side - offset, offset <span class="br0">)</span>;
  <span class="br0">}</span>
  i++;
<span class="br0">}</span>
<span class="co1">//context.closePath();</span>
context.<span class="me1">stroke</span><span class="br0">(</span><span class="br0">)</span>;</code></pre>
<p>Outro detalhe importante é que o Canvas permitirá também a <strong>inserção de vídeos dentro dele</strong>.</p>
<h3 class="subtitles">JSON nativo</h3>
<p>Atualmente, ao receber uma <em>string</em> em <a href="https://developer.mozilla.org/En/JSON">JSON</a> você precisa usar um <a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Functions/Eval#section_6">eval</a> para recuperar o objeto original. <strong>O eval é conhecidamente lento</strong>, até pelo fato de ser um método genérico, mas era a melhor saída para se ter acesso às informações contidas na <em>string</em> JSON mas, isso vai mudar!</p>
<p>Agora teremos métodos nativos para codificação e decodificação no formato JSON. A única dúvida que me restou é sobre o nome dos métodos. Nos slides os métodos se chamam <strong>encode e decode</strong>, já na <a href="https://developer.mozilla.org/En/Using_JSON_in_Firefox">página do MDC</a> e no <a href="http://wiki.ecmascript.org/doku.php?id=es3.1:json_support">wiki do ECMAScript</a> os métodos se chamam <strong>parse e stringify</strong>, respectivamente.</p>
<h3 class="subtitles">E por fim&#8230;</h3>
<p>&#8230; fico na torcida pra que as novas versões desses navegadores tenham uma rápida adoção por parte dos usuários. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2009/ler/o-progresso-dos-novos-navegadores/index.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Firefox, Chrome, Internet Explorer, Opera&#8230; Ótimo!</title>
		<link>http://blog.klaus.pro.br/2008/ler/firefox-chrome-internet-explorer-opera-otimo/index.html</link>
		<comments>http://blog.klaus.pro.br/2008/ler/firefox-chrome-internet-explorer-opera-otimo/index.html#comments</comments>
		<pubDate>Wed, 10 Sep 2008 13:56:08 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[Opera]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=118</guid>
		<description><![CDATA[Claro, depende do ponto de vista. =) Mas em termos gerais eu acredito que essa nova edição da &#8220;guerra dos browsers&#8221; é muito bem-vinda e benéfica. Como interfaces do sistema operacional do futuro, penso que quanto mais os navegadores evoluírem, melhor. E nada melhor que concorrência para estimular o desenvolvimento e a inovação desse tipo [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.klaus.pro.br/wp-content/uploads/2008/09/browsers-firefox-ie-opera-chrome.jpg" alt="Montagem com os logos do Firefox, Internet Explorer, Opera e Chrome - Todos os direitos reservados aos seus devidos autores" /></p>
<p>Claro, depende do ponto de vista. =) Mas em termos gerais eu acredito que essa nova edição da &#8220;<a href="http://en.wikipedia.org/wiki/Browser_wars">guerra dos <em>browsers</em></a>&#8221; é muito bem-vinda e benéfica.</p>
<p>Como interfaces do sistema operacional do futuro, penso que quanto mais os navegadores evoluírem, melhor. E nada melhor que concorrência para estimular o desenvolvimento e a inovação desse tipo de aplicativo.</p>
<p>Com o lançamento do <a href="http://www.google.com/chrome">Google Chrome</a>, uma tema bastante interessante (ao menos pra mim) passou a ser mais discutido: <a href="http://ejohn.org/blog/javascript-performance-rundown/">performance de Javascript</a>. Quem desenvolve interfaces <em>web </em>hoje sabe que não raro são as vezes em que você acaba com o navegador bastante lento quando faz operações com os elementos (DOM) existentes na tela, isso pra citar apenas um dos casos.</p>
<p>E o que mais me deixa positivo sobre esse fato é: até a Microsoft está preocupada em melhorar o <a href="http://www.microsoft.com/windows/internet-explorer/beta/default.aspx">Internet Explorer 8</a> para não ficar em desvantagem nessa guerra dos <em>browsers</em>.</p>
<p>Com <em>browsers</em> melhores, mais rápidos e mais ricos em termos de recursos, haverá toda uma nova gama de possibilidades para desenvolvimento <em>web</em>. E vale dizer que isso não é bom só para nós, desenvolvedores, mas também para os usuários de Internet como um todo, que terão aplicações mais ricas, mais rápidas e mais úteis, tudo &#8220;independente&#8221; da plataforma do sistema operacional.</p>
<p>E enquanto a guerra dos <em>browsers</em> se mantiver dentro dos moldes atuais, pode ter certeza, só temos a ganhar. =)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2008/ler/firefox-chrome-internet-explorer-opera-otimo/index.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Estatísticas Taperás &#8211; Agosto de 2008</title>
		<link>http://blog.klaus.pro.br/2008/ler/estatisticas-taperas-agosto-de-2008/index.html</link>
		<comments>http://blog.klaus.pro.br/2008/ler/estatisticas-taperas-agosto-de-2008/index.html#comments</comments>
		<pubDate>Mon, 01 Sep 2008 20:47:05 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Estatísticas]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[Taperás]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=113</guid>
		<description><![CDATA[Como alguns de vocês aqui já sabem, o Taperás é um &#8220;filho meu&#8221; (mas não só meu) na web. E diferente deste blog, as estatísticas de visitação do Taperás dão uma idéia legal sobre os usuários de Internet em termos de navegadores, resolução de tela, etc&#8230; Pensando nisso eu resolvi fazer uma breve compilação dessas [...]]]></description>
			<content:encoded><![CDATA[<p>Como alguns de vocês aqui já sabem, o <a href="http://www.taperas.com/">Taperás</a> é um &#8220;filho meu&#8221; (mas não <strong>só</strong> meu) na <em>web</em>. E diferente deste blog, as estatísticas de visitação do Taperás dão uma idéia legal sobre os usuários de Internet em termos de navegadores, resolução de tela, etc&#8230;</p>
<p>Pensando nisso eu resolvi fazer uma breve compilação dessas informações disponíveis no <a href="http://www.google.com/analytics/">Google Analytics</a> e publicar aqui. Minha idéia com isso é acompanhar essas informações e deixar aqui disponível para quem mais possa se interessar.</p>
<p>Bom, chega de blábláblá e vamos ao que interessa. Primeiro a estatísticas sobre <strong>navegadores</strong>: (você pode clicar nas imagens para visualizá-las em tamanho real)</p>
<dl class="images">
<dt><a class="thickbox" title="Estatísticas de navegadores - Taperás - Agosto de 2008" href="http://blog.i.klaus.pro.br/taperas-stats/200808/browsers.jpg"><img src="http://blog.i.klaus.pro.br/taperas-stats/200808/browsers-thumb.jpg" alt="" /></a></dt>
<dd>Estatísticas de navegadores &#8211; Taperás &#8211; Agosto de 2008</dd>
</dl>
<p>Como já era de se esperar, o Internet Explorer (IE) domina mais de 80% dos acessos, seguido pelo <a href="http://www.getfirefox.com/">Firefox</a> com quase 20%. E se tratando do IE é bom saber as versões usadas nos acessos.</p>
<dl class="images">
<dt><a class="thickbox" title="Estatísticas de navegadores, versões do IE - Taperás - Agosto de 2008" href="http://blog.i.klaus.pro.br/taperas-stats/200808/browsers-ie.jpg"><img src="http://blog.i.klaus.pro.br/taperas-stats/200808/browsers-ie-thumb.jpg" alt="" /></a></dt>
<dd>Estatísticas de navegadores, versões do IE &#8211; Taperás &#8211; Agosto de 2008</dd>
</dl>
<p>Infelizmente, o IE 7 responde apenas por metade dos acessos e o, horrível, IE 6 é responsável pela outra metade.</p>
<p>Outro parâmetro interessante é a <strong>resolução de tela</strong>:</p>
<dl class="images">
<dt><a class="thickbox" title="Estatísticas de resolução de tela - Taperás - Agosto de 2008" href="http://blog.i.klaus.pro.br/taperas-stats/200808/screen-resolutions.jpg"><img src="http://blog.i.klaus.pro.br/taperas-stats/200808/screen-resolutions-thumb.jpg" alt="" /></a></dt>
<dd>Estatísticas de resolução de tela &#8211; Taperás &#8211; Agosto de 2008</dd>
</dl>
<p>Mesmo o Taperás sendo um site acessado por um público <em>non-geek</em>, a resolução 1024&#215;768 é responsável por quase 60% dos acessos. E enquanto eu escrevia este texto fiquei pensando, qual será a resolução que o iPhone reporta? =)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2008/ler/estatisticas-taperas-agosto-de-2008/index.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Personalizando o visual do seu Firefox</title>
		<link>http://blog.klaus.pro.br/2008/ler/personalizando-o-visual-do-seu-firefox/index.html</link>
		<comments>http://blog.klaus.pro.br/2008/ler/personalizando-o-visual-do-seu-firefox/index.html#comments</comments>
		<pubDate>Wed, 30 Apr 2008 22:42:19 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=68</guid>
		<description><![CDATA[Pra quem, da mesma forma que eu, passa boa parte do dia olhando para o Firefox, é bem legal trocar o visual do navegador de vez em quando. Eu estava lendo o doggdot.us (acho&#8230;) hoje de manhã e vi uma extensão bacana: Personas for Firefox, ela permite que você altere o visual do Firefox com [...]]]></description>
			<content:encoded><![CDATA[<p>Pra quem, da mesma forma que eu, passa boa parte do dia olhando para o <a href="http://www.getfirefox.com/">Firefox</a>, é bem legal trocar o visual do navegador de vez em quando.</p>
<p>Eu estava lendo o <a href="http://www.doggdot.us/">doggdot.us</a> (acho&#8230;) hoje de manhã e vi uma extensão bacana: <a href="http://labs.mozilla.com/2007/12/personas-for-firefox/"><strong>Personas for Firefox</strong></a>, ela permite que você <strong>altere o visual do Firefox</strong> com um simples clique no ícone localizado no canto inferior esquerdo do programa.</p>
<dl class="images">
<dt><a href="http://blog.klaus.pro.br/wp-content/uploads/2008/04/personas-firefox.jpg"><img src="http://blog.klaus.pro.br/wp-content/uploads/2008/04/personas-firefox-thumb.jpg" alt="" /></a></dt>
<dd>Personalizando o visual de seu Firefox facilmente</dd>
</dl>
<p>Acima tem um screenshot do meu Firefox no trabalho, usando o visual &#8220;Niagra Falls&#8221;.</p>
<p>É uma extensão bem bacana também para apresentar pros amigos, aqueles que usam o Firefox como ferramenta de navegação e diversão.</p>
<p><em>Update</em>: o tema <em>Paper</em> também é muito legal, estou usando ele agora! <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2008/ler/personalizando-o-visual-do-seu-firefox/index.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Americanas.com: Status do seu pedido? Não se você usa Firefox</title>
		<link>http://blog.klaus.pro.br/2007/ler/americanas-com-status-do-seu-pedido-nao-para-o-firefox-2/index.html</link>
		<comments>http://blog.klaus.pro.br/2007/ler/americanas-com-status-do-seu-pedido-nao-para-o-firefox-2/index.html#comments</comments>
		<pubDate>Fri, 19 Oct 2007 20:47:32 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Americanas.com]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[Submarino]]></category>

		<guid isPermaLink="false">http://wp.blog.klaus.pro.br/?p=56</guid>
		<description><![CDATA[Eu nunca fui muito fã de fazer compras na Americanas.com. Motivos? Bom, o site deles, na minha opinião, é desorganizado e eu já tive problemas para pagar uma compra que fiz (na ocasião, refiz a compra no Submarino). Eu estava procurando um fone de ouvido novo para usar aqui no trabalho. Fiz umas pesquisas e [...]]]></description>
			<content:encoded><![CDATA[<p>Eu nunca fui muito fã de fazer compras na <a rel="nofollow" href="http://americanas.com/">Americanas.com</a>. Motivos? Bom, o site deles, na minha opinião, é desorganizado e eu já tive problemas para pagar uma compra que fiz (na ocasião, refiz a compra no <a href="http://www.submarino.com.br/">Submarino</a>).</p>
<p>Eu estava procurando um fone de ouvido novo para usar aqui no trabalho. Fiz umas pesquisas e não achei o modelo que eu queria disponível no Submarino porém, achei-o na Americanas.</p>
<p>Como meu problema de pagamento (relatado acima) havia acontecido há mais de um ano, resolvi dar uma nova chance à Americanas.</p>
<h3 class="subtitles">A compra</h3>
<p>No processo de compra, para minha surpresa, não houve nenhum erro e tudo ocorreu conforme o esperado. Fiz o pagamento com cartão de crédito e logo depois o pagamento foi confirmado no meu e-mail.</p>
<p>Fiz a compra ontem e resolvi dar uma olhada hoje para ver se meu fone já havia sido postado. Foi aí que a Americanas me desapontou mais uma vez.</p>
<h3 class="subtitles">A visualização do status do pedido</h3>
<p>Lá vou eu, bem intencionado e humorado, acessar a área &#8220;Meus pedidos&#8221;. Faço meu <em>login</em> com sucesso e estou no &#8220;Painel de Controle&#8221;.</p>
<p>Clico em &#8220;Últimos Pedidos&#8221; para, assim espero, visualizar meus últimos pedidos. Para minha surpresa, vejo a seguinte tela: (clique para ampliar)</p>
<dl class="images">
<dt> <a href="http://blog.i.klaus.pro.br/americanas-firefox.png"><br />
<img src="http://blog.i.klaus.pro.br/americanas-firefox-thumb.jpg" alt="" /><br />
</a> </dt>
<dd> Administração da Americanas.com com problemas no Firefox </dd>
</dl>
<p>Como trabalho com o <a href="http://ubuntu.com/">Ubuntu</a>, acessei a página com o <a href="http://www.getfirefox.com/">Firefox</a>. Imaginei que algum CSS tinha dado problema na hora de carregar, resolvi navegar por mais alguns <em>links</em> e vi que alguns funcionavam, outros não.</p>
<p>Olhei para o lado e vi um PC rodando Windows dando sopa, resolvi acessar a página e ver o que acontecia. Acho que você já deve imaginar, certo? <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<dl class="images">
<dt> <a href="http://blog.i.klaus.pro.br/americanas-ie.png"><br />
<img src="http://blog.i.klaus.pro.br/americanas-ie-thumb.jpg" alt="" /><br />
</a> </dt>
<dd> Administração da Americanas.com plenamente funcional no IE </dd>
</dl>
<p>Pelo visto, para as telas que geram receita é importante que elas funcionem no Firefox, depois que a compra já foi feita, nem tanto&#8230; <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2007/ler/americanas-com-status-do-seu-pedido-nao-para-o-firefox-2/index.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Centralizando floats com largura variável e um bug no IE 7</title>
		<link>http://blog.klaus.pro.br/2007/ler/centralizando-floats-com-largura-variavel-e-um-bug-no-ie7-com-position-e-overflow/index.html</link>
		<comments>http://blog.klaus.pro.br/2007/ler/centralizando-floats-com-largura-variavel-e-um-bug-no-ie7-com-position-e-overflow/index.html#comments</comments>
		<pubDate>Mon, 24 Sep 2007 19:43:10 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Floats]]></category>
		<category><![CDATA[Internet Explorer]]></category>

		<guid isPermaLink="false">http://wp.blog.klaus.pro.br/2007/ler/centralizando-floats-com-largura-variavel-e-um-bug-no-ie7-com-position-e-overflow/index.html</guid>
		<description><![CDATA[Trabalhar com elementos com float nas páginas é uma tarefa bastante comum. A idéia do float, como podemos deduzir dos seus valores possíveis, é posicionar objetos à esquerda ou à direita. Porém, nem sempre temos esta intenção ao usar floats. Um caso bastante típico é quando usamos float apenas para poder colocar altura, largura ou [...]]]></description>
			<content:encoded><![CDATA[<p>Trabalhar com elementos com <em>float</em> nas páginas é uma tarefa bastante comum. A idéia do <em>float</em>, como podemos deduzir dos seus valores possíveis, é posicionar objetos à esquerda ou à direita. Porém, nem sempre temos esta intenção ao usar <em>floats</em>.</p>
<p>Um caso bastante típico é quando usamos <em>float</em> apenas para poder colocar altura, largura ou margens verticais num elemento. Como o <em>float</em> força um <em>display: block</em>, podemos aplicar <em>height</em>, <em>width</em> e <em>padding</em> (vertical) neste elemento.</p>
<p>Num segundo cenário, já encontrei casos em que tenho um elemento de largura variável e não previsível e, que tenho também de deixá-lo centralizado na página ou em relação a um outro elemento pai. Este é um dos casos onde precisamos <strong>centralizar <em>floats</em></strong>.</p>
<p>Eu já conhecia <a href="http://www.cssplay.co.uk/menus/centered.html">esta técnica aqui</a> do <a href="http://www.cssplay.co.uk/">Stu Nicholls</a> em seu site CSSplay. Já usei este método e sei que ele funciona bem. Tudo bem que ele usa uma <em>tag</em> <var>del</var> (pode ser uma <var>ins</var> também) sem necessidade&#8230; mas, com <a href="http://msdn2.microsoft.com/en-us/library/ms537512.aspx">comentários condicionais</a> podemos esconder ela dos navegadores atualizados e deixá-la visível apenas para o Internet Explorer (sim, como já era de se imaginar, a <em>tag</em> é necessária apenas para o IE).</p>
<p>Lendo o <a href="http://doggdot.us/">doggdot.us</a> hoje, achei uma referência para outro artigo que descreve uma <a href="http://www.search-this.com/2007/09/19/when-is-a-float-not-a-float/">segunda técnica</a>, mais simples e objetiva. Testei o <a href="http://www.pmob.co.uk/temp/centred-float4.htm">exemplo disponível</a> e funcionou no Firefox, IE 7 e 6. Apenas no IE 7 é que surgiu a barra de rolagem horizontal. Nada muito complicado de se resolver.</p>
<p>O IE 7 tem um <em>bug</em> (certo, muitos <em>bugs</em>, mas vamos falar só desse) que um elemento pai com <em>overflow: hidden</em> e um filho com <em>position: relative</em>, faz com que o efeito do <em>overflow</em> não funcione. Se você adicionar <em>position: relative</em> no pai também, terá o resultado esperado. Acabei de deixar um comentário ao autor sobre esta correção. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  <a href="http://snook.ca/archives/html_and_css/position_relative_overflow_ie/">Veja mais sobre este <em>bug</em></a>.</p>
<p>Ficam aí as dicas para quando você precisa centralizar elementos com <em>float</em> ou se deparar com este <em>bug</em> do IE 7, bom proveito! =)</p>
<dl id="refencias" class="references">
<dt>Referências</dt>
<dd> <a href="http://www.search-this.com/2007/09/19/when-is-a-float-not-a-float/">Centralizando <em>floats</em></a> &#8211; Método simples </dd>
<dd> <a href="http://www.cssplay.co.uk/menus/centered.html">Centralizando <em>floats</em></a> &#8211; Método do <a href="http://www.cssplay.co.uk/">Stu Nicholls</a> </dd>
<dd> <a href="http://msdn2.microsoft.com/en-us/library/ms537512.aspx">Comentários condicionais</a> (conditional comments) </dd>
<dd> <a href="http://snook.ca/archives/html_and_css/position_relative_overflow_ie/"><em>Bug</em> do IE 7 com <em>overflow</em> e <em>position</em></a> </dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2007/ler/centralizando-floats-com-largura-variavel-e-um-bug-no-ie7-com-position-e-overflow/index.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
