<?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>Boas práticas de Desenvolvimento com Padrões Web &#187; CSS</title>
	<atom:link href="http://www.tableless.com.br/categoria/client-side/css/feed" rel="self" type="application/rss+xml" />
	<link>http://www.tableless.com.br</link>
	<description>XHTML e CSS com farinha e pimenta</description>
	<lastBuildDate>Mon, 08 Mar 2010 14:07:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Versionamento inteligente para mobiles</title>
		<link>http://www.tableless.com.br/versionamento-inteligente-para-mobiles</link>
		<comments>http://www.tableless.com.br/versionamento-inteligente-para-mobiles#comments</comments>
		<pubDate>Wed, 20 Jan 2010 12:31:53 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[Internet Móvel]]></category>
		<category><![CDATA[Na Prática]]></category>
		<category><![CDATA[Tecnologia e Tendências]]></category>
		<category><![CDATA[acessibilidade]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[dispositivos moveis]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[media queries]]></category>

		<guid isPermaLink="false">http://www.tableless.com.br/?p=1653</guid>
		<description><![CDATA[Filtrar mobiles pelo tipo de aparelho é muito comum. A moda é versionar o site para iPhone. Mas há outros aparelhos com a mesma capacidade de renderização que podem se beneficiar.]]></description>
			<content:encoded><![CDATA[<p>O iPhone fez a festa dele. Todo mundo gostou do que viu e usou. Acontece que não só de iPhone vive o homem, e há pessoas por aí que não gostam do aparelho por motivos diversos. Há mercado para todos e por isso é natural que apareçam outros aparelhos com novos sistemas. Acontece que o lançamento do iPhone criou uma moda de <a href="http://www.tableless.com.br/porque-so-para-o-iphone">criar versões dos sites específicas para ele</a>. No começo isso foi ótimo. Mas agora, isso priva diversos celulares similares ao iPhone de terem uma boa experiência de navegação. É o caso de usuários de Android.</p>
<p>O Android é o novo sistema operacional para mobiles do Google. Até para um AppleBoy, como eu, o sistema é interessante. Tem a interface bem acabada, app&#8217;s amigáveis e etc. Ele faz muito bem o papel dele. O Engine de renderização do browser dele é WebKit. O mesmo engine que o Safari Mobile utiliza. E não estou falando de versões antigas do Webkit como alguns outros celulares utilizam. O Android utiliza as versões mais atuais do Webkit, com suporte extenso a CSS e HTML. Portanto, um site que teoricamente foi feito apenas para iPhone, pode ser visualizado da mesma maneira pelos usuários de Android.</p>
<p>Aí entra outra questão: provavelmente você deve ter pensado que seria apenas fazer um script de detecção de browser, capturando as visitas de Safari Mobile e Android e pronto. É aí que você se engana. Já há vários outros aparelhos que estão utilizando engines parecidas e que podem renderizar sua &#8220;versão de iphone&#8221;. Exatamente por isso, que você precisa fazer um filtro por características e não por browser. Fazemos isso utilizando <a href="http://www.tableless.com.br/introducao-sobre-media-queries">Media Queries</a>. </p>
<p>As Media Queries permitem fazer um pequeno filtro, onde definimos as características do dispositivo que acessará a página. Com isso, podemos definir um CSS específico para aquele grupo de dispositivos que se encaixaram no seu filtro. Veja um exemplo abaixo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;style.css&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> media<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;screen and (min-width:481px)&quot;</span><span style="color: #00AA00;">&gt;</span>
&lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;mob.css&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> media<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;screen and (max-width:480px)&quot;</span><span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<p>A media que fiz é muito simples de ser entendida. A primeira linha engloba dispositivos que tem tela colorida, com uma resolução de largura mínima de 481px, isso inclui seu monitor, notebook e etc. A outra linha engloba dispositivos com uma largura máxima de 480px, ou seja, iPhones, Androids e dispositivos que seguem esse mesmo esquema de resolução e etc.</p>
<p>Dessa forma, você filtra os dispositivos e não os browsers dos aparelhos. Isso previne que algum celular, tão bom quanto o iPhone e o Android fiquem de fora de ter uma boa experiência de uso. Quer fazer um teste interessante? Se você estiver utilizando um browser que aceita media queries, redimensione a janela para uma largura menor que 480px. Você verá o Tableless chaveando os estilos automaticamente. Perceba que alguns elementos são reformatados e outros retirados do layout. </p>
<p>O filtro ainda não está completo porque não estamos contemplando os aparelhos que não aceitam meda queries, mas são mobiles. Para isso, usaríamos os <a href="http://www.tableless.com.br/o-que-sao-media-types">Media Types</a>, com valor de <strong>handheld</strong>. Embora celulares que aceitem os Media Types não tenham um bom suporte de CSS, podemos fazer pelo menos uma formatação de texto, cor e background. Celulares que utilizam Opera Mini, terão uma ótima experiência.</p>
<p>É sempre aquela mesma velha idéia: dar a melhor experiência para todos os meios de acesso. Sempre.</p>
<h3> </h3>
<ul class="related_post">
<li><a href="http://www.tableless.com.br/porque-e-a-web-que-comanda" title="Porque é a web que comanda">Porque é a web que comanda</a></li>
<li><a href="http://www.tableless.com.br/introducao-sobre-media-queries" title="Introdução sobre Media Queries">Introdução sobre Media Queries</a></li>
<li><a href="http://www.tableless.com.br/sites-para-dispositivos-moveis-mediatype" title="Sites para Dispositivos Móveis &#8211; MediaType">Sites para Dispositivos Móveis &#8211; MediaType</a></li>
<li><a href="http://www.tableless.com.br/sobre-internet-explorer-para-mobile-breve-impressao" title="Sobre Internet Explorer para Mobile &#8211; Breve impressão">Sobre Internet Explorer para Mobile &#8211; Breve impressão</a></li>
<li><a href="http://www.tableless.com.br/o-que-sao-media-types" title="O que são Media Types do CSS?">O que são Media Types do CSS?</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tableless.com.br/versionamento-inteligente-para-mobiles/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Simuladores de Browsers Mobiles</title>
		<link>http://www.tableless.com.br/simuladores-de-browsers-mobiles</link>
		<comments>http://www.tableless.com.br/simuladores-de-browsers-mobiles#comments</comments>
		<pubDate>Wed, 20 Jan 2010 12:31:25 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Internet Móvel]]></category>
		<category><![CDATA[Na Prática]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[acessibilidade]]></category>
		<category><![CDATA[aprenda]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[dispositivos moveis]]></category>
		<category><![CDATA[internetmovel]]></category>
		<category><![CDATA[mobilidade]]></category>
		<category><![CDATA[navegadores]]></category>

		<guid isPermaLink="false">http://www.tableless.com.br/?p=1661</guid>
		<description><![CDATA[iPhone, Android e S60. Há simulador de browsers para todos estes smartphones. Versionar sites para mobiles nunca foi tão fácil.]]></description>
			<content:encoded><![CDATA[<p>Antigamente não existiam simuladores dos pequenos celulares. Na verdade, não precisava. Você provavelmente usava WAP. Quando começamos a utilizar CSS e XHTML para fazer sites mais decentes para os mobiles, tudo ficou mais complicado, você precisava ter um aparelho para fazer testes. Em muitos casos era simples resolver utilizando o Opera no desktop mesmo, mas em forma de visualização mobile/handheld. Contudo, você estava desenvolvendo para apenas aparelhos com Opera. Não havia, por exemplo, um simulador de IE Mobile. Nem precisa, é horrível, e atualmente, a maioria utiliza Opera.</p>
<p>Para fazer sites para os iPhones e Androids da vida, não há segredo, já que eles aceitam tudo e mais um pouco de CSS e HTML. Você consegue ter homogeneidade ao desenvolver. Mesmo assim, para ter certeza, seria interessante você testar o site em um aparelho. Por isso, há simuladores que emulam o ambiente dos aparelhos. É o caso do iPhone e do Android.</p>
<p>Para aprender mais sobre o simulador do Android, visite a <a href="http://developer.android.com/guide/developing/tools/emulator.html">página oficial sobre o emulador</a> deles. Assim você aprende como ele funciona, as funções, instalação e etc. O <a href="http://developer.android.com/sdk/index.html">simulador pode ser instalado em Windows, Mac ou Linux</a>. </p>
<p>O simulador para iPhone é só para quem tem Mac. Infelizmente a Apple ainda não liberou o SDK para outros sistemas. Uma pena, porque não só de mac vive o homem, e a maioria dos devs utilizam Windows ou Linux. Mesmo assim, você <a href="http://developer.apple.com/iphone/program/sdk/">pode baixá-lo</a> e utilizá-lo para testar qualquer site ou arquivos locais.</p>
<p>O pessoal da Nokia também disponibiliza vários emuladores. Contudo, aconselho que você utilize apenas o browser de S60, que é o melhor deles hoje em dia. Os browsers dos S60 suportam Webkit, mesmo não sendo a versão mais atualizada, é possível fazer muita coisa interessante, entretanto, há haver alguns erros de compatibilidade por conta do engine desatualizado.</p>
<ul>
<li><a href="http://developer.android.com/sdk/index.html">Simulador de Android</a></li>
<li><a href="http://developer.apple.com/iphone/program/sdk/">Simulador de iPhone</a></li>
<li><a href="http://www.forum.nokia.com/info/sw.nokia.com/id/db2c69a2-4066-46ff-81c4-caac8872a7c5/NMB40_install.zip.html">Simulador para Nokia</a></li>
</ul>
<h3> </h3>
<ul class="related_post">
<li><a href="http://www.tableless.com.br/sobre-internet-explorer-para-mobile-breve-impressao" title="Sobre Internet Explorer para Mobile &#8211; Breve impressão">Sobre Internet Explorer para Mobile &#8211; Breve impressão</a></li>
<li><a href="http://www.tableless.com.br/mobilidade-na-cabeca" title="Mobilidade na cabeça">Mobilidade na cabeça</a></li>
<li><a href="http://www.tableless.com.br/sites-para-dispositivos-moveis-breve-introducao" title="Sites para Dispositivos Móveis &#8211; Breve introdução">Sites para Dispositivos Móveis &#8211; Breve introdução</a></li>
<li><a href="http://www.tableless.com.br/browsers_em_dispositivos_moveis" title="Browsers dos Dispositivos Móveis">Browsers dos Dispositivos Móveis</a></li>
<li><a href="http://www.tableless.com.br/sites-para-dispositivos-moveis-mediatype" title="Sites para Dispositivos Móveis &#8211; MediaType">Sites para Dispositivos Móveis &#8211; MediaType</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tableless.com.br/simuladores-de-browsers-mobiles/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Colocar Rodapé fixo no fim da página</title>
		<link>http://www.tableless.com.br/colocar-rodape-fixo-no-bottom</link>
		<comments>http://www.tableless.com.br/colocar-rodape-fixo-no-bottom#comments</comments>
		<pubDate>Tue, 12 Jan 2010 18:14:01 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML/XHTML]]></category>
		<category><![CDATA[Na Prática]]></category>
		<category><![CDATA[tableless]]></category>
		<category><![CDATA[tecnicascss]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.tableless.com.br/?p=1645</guid>
		<description><![CDATA[Como deixar o Rodapé fixo fim da página quando houver pouco conteúdo.]]></description>
			<content:encoded><![CDATA[<p>Você já precisou ter o rodapé fixo no fim da página algum dia. Normalmente os clientes chatos acham feio aquele rodapé terminando no meio da página quando há pouco conteúdo. Há uma técnica no CSS que resolve isso. Não funciona no IE6, já aviso agora. Na verdade, tem um jeito de funcionar, mas não quero te acostumar mal. <img src='http://www.tableless.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Lembrando que você pode fazer isso facilmente com JQuery. </p>
<p>Suponha que você tenha o código HTML:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;
	&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&nbsp;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
&lt;head&gt;
	&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;/&gt;
&nbsp;
	&lt;title&gt;Tableless.com.br&lt;/title&gt;
&lt;/head&gt;
&nbsp;
&lt;body&gt;
&nbsp;
&lt;div class=&quot;geral&quot;&gt;
	&lt;div class=&quot;header&quot;&gt;
		HEADER
	&lt;/div&gt;
	&lt;div class=&quot;aside fleft&quot;&gt;
		ESQUERDA
	&lt;/div&gt;
	&lt;div class=&quot;aside fright&quot;&gt;
		DIREITA
	&lt;/div&gt;
	&lt;div class=&quot;content&quot;&gt;
		&lt;p&gt;
		Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin augue erat, ullamcorper pulvinar malesuada ultricies, mollis non magna. Curabitur quis nisi ut ligula ultricies gravida. Suspendisse elit justo, vulputate in facilisis sed, tristique id nisi. Maecenas risus quam, suscipit eu vehicula ut, ultricies in neque. Donec gravida tristique turpis ut interdum. Donec lacinia nisi id enim lacinia sit amet facilisis est ullamcorper. Curabitur ipsum libero, sollicitudin nec rhoncus quis, congue non ipsum. Etiam at eros dolor. Mauris non erat vitae leo faucibus fermentum. In consectetur, diam eget faucibus dignissim, urna justo pretium dui, nec eleifend neque velit vitae odio. Nam et tristique turpis. In dictum commodo sem ut dignissim. In convallis quam non tortor posuere sed ornare nulla pulvinar. Suspendisse placerat turpis in tortor rutrum nec mollis nulla posuere. Integer tellus est, rhoncus ut sagittis eget, mattis a velit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque gravida posuere orci nec ornare. Donec elit nulla, aliquam eget cursus a, commodo sed odio.
		&lt;/p&gt;
		&lt;p&gt;
		Duis id metus enim, sed dignissim magna. Quisque dapibus pulvinar diam eget adipiscing. Ut aliquet ipsum quis lorem elementum lacinia. Vestibulum feugiat ultrices orci, vel sollicitudin nibh rutrum eu. In gravida tincidunt ornare. Aenean vestibulum leo eu orci egestas semper. Proin euismod dapibus tempor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse rutrum purus eget lectus ultricies a consectetur ante laoreet. Phasellus ullamcorper gravida risus vitae convallis. Curabitur ante lorem, faucibus in tincidunt quis, ullamcorper at lectus. Fusce fermentum blandit varius. Donec a quam id massa bibendum commodo sit amet vel felis. Sed magna nibh, convallis nec dignissim non, vestibulum adipiscing ipsum. Mauris cursus fringilla tortor eu feugiat. Vivamus vestibulum dapibus justo, porttitor luctus nisi posuere at. Nunc mi elit, suscipit id venenatis at, suscipit nec purus. Donec malesuada fringilla tempor. Pellentesque vehicula diam a magna commodo sagittis. Nulla facilisi. 
		&lt;/p&gt;
	&lt;/div&gt;
	&lt;div class=&quot;footer&quot;&gt;
		FOOTER
	&lt;/div&gt;
&lt;/div&gt;
&nbsp;
&lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p>E o seguinte CSS:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #00AA00;">*</span>  <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
html<span style="color: #00AA00;">,</span> body <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;"><span style="color: #cc66cc;">100</span>%</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.geral</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">min-height</span><span style="color: #00AA00;">:</span><span style="color: #933;"><span style="color: #cc66cc;">100</span>%</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">relative</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">800px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.footer</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">bottom</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;"><span style="color: #cc66cc;">100</span>%</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.content</span> <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span><span style="color: #993333;">hidden</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.aside</span> <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">200px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.fleft</span> <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.fright</span> <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Na linha 6, você faz com que as tags body e html tenham 100% de altura. Isso fará com que o rodapé entenda que o limite dos dois elementos seja o final da janela do navegador.</p>
<p>Na linha 8, defino que a largura mínima do div GERAL, que é o div que envolve todo o site, seja de 100%. E defino um position: relative; para que o footer seja referenciado por ele.</p>
<p>Na linha 14, eu defino um position: absolute; e bottom:0; para footer, forçando sempre para o final do div.<br />
Se houver pouco conteúdo o Rodapé fica lá embaixo, se houver muito, o rodapé desce junto com o conteúdo.</p>
<p>Funciona em IE7+ e em bons browsers.</p>
<p>Link para o arquivo de exemplo: <a href='http://www.tableless.com.br/wp-content/uploads/2010/01/footer.html'>Footer fixo no Rodapé</a><br />
<h3> </h3>
<ul class="related_post">
<li><a href="http://www.tableless.com.br/tutorial-tableless" title="Tutorial Tableless Básico">Tutorial Tableless Básico</a></li>
<li><a href="http://www.tableless.com.br/introducao-ao-css-animation" title="Introdução ao CSS Animation">Introdução ao CSS Animation</a></li>
<li><a href="http://www.tableless.com.br/formulario-basico-em-8-minutos" title="Formulário Básico em 8 minutos &#8211; Tableless form">Formulário Básico em 8 minutos &#8211; Tableless form</a></li>
<li><a href="http://www.tableless.com.br/image-replacement-x-imagens" title="Image-Replacement x Imagens">Image-Replacement x Imagens</a></li>
<li><a href="http://www.tableless.com.br/centralizando-um-objeto-na-horizontal-e-vertical-com-css" title="Centralizando um objeto na Horizontal e Vertical com CSS">Centralizando um objeto na Horizontal e Vertical com CSS</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tableless.com.br/colocar-rodape-fixo-no-bottom/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Camadas de desenvolvimento client-side</title>
		<link>http://www.tableless.com.br/camadas-de-desenvolvimento-client-side</link>
		<comments>http://www.tableless.com.br/camadas-de-desenvolvimento-client-side#comments</comments>
		<pubDate>Sat, 10 Oct 2009 10:08:56 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML/XHTML]]></category>
		<category><![CDATA[Client-Side]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[microformats]]></category>

		<guid isPermaLink="false">http://www.tableless.com.br/?p=1294</guid>
		<description><![CDATA[Você pode se assustar com isso, mas a tabela foi um marco na história do design para web. Ela abriu portas. Mostrou caminhos.]]></description>
			<content:encoded><![CDATA[<p><em><small>Esse artigo foi publicado originalmente na Revista TIDigital de Abril de 2009.</small></em></p>
<p>A utilização de tabelas no desenvolvimento web foi um marco na história. Pode ser estranho falar isso, mas a verdade é que antes das tabelas os sites eram feios. As tabelas possibilitaram a criação de sites com 3 colunas. Você pode estar pensando que isso não é grande coisa. Mas em meados de 1996-97 isso era  nirvana do design para web. As tabelas possibilitaram uma nova realidade para os designers. Foi uma mão na roda naquele tempo. Mas o desenvolvimento com tabelas é algo realmente doloroso. Controlar o layout sem influenciar a programação é um trabalho difícil de se fazer, que encarece o serviço.</p>
<p>Um dos principais problemas do desenvolvimento com tabelas é a mistura das camadas. Nós não conseguimos dividir o desenvolvimento em camadas. As três principais camadas, que você já deve conhecer são: informação, formatação e comportamento.  O HTML é responsável pela camada de informação. É ele que vai definir importâncias e significado para toda a informação que consta no site. Essa camada é especialmente importante. Os buscadores e os leitores de tela dependem de um HTML bem escrito e semântico para que funcionem plenamente.<br />
O CSS é responsável pela camada de formatação. É ele que vai controlar todo o visual e estruturação do site.<br />
O Javascript e o Ajax controlarão a terceira camada que define qual será o comportamento dos elementos manipulando o código CSS.</p>
<p>A divisão por camadas é a alma do novo desenvolvimento para web. Pouquíssimas pessoas sabem das influências que ela pode trazer, não apenas no código do site, mas também em toda a organização da equipe em empresas. Hoje há especialistas em HTML e CSS, coisa que nunca imaginaríamos no começo da web. Empresas fazem questão de treinar em HTML e CSS, profissionais das suas equipes, que cuidam de Arquitetura de Informação e Usabilidade, mesmo que eles não trabalhem diretamente com o código client-side. Isso faz com que toda a equipe se transforme e saiba das possibilidades e limitações dos projetos.<br />
Durante muito tempo agências web achavam que o desenvolvedor deveria ser uma espécie de canivete suiço. Lembro-me que haviam empresas que procuravam designers que soubessem duas ou três linguagens server-side e programadores que entendessem bem de photoshop, fireworks e illustrator. Pague o salário de um e leve dois. Contudo, também haviam profissionais que achavam que ele deveria ter exatamente este perfil. Talvez por pressão do mercado ou até mesmo porque ninguém entendia direito esse negócio de web.</p>
<p>Quando comecei a ministrar cursos e palestras em empresas sobre este assunto, eu me assustava com a falta de conhecimento e interesse dos profissionais. Eles estavam desenvolvendo a anos utilizando tabelas para a estruturação, sem separar as camadas e fazendo todo o processo de desenvolvimento linearmente. Então chega alguém e diz para eles que está tudo errado e eles precisam reaprender. Eu também ficaria assustado com isso. Outro ponto ruim era o preconceito com novas idéias. Eu já cheguei a perder uma oportunidade em uma empresa de web porque eu não desenvolvia para Netscape 4 e não fazia sites utilizando o Dreamweaver. O mercado tinha um cenário muito diferente do que temos hoje.<br />
Os novos desenvolvedores nasceram sabendo que estruturação de sites se faz com divs e CSS. E que tabelas servem para exibir dados tabulares. Eles nem imaginam que antes nós quebrávamos nossas cabeças para criar sites arrasadores com uma infinidade de tables, tds, trs, tags fonts e centers. Melhor para eles. Melhor para o mercado.<br />
Dar atenção a um código XHTML bem escrito, com uma bela formatação CSS, significa que o site poderá ser bem acessado por um público ampliado. É abrir portas para deficientes e usuários de diversos dispositivos. É melhorar a indexação em buscadores e facilitar o desenvolvimento de novas versões. É fazer com que a equipe trabalhe independentemente. Isso aumenta as vendas e as possibilidades de novos negócios, idéias, entre outras possibilidades.</p>
<p>Estou feliz porque os browsers também mudaram sua maneira de olhar as coisas. O pessoal que desenvolve o Internet Explorer está com a mente aberta para novidades. A Guerra dos Browsers ainda não acabou, e provavelmente está longe de acabar. Acontece que a Guerra de hoje é mais saudável. Todos ganham. Principalmene usuário final e desenvolvedores. Os fabricantes de browsers descobriram que há caminhos mais inteligentes de conquistar os usuários.</p>
<p>Não sei se estou conseguindo fazer-me entender. Mas quero que você olhe com outros olhos o código HTML, CSS, Javascript, Microformats e qualquer outra linguagem que trabalhe no cliente.<br />
Os padrões web não estariam tão em foco hoje se essa importância não fosse tão explicita.</p>
<p>O que me empolga mais é que daqui pra frente o mercado de desenvolvimento para web tende a ficar mais interessante. Idéias de novos meios de acessar a web estão surgindo todos os dias. Não demorará muito para acessarmos a internet de outros dispositivos que não sejam smartphones e desktops. A internet está se tornando realmente popular agora. Mais empresas descobriram que a internet é algo que pode trazer lucro e abrir novas oportunidades. Uma pena que elas tenham aberto os olhos apenas em tempos de crise. Mas isso é uma outra história.</p>
<p><small>Este artigo foi originalmente publicado na Revista TIDigital do Mês de Abril de 2009</small><br />
<h3> </h3>
<ul class="related_post">
<li><a href="http://www.tableless.com.br/client-side-e-sua-importancia" title="Client-side e sua importância">Client-side e sua importância</a></li>
<li><a href="http://www.tableless.com.br/processos-adocao-padroes" title="Processos e Adoção de Padrões">Processos e Adoção de Padrões</a></li>
<li><a href="http://www.tableless.com.br/produtividade-editores-e-snippets" title="Produtividade: editores e snippets">Produtividade: editores e snippets</a></li>
<li><a href="http://www.tableless.com.br/porque-e-a-web-que-comanda" title="Porque é a web que comanda">Porque é a web que comanda</a></li>
<li><a href="http://www.tableless.com.br/versionamento-inteligente-para-mobiles" title="Versionamento inteligente para mobiles">Versionamento inteligente para mobiles</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tableless.com.br/camadas-de-desenvolvimento-client-side/feed</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Ah, o maravilhoso mundo real</title>
		<link>http://www.tableless.com.br/ah-o-maravilhoso-mundo-real</link>
		<comments>http://www.tableless.com.br/ah-o-maravilhoso-mundo-real#comments</comments>
		<pubDate>Thu, 10 Sep 2009 21:03:31 +0000</pubDate>
		<dc:creator>Elcio Ferreira</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML/XHTML]]></category>
		<category><![CDATA[Tecnologia e Tendências]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[desenvolvimento web]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[padroes web]]></category>
		<category><![CDATA[Semântica]]></category>
		<category><![CDATA[tableless]]></category>
		<category><![CDATA[tableless.com.br]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.tableless.com.br/?p=1601</guid>
		<description><![CDATA[O que é mais importante, RDF ou bordas arredondadas? O novo formato de especificações modulares do W3C vai ajudar os desenvolvedores, agilizando os releases de navegador, ou vai tornar nossa vida uma bagunça?]]></description>
			<content:encoded><![CDATA[<p>O Diego publicou, há mais de uma semana, um <a href="http://www.tableless.com.br/se-prepare-para-a-revolucao">artigo sobre o impacto da mudança de estratégia do W3C</a> em relação ao ciclo de vida de seus padrões. O artigo gerou algumas opiniões contrárias nos comentários, em relação ao fato de ele ter dito que bordas arredondadas são mais importantes que a web semântica e em relação à estratégia de especificações modulares do W3C. Vou compartilhar minha opinião sobre os dois pontos.</p>
<p>Em primeiro lugar, é importante distinguir o ideal daquilo que é possível fazer. Li um bocado sobre RDF e ontologias há uns dez anos. Li &#8220;A Revolução Inacabada&#8221;, vi o RSS nascer e se tornar popular, vi as primeiras aplicações entenderem o formato. RDF falhou. Dez anos se passaram e continuamos escrevendo HTML para ser lido por navegadores e só. Há poucos exemplos de aplicações semânticas na vida real, e a maioria seria desenvolvida de uma forma ou de outra.</p>
<p>Há muita gente, por exemplo, definindo seu próprio padrão de XML para trocar dados com sistemas parceiros. Quantos desses estão usando RDF, com uma ontologia interpretada automaticamente por sistemas que &#8220;descobrem&#8221; os serviços um do outro? Ou seja, não há novidades nisso nos últimos dez anos.</p>
<p>Escrever HTML bom é importante, porque vai ajudar o Google a indexar seu site e vai facilitar a vida de quem tentar HTML parsing nele. Mas, seja sincero, você tem mesmo esperanças de que alguém vá lê-lo como XML? Vê alguma vantagem real em validar seu código como XHTML, além de provar a si próprio que fez tudo direito? E onde está a promessa dos microformats? Microformats só fazem diferença se forem usados por muita gente. Ninguém vai fazer um parser de um formato usado em apenas um site. Você consegue citar, de cabeça, cinco sites que usem microformats e não foram feitos por você? Ah, claro, não vale incluir na lista o microformats.org.</p>
<p>Nem RSS é um bom exemplo de aplicação de semântica XML. Existem pelo menos dois formatos populares do padrão, além do padrão Atom, que serve para a mesma coisa. E não sei de nenhum leitor de RSS de sucesso que faça parsing dos feeds como XML. O que todos fazem é ler e interpretar a string. É isso mesmo que você entendeu, quase tão bom quanto um CSV! Outro exemplo digno de nota é o SOAP, que foi criado para fornecer aos webservices a capacidade de &#8220;autodescoberta&#8221;. Você conhece alguém que use isso de verdade? Já viu algum robô que varre a web em busca de serviços e entende sozinho como usá-los? SOAP só tem a vantagem de oferecer tooltips para ajudar os programadores .Net que usam Visual Studio. Enquanto isso, lá fora, XMLRPC e REST (com JSON) estão mudando o mundo.</p>
<p>Por que essas tecnologias falharam, embora pareçam todas boas idéias? Meu palpite é que elas exigiam um raciocínio de longo prazo, um tipo de aposta, que é muito difícil de conseguir. Embora XHTML, Microformats ou SOAP sejam idéias muito boas, aplicá-las em seu site só vai ter valor se muito mais gente o fizer. Se você aplicar o formato sozinho vai perder seu tempo.</p>
<p>O que é muito diferente de, por exemplo, deixar de usar tabelas para layout, escrever bom HTML ou usar jQuery. Essas coisas lhe devolvem um benefício imediato. Se deixar de usar tabelas para layout vai ter um site mais leve e vai perder muito menos tempo quando tiver que mudar o layout, se escrever HTML bom vai ter menos trabalho para escrever CSS, para fazer o CSS mobile e o de impressão, e se usar jQuery vai escrever javascript em um terço do tempo.</p>
<p>Note que esses três exemplos também tiram benefícios do fato de muita gente estar usando. Há muitos bons lugares para se aprender HTML e CSS, há muitos sistemas Open Source que já trabalham gerando código bom e os buscadores entendem a semântica do bom HTML. Mas você não depende desses benefícios para tomar a decisão de uso. Quando começamos, há dez anos, a fazer layouts tableless, não aparecíamos melhor no Google e praticamente não havia sistemas gerando HTML direito. Mas o fizemos assim mesmo porque os benefícios imediatos compensavam o esforço.</p>
<p>É por isso que eu temo que nunca teremos uma web semântica de verdade, e estamos condenados a fazer HTML parsing para sempre.</p>
<p>Há exceções. RSS, por exemplo. RSS é uma sombra do que poderia, mas é um padrão de sucesso, amplamente adotado. E não pode ser explicado com minha teoria do benefício individual imediato. Se você estiver usando RSS sozinho no mundo, não terá nenhum benefício. Talvez o sucesso do RSS se deva ao fato de precisar de uma pequena rede de usuários para oferecer um grande benefício.</p>
<p>Você já se perguntou como foram vendidos os primeiros aparelhos de FAX? Ter um FAX só faz sentido se mais gente tiver. Foram vendidos aos pares. As empresas o compravam para trocar documentos entre a matriz e as filiais. O fato de poder trocar documentos com o resto do mundo era, no início, um &#8220;benefício adicional&#8221;. Se você precisa trocar conteúdo com um site parceiro e vocês forem os únicos usuários de RSS no mundo, terá valido a pena. Conforme a comunidade de usuários aumentava, o valor de ter RSS crescia. Muita gente começou a usar Bloglines e todo mundo queria entrar na festa.</p>
<p>Há alguns anos eu percorri o país com o pessoal da Locaweb comparando o modelo de adoção do RSS com o que eu imaginava que seriam os microformats. Eu estava errado. Pense um segundo no formato de reviews dos microformats. Qual o real benefício de usá-lo? Há alguma aplicação indispensável, onde você realmente quer estar, baseada em hReview? Para que você vai perder seu tempo?</p>
<p>Será que não estamos resolvendo o problema errado? Quando o Diego diz que bordas arredondadas são mais importantes que RDF, será que ele não tem razão? Para meus clientes, hoje, bordas arredondadas com CSS significam um site mais rápido, mais barato (menos tempo gasto recortando imagens) e, para os sites muito visitados, economia de banda. É uma diferença pequena, mas é uma vantagem. E RDF? Além de oferecer RSS, que nem vai ser lido como XML, o que eu posso fazer de real hoje com RDF para meus clientes?</p>
<p>Desculpe se meu raciocínio parece mesquinho. Ele é. Estou tentando ser realista. Uma das principais influências sobre as decisões humanas é a inércia, e não acredito que o mundo vá, num futuro próximo, adotar de maneira revolucionária o RDF ou mesmo o XHTML. Ainda acho essas idéias fantásticas, só não sei se são possíveis.</p>
<p>O realismo também me faz crer que a nova estratégia de especificações modulares do W3C é uma coisa boa. Sofremos décadas com implementações parciais do HTML 4 e do CSS 2. Agora vamos assumir a realidade inevitável. Os desenvolvedores de navegador se sentirão mais à vontade para dizer a você o que funciona ou não. E não precisamos esperar anos para a definição de um padrão. Podemos usar os recursos com os quais o consórcio já concordou hoje. Leva mesmo alguns anos para o W3C bater o martelo sobre determinado padrão, e as especificações modulares representam um ciclo de releases muito mais dinâmico.</p>
<p>Já temos um acordo sobre CSS Transform, bordas arredondadas, múltiplos backgrounds, repetição no DOM, validadores de formulários, SVG, DOM Storage, querySelectors e uma série de outros recursos legais. Por que esperar até a próxima Olimpíada para dizer aos desenvolvedores de browsers: &#8220;Ok, pessoal, fechamos tudo, HTML 5 e CSS 3 já são padrões, podem implementar&#8221;? De qualquer maneira, a adoção modular das especificações do W3C é inevitável. Embora a especificação tenha saído inteira, a adoção foi modular no HTML 3, no HTML 4, no CSS 2. Sabendo que não vai ser diferente mesmo, não é melhor que tenhamos bonitas tabelas de compatibilidade entre o que existe e o que cada navegador suporta?</p>
<p>Dá uma olhada na <a href="http://www.w3.org/Style/CSS/current-work">lista de módulos do CSS3</a>. Você não quer esperar isso tudo ficar pronto para ter bordas arredondadas.<br />
<h3> </h3>
<ul class="related_post">
<li><a href="http://www.tableless.com.br/o-caminho-suave-para-o-tableless" title="O Caminho Suave para o Tableless">O Caminho Suave para o Tableless</a></li>
<li><a href="http://www.tableless.com.br/o-que-etableless" title="O que é Tableless?">O que é Tableless?</a></li>
<li><a href="http://www.tableless.com.br/sobre-internet-explorer-para-mobile-breve-impressao" title="Sobre Internet Explorer para Mobile &#8211; Breve impressão">Sobre Internet Explorer para Mobile &#8211; Breve impressão</a></li>
<li><a href="http://www.tableless.com.br/nao-otimize-seu-codigo" title="Não &#8220;otimize&#8221; seu código">Não &#8220;otimize&#8221; seu código</a></li>
<li><a href="http://www.tableless.com.br/o-que-sao-media-types" title="O que são Media Types do CSS?">O que são Media Types do CSS?</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tableless.com.br/ah-o-maravilhoso-mundo-real/feed</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Prepare-se para a Revolução</title>
		<link>http://www.tableless.com.br/se-prepare-para-a-revolucao</link>
		<comments>http://www.tableless.com.br/se-prepare-para-a-revolucao#comments</comments>
		<pubDate>Wed, 02 Sep 2009 14:28:02 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML/XHTML]]></category>
		<category><![CDATA[Tecnologia e Tendências]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html 5]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[w3c]]></category>

		<guid isPermaLink="false">http://www.tableless.com.br/?p=1595</guid>
		<description><![CDATA[O W3C mudou. Isso vai modificar todo um fluxo de trabalho e a velocidade das implementações dos browsers e a forma com que os desenvolvedores trabalham.]]></description>
			<content:encoded><![CDATA[<p>O W3C mudou. O W3C foi criado exatamente para homologar, regularizar e criar novos padrões de publicação de informação na internet. O trabalho do W3C é exatamente criar caminhos para que os desenvolvedores e os fabricantes de browsers possam trilhar no futuro. Acontece que o W3C ficou tão grande, tão lerdo, tão aficcionado pelos problemas do futuro que acabou se perdendo nos seus próprios sonhos.</p>
<p>Um dos objetivos do W3C &#8211; se não o maior objetivo &#8211; é organizar toda a informação da internet. Para fazer isso, precisamos identificar toda essa informação de forma que a extração não seja complexa, pelo contrário, de maneira que a toda a informação que precisarmos possa ser extraída rapidamente, fácil e de qualquer tipo de dispositivo ou aplicação. Por isso, o W3C perdeu muito tempo criando padrões como RDF, por exemplo. Não desmerecendo essas tecnologias, que aliás são bem úteis para nos hoje. Mas cá entre nós, fazer bordas arredondadas para mim, hoje, é mais importante do que algumas necessidades de semântica.<br />
Alguns dos desenvolvedores, a grande maioria gringos, também tinham essa visão. A necessidade de grande parte dos desenvolvedores eram ter coisas simples como suporte a PNG, bordas arredondadas, resize de imagem no background, colocar várias imagens de backgrounds em um elemento, css animation, e assim por diante. Por isso, muitos desenvolvedores começaram reinvidicar uma alteração de prioridades. O HTML 5 surgiu daí. Muitos se enganam se acham que o HTML 5 foi idéia original do W3C. Ele surgiu de um grupo de inconformados de o HTML não ter a pelo menos 10 anos, uma nova atualização. Então começaram a estudar e a escrever um novo padrão para a linguagem. Isso surgiu de uma união de desenvolvedores da Apple (Safari/Webkit), Mozilla e Opera. Muitos se enganam também, se acham que só o W3C pode criar padrões. Você pode criar um. Se vai haver suporte da comunidade, do W3C e dos fabricantes de browsers, é outra história. Mas você tem todo o direito de criar.</p>
<p>O grupo do HTML 5, queria mudar. Eles estavam cansados de usar uma tecnologia antiga e começaram a fazer o trabalho que se esperava que o W3C fizesse. Por fim, essa iniciativa ganhou tanta popularidade e ajuda de outros desenvolvedores, que o W3C resolveu abraçar a idéia e hoje ele cuida desse padrão.<br />
O CSS3 também começou a aparecer por que o W3C abriu os olhos e resolveu começar a revolucionar a linguagem.</p>
<p>O W3C mudou. Os times que cuidam dessas linguagens foram divididas. Modularizadas. Deixe-me explicar. O CSS3 não será mais lançado de uma vez, <a href="http://www.w3.org/TR/css3-roadmap/#whymods">mas em módulos</a>. Há um time que cuidará da propriedade background. Outra que cuida da propriedade position, outra que cuida da propriedade border, e assim por diante. Isso possibilita que cada módulo, cada propriedade, cada parte do CSS seja lançado independentemente, acelerando o processo de suporte dos browsers e utilização pelos desenvolvedores. Logo, não há mais aquela história de “Browser tal não suporte CSS3”. Mentira, ele suporta, mas algumas das funcionalidades. A mesma coisa acontece com o HTML5. Dizem que o IE8 não suporta HTML 5, mas é mentira. Ele suporta partes do HTML 5. Já há vários módulos implementados no IE8, que fazem parte da especificação do HTML 5. Isso também acontece com os outros browsers.</p>
<p>A web vai ficar mais dinâmica agora. O CSS 3 e o HTML 5 vieram para separar o joio do trigo. Os designers não vão mais ficar pintando quadradinhos como antes. O CSS está virando uma linguagem visual de verdade. Há, por exemplo, working drafts de suporte a variáveis no CSS. E isto é só o começo.<br />
A mesma coisa para o HTML 5. A mudança das tags estruturais do HTML é apenas a ponta das novas possibilidades. Para o pessoal que achava que o HTML é coisa de criança, se prepare, porque o buraco, agora, é mais embaixo.<br />
<h3> </h3>
<ul class="related_post">
<li><a href="http://www.tableless.com.br/processos-adocao-padroes" title="Processos e Adoção de Padrões">Processos e Adoção de Padrões</a></li>
<li><a href="http://www.tableless.com.br/ah-o-maravilhoso-mundo-real" title="Ah, o maravilhoso mundo real">Ah, o maravilhoso mundo real</a></li>
<li><a href="http://www.tableless.com.br/lancado-firefox-3-5" title="Lançado Firefox 3.5">Lançado Firefox 3.5</a></li>
<li><a href="http://www.tableless.com.br/graceful-degradation-e-tudo-sobre-acessibilidade" title="Graceful degradation é tudo sobre Acessibilidade">Graceful degradation é tudo sobre Acessibilidade</a></li>
<li><a href="http://www.tableless.com.br/porque-so-para-o-iphone" title="Porque só para o iPhone?">Porque só para o iPhone?</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tableless.com.br/se-prepare-para-a-revolucao/feed</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>Efeito cascata, herança e especificidade do CSS</title>
		<link>http://www.tableless.com.br/efeito-cascata-e-especificidade-do-css</link>
		<comments>http://www.tableless.com.br/efeito-cascata-e-especificidade-do-css#comments</comments>
		<pubDate>Tue, 21 Jul 2009 13:30:40 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Na Prática]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[desenvolvimento web]]></category>
		<category><![CDATA[tecnicascss]]></category>

		<guid isPermaLink="false">http://www.tableless.com.br/?p=1495</guid>
		<description><![CDATA[O efeito cascata do CSS é controlado pela especificidade e pela herança das propriedades.]]></description>
			<content:encoded><![CDATA[<h4>Herança</h4>
<p>Existem algumas propriedades do CSS que quando aplicadas aos &#8220;elementos pais&#8221;, os &#8220;elementos filhos&#8221; herdam a característica aplicada no pai. Um exemplo disso é a propriedade <code>color</code>. Quando aplicamos a propriedade <code>color</code> em um elemento <code>div</code>, o texto dos elementos contidos no <code>div</code> são coloridos de acordo com a propriedade.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">div <span style="color: #00AA00;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">green</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>O texto que há dentro deste <code>div</code> irá ter a cor verde, independente se este texto está &#8220;solto&#8221; dentro do <code>div</code> ou se ele está dentro de um parágrafo, por exemplo. Ou seja, os filhos herdaram o resultado desta propriedade. A mesma coisa acontece para, por exemplo, a propriedade <code>font-size</code>.</p>
<p>Há também as propriedades não herdadas pelos &#8220;filhos&#8221;. Estas propriedades geralmente são propriedades referentes a formatação da caixa, como por exemplo a propriedade <code>width</code>, <code>height</code>, <code>margin</code>, <code>padding</code> e assim por diante.</p>
<p>Essa herança é responsável por uma parte da cascata. É aí que está uma das primeiras vantanges de se utilizar o CSS no desenvolvimento com padrões. A vantagem da herança é exatamente podermos modificar poucas linhas do CSS para fazer alterações no site inteiro, sem ter que caçar elemento por elemento e modificando suas propriedades.</p>
<p>A herança é largamente utilizada em frameworks de CSS ou até mesmo em técnicas para que a customização de layouts seja explorada de forma automática ou manual pelo cliente, como homes de portais, e-commerce etc. Assim, o controle fica mais genérico, e é aí que entra a especificidade do CSS para controlar o detalhe.</p>
<h5>O valor INHERIT</h5>
<p>O valor inherit é utilizada em propriedades destinadas aos elementos filhos. Suponha que você tem um elemento <code>div</code>. Este elemento <code>div</code> tem uma borda e você quer que seus filhos tenham a mesma borda. Veja o código:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;div id=&quot;pai&quot;&gt;
  &lt;div&gt;um filho&lt;/div&gt;
  &lt;div&gt;outro filho&lt;/div&gt;
&lt;/div&gt;</pre></td></tr></table></div>

<p>No CSS, o normal seria fazer isso:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">div<span style="color: #cc00cc;">#pai</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #993333;">solid</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
div<span style="color: #cc00cc;">#pai</span> div <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #993333;">solid</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Se você quisesse modificar a borda do pai e mesmo assim manter a borda do filho, teria que fazer das alterações no código.  O valor <code>inherit</code> serve para que o filho sempre herde um determinado valor de uma determinada propriedade do pai. Quando o valor do pai muda, o valor do filho também. Veja o código e o <a href="http://www.tableless.com.br/wp-content/uploads/2009/07/inherit.html" title="exemplo do valor inherit do CSS">exemplo. </a></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">div<span style="color: #cc00cc;">#pai</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #993333;">solid</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
div<span style="color: #cc00cc;">#pai</span> div <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">inherit</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h4>Especificidade</h4>
<p>A especificidade define os detalhes. Quando você define no <code>body</code> as propriedades <code>font-family</code>, <code>font-size</code>, essas propriedades são herdadas por toda árvore de elementos do documento. Isso tráz uma uniformidade para o texto, mas nem todos os elementos terão esse valor genérico de <code>font</code>, logo você terá que ser mais específico e definir valores diferentes de font para estes elementos. É aí que a mágica acontece.</p>
<p>Suponha que você tenha o seguinte código:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;div class=&quot;content&quot;&gt;
   &lt;p&gt;
        Vivamus in leo lacus. &lt;em&gt;Nam condimentum viverra odio&lt;/em&gt;, non molestie orci commodo sit amet. &lt;strong&gt;&lt;em&gt;Proin aliquet leo eu&lt;/em&gt;&lt;/strong&gt; ipsum adipiscing tristique vestibulum nunc gravida. In porta dignissim enim sit amet vulputate. Quisque lacinia malesuada convallis. Sed sit amet orci non lacus sollicitudin pellentesque. 
   &lt;/p&gt;
&lt;/div&gt;
   &lt;p&gt;
        Vivamus in leo lacus. &lt;em&gt;Nam condimentum viverra odio&lt;/em&gt;, non molestie orci commodo sit amet. &lt;strong&gt;&lt;em&gt;Proin aliquet leo eu&lt;/em&gt;&lt;/strong&gt; ipsum adipiscing tristique vestibulum nunc gravida. In porta dignissim enim sit amet vulputate. Quisque lacinia malesuada convallis. Sed sit amet orci non lacus sollicitudin pellentesque. 
   &lt;/p&gt;</pre></td></tr></table></div>

<p>E também o código CSS:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">em <span style="color: #00AA00;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Definimos no código acima que os elementos <code>em</code> terão o <code>background</code> vermelho. Isso irá capturar os 4 elementos <code>em</code> que colocamos no HTML. Correto? Ótimo. Estamos sendo bem genéricos aqui. Ele irá capturar todos os elementos <code>em</code>, não importa onde ele esteja. Vamos analisar outro código CSS:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">em <span style="color: #00AA00;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
div p em <span style="color: #00AA00;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">green</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Já mudamos toda a história com este seletor. Queremos dizer que apenas os <code>em</code> que estão dentro de <code>p</code> e que por sua vez estão dentro de um <code>div</code> terão o <code>background</code> verde. Deixamos a regra mais específica excluindo todos os elementos <code>em</code> que estão fora do <code>div</code>. Os <code>em</code> que estão fora do <code>div</code> continuam com o <code>background</code> vermelho.</p>
<p>No caso acima, a ordem não altera o resultado da renderização. O seletor mais específico sempre é o que vai funcionar.</p>
<p>Essa explicação é bem básica. Contudo, entendendo como ela funciona, você sabe o que acontece com seletores mais complexos.</p>
<h4>O valor !important</h4>
<p>A especificidade apresenta muitos problemas quando a equipe é grande e o código CSS está gigante. Você tenta fazer uma alteração em um determinado objeto, e nada funciona. Isso acontece porque alguém já definiu um seletor mais específico que o seu e definiu um valor diferente para sua propriedade, e isso te impede de fazer a alteração que precisa. Essa seria uma cena clássica, mas há outros cenários cujo o uso do valor <code>!important</code>.<br />
O <code>!important</code> indica que aquela propriedade sempre será a principal, e que nunca será substituída mesmo que o seletor seja mais complexo. Veja:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">p <span style="color: #00AA00;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
div p <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;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>No código acima, o parágrafo terá a cor vermelha por conta do seletor <code>div p</code> ser mais específico.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">p <span style="color: #00AA00;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">black</span> !important<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
div p <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;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Agora, mesmo o seletor <code>div p</code> sendo mais específico, ele não controlará o elemento. O <code>!important</code> está jogando toda a relevancia para o <code>color: black;</code>.<br />
Use com cuidado. Se você colocar muitos <code>!important</code> no seu código, a utilidade deste valor se perderá. <a href="http://www.tableless.com.br/wp-content/uploads/2009/07/important.html">Veja o exemplo</a>.<br />
<h3> </h3>
<ul class="related_post">
<li><a href="http://www.tableless.com.br/nth-child" title="nth-child">nth-child</a></li>
<li><a href="http://www.tableless.com.br/css3-columns" title="CSS 3 Columns">CSS 3 Columns</a></li>
<li><a href="http://www.tableless.com.br/produtividade-editores-e-snippets" title="Produtividade: editores e snippets">Produtividade: editores e snippets</a></li>
<li><a href="http://www.tableless.com.br/colocar-rodape-fixo-no-bottom" title="Colocar Rodapé fixo no fim da página">Colocar Rodapé fixo no fim da página</a></li>
<li><a href="http://www.tableless.com.br/referencias-online-css" title="Digest &#8211; Referências de CSS">Digest &#8211; Referências de CSS</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tableless.com.br/efeito-cascata-e-especificidade-do-css/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Digest &#8211; Referências de CSS</title>
		<link>http://www.tableless.com.br/referencias-online-css</link>
		<comments>http://www.tableless.com.br/referencias-online-css#comments</comments>
		<pubDate>Mon, 20 Jul 2009 19:45:42 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Digest]]></category>
		<category><![CDATA[Na Prática]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[aprenda]]></category>

		<guid isPermaLink="false">http://www.tableless.com.br/?p=1492</guid>
		<description><![CDATA[Uma listagem de algumas referências e lista de propriedades sobre propriedades do CSS.]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://meiert.com/en/indices/css-properties/">Lista de propriedades CSS mantida por Jens Meiert</a></li>
<li><a href="http://reference.sitepoint.com/css">Referência de CSS da SitePoint</a></li>
<li><a href="http://xhtml.com/en/css/reference/">Referência de CSS da XHTML.com</a></li>
<li><a href="http://www.tableless.com.br/compatibilidadecss/">Tabela de Compatibilidade de CSS (do Tableless)</a></li>
<li><a style="text-decoration: none;" href="http://www.tableless.com.br/referenciacss">Guia de Referência rápida do Tableless</a></li>
<li><a href="http://www.w3schools.com/CSS/CSS_reference.asp">Referência mantida pelo W3Schools</a></li>
</ul>
<h3> </h3>
<ul class="related_post">
<li><a href="http://www.tableless.com.br/efeito-cascata-e-especificidade-do-css" title="Efeito cascata, herança e especificidade do CSS">Efeito cascata, herança e especificidade do CSS</a></li>
<li><a href="http://www.tableless.com.br/nth-child" title="nth-child">nth-child</a></li>
<li><a href="http://www.tableless.com.br/css3-columns" title="CSS 3 Columns">CSS 3 Columns</a></li>
<li><a href="http://www.tableless.com.br/introducao-ao-css-animation" title="Introdução ao CSS Animation">Introdução ao CSS Animation</a></li>
<li><a href="http://www.tableless.com.br/video-menu-horizontal-em-5-minutos" title="Vídeo: Menu horizontal com CSS em 5 minutos">Vídeo: Menu horizontal com CSS em 5 minutos</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tableless.com.br/referencias-online-css/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nth-child</title>
		<link>http://www.tableless.com.br/nth-child</link>
		<comments>http://www.tableless.com.br/nth-child#comments</comments>
		<pubDate>Thu, 16 Jul 2009 16:52:12 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Na Prática]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[seletores]]></category>
		<category><![CDATA[tecnicascss]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.tableless.com.br/?p=1469</guid>
		<description><![CDATA[A pseudo-classe nth-child seleciona elementos dentre uma árvore de elementos se referindo a posição específica de cada um. Você pode por exemplo selecionar os elementos ímpares ou pares. ]]></description>
			<content:encoded><![CDATA[<p>Se você é um cara muito técnico, que adora matemática e números, prefiro que você <a href="http://www.w3.org/TR/css3-selectors/#nth-child-pseudo">leia a documentação do W3C</a> sobre <code>nth-child</code>. Ela é mais rica em detalhes sobre o cálculo que essa pseudo-classe faz. Este artigo é para os pobres mortais.</p>
<p>Você já precisou de criar uma tabela zebrada? Eu já, muitas vezes. Provavelmente se você não sabe programar, você precisa chamar um programador para escrever duas ou três linhas de código Javascript ou até mesmo usando JQuery, para fazer a mágica para você. A idéia do CSS, é que nós, designers, possamos controlar a aparência dos elementos HTML. Isso inclui conseguirmos fazer uma maldita tabela zebrada também. Para isso e para outros problemas parecidos, podemos utilizar a pseudo-classe <code>nth-child</code>. Com esta pseudo-classe é possível selecionar um determinado elemento dentro de uma árvore de elementos. Por exemplo, podemos selecionar todas as linhas ímpares das tabela. Legal, hein?</p>
<h4>Cálculo básico</h4>
<p>O cálculo utilizado pelo <code>nth-child</code> é bastante simples. Você vai usar na maioria das vezes soma. Lembra? A fómula será a seguinte: <em>an+b</em>.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">table tbody tr<span style="color: #3333ff;">:nth-</span>child<span style="color: #00AA00;">&#40;</span>2n<span style="color: #00AA00;">+</span><span style="color: #cc66cc;">1</span><span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span>lightgray<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>O funcionamento é o seguinte: o browser aplica o estilo a cada 2 <code>tr</code>.<br />
 O código abaixo, aplica o estilo a cada 3 <code>tr</code>. E assim por diante.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">table tbody tr<span style="color: #3333ff;">:nth-</span>child<span style="color: #00AA00;">&#40;</span>3n<span style="color: #00AA00;">+</span><span style="color: #cc66cc;">1</span><span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span>lightgray<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Você pode facilitar, utilizando as palavras <em>odd</em> ou <em>even</em>, para selecionar os elementos ímpares ou pares da árvore.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">table tbody tr<span style="color: #3333ff;">:nth-</span>child<span style="color: #00AA00;">&#40;</span>odd<span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span>lightgray<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Caso você queira pegar 9º, 19º, 29º e assim por diante:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">table tbody tr<span style="color: #3333ff;">:nth-</span>child<span style="color: #00AA00;">&#40;</span>10n-<span style="color: #cc66cc;">1</span><span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span>lightgray<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Se o valor de <em>a</em> (an+b) é igual 0, você não precisa colocar a fórmula, apenas o número referente a ordem do elemento. Exemplo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">table tbody tr<span style="color: #3333ff;">:nth-</span>child<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span>lightgray<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Neste código, o browser iá colorir o background apenas do primeiro <code>tr</code>. </p>
<p><a href="http://www.tableless.com.br/wp-content/uploads/2009/07/nth-child-ex1.html">Veja o exemplo.</a></p>
<p>A propriedade <code>nth-child</code> faz parte dos seletores do CSS 3 e já pode ser utilizado em browsers atuais.</p>
<p>Se você ainda não leu sobre seletores do CSS, leia estes artigos abaixo:</p>
<ul>
<li><a href="http://www.tableless.com.br/seletores-agrupados-e-encadeados">Seletores encadeados e agrupados</a></li>
<li><a href="http://www.tableless.com.br/pseudo-classes-css">Seletores do CSS &#8211; Pseudo-classes</a></li>
<li><a href="http://www.tableless.com.br/seletores-complexos-do-css">Seletores Complexos do CSS</a></li>
</ul>
<h3> </h3>
<ul class="related_post">
<li><a href="http://www.tableless.com.br/css3-columns" title="CSS 3 Columns">CSS 3 Columns</a></li>
<li><a href="http://www.tableless.com.br/efeito-cascata-e-especificidade-do-css" title="Efeito cascata, herança e especificidade do CSS">Efeito cascata, herança e especificidade do CSS</a></li>
<li><a href="http://www.tableless.com.br/introducao-sobre-media-queries" title="Introdução sobre Media Queries">Introdução sobre Media Queries</a></li>
<li><a href="http://www.tableless.com.br/colocar-rodape-fixo-no-bottom" title="Colocar Rodapé fixo no fim da página">Colocar Rodapé fixo no fim da página</a></li>
<li><a href="http://www.tableless.com.br/referencias-online-css" title="Digest &#8211; Referências de CSS">Digest &#8211; Referências de CSS</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tableless.com.br/nth-child/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>CSS 3 Columns</title>
		<link>http://www.tableless.com.br/css3-columns</link>
		<comments>http://www.tableless.com.br/css3-columns#comments</comments>
		<pubDate>Tue, 14 Jul 2009 01:50:39 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML/XHTML]]></category>
		<category><![CDATA[Na Prática]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[tecnicascss]]></category>

		<guid isPermaLink="false">http://www.tableless.com.br/?p=1457</guid>
		<description><![CDATA[O CSS3 facilitará muitas coisas, uma das possibilidades é a criação automatica de colunas em blocos de textos. Para tanto, utilizamos as propriedades de columns do CSS3.]]></description>
			<content:encoded><![CDATA[<p>Com o controle de colunas no CSS, podemos definir colunas de texto de forma automática. Até hoje não havia maneira de fazer isso de maneira inteligente com CSS e o grupo de propriedades <code>columns</code> pode fazer isso de maneira livre de gambiarras.</p>
<h4>column-count</h4>
<p>A propriedade <code>column-count</code> define a quantidade de colunas terá o bloco de textos.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"> <span style="color: #808080; font-style: italic;">/* Define a quantidade de colunas, a largura é definida uniformimente. */</span>
-moz-column-count<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span>
-webkit-column-count<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span></pre></td></tr></table></div>

<h4>column-width</h4>
<p>Com a propriedade <code>column-width</code> definimos a largura destas colunas.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* Define qual a largura mínima para as colunas. Se as colunas forem expremidas, fazendo com que a largura delas fique menor que este valor, elas se transformam em 1 coluna automaticamente */</span>
-moz-column-<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">400px</span><span style="color: #00AA00;">;</span> 
-webkit-column-<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">400px</span><span style="color: #00AA00;">;</span></pre></td></tr></table></div>

<p>Fiz alguns testes aqui e há uma diferença entre o Firefox 3.5 e o Safari 4 (Public Beta).<br />
O <code>column-width</code> define a largura mínima das colunas. Na <a href="http://www.w3.org/TR/css3-multicol/#cw">documentação do W3C</a> é a seguinte: imagine que você tenha uma área disponível para as colunas de 100px. Ou seja, você tem um div com 100px de largura (width). E você define que as larguras destas colunas (<code>column-width</code>) sejam de 45px. Logo, haverá 10px de sobra, e as colunas irão automaticamente ter 50px de largura, preenchendo este espaço disponível. É esse o comportamento que o Firefox adota.</p>
<p>Já no Safari, acontece o seguinte: se você define um <code>column-width</code>, as colunas obedecem esse valor e não preenchem o espaço disponível, como acontece na explicação do W3C e como acontece também no Firefox. Dessa forma faz mais sentido para mim. </p>
<p>Como a propriedade não está 100% aprovada ainda, há tempo para que isso seja modificado novamente. Talvez a mudança da nomenclatura da classe para <code>column-min-width</code> ou algo parecida venha a calhar, assim, ficamos com os dois resultados citados, que são bem úteis para nós de qualquer maneira.</p>
<h4>column-gap</h4>
<p>A propriedade <code>column-gap</code> cria um espaço entre as colunas, um gap.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"> <span style="color: #808080; font-style: italic;">/* Define o espaço entre as colunas. */</span>
-moz-column-gap<span style="color: #00AA00;">:</span> <span style="color: #933;">50px</span><span style="color: #00AA00;">;</span>
-webkit-column-gap<span style="color: #00AA00;">:</span> <span style="color: #933;">50px</span><span style="color: #00AA00;">;</span></pre></td></tr></table></div>

<p><a href='http://www.tableless.com.br/wp-content/uploads/2009/07/css3-columns.html'>Veja um exemplo destas propriedades aqui.</a>.</p>
<p>Utilizamos aqui os prefixos -moz- e -webkit-, estas propriedades não funcionam oficialmente em nenhum browser. Mas já podem ser usados em browsers como Firefox e Safari. Fique à vontade para testar e comentar aqui os resultados!<br />
<h3> </h3>
<ul class="related_post">
<li><a href="http://www.tableless.com.br/nth-child" title="nth-child">nth-child</a></li>
<li><a href="http://www.tableless.com.br/efeito-cascata-e-especificidade-do-css" title="Efeito cascata, herança e especificidade do CSS">Efeito cascata, herança e especificidade do CSS</a></li>
<li><a href="http://www.tableless.com.br/introducao-sobre-media-queries" title="Introdução sobre Media Queries">Introdução sobre Media Queries</a></li>
<li><a href="http://www.tableless.com.br/image-replacement-x-imagens" title="Image-Replacement x Imagens">Image-Replacement x Imagens</a></li>
<li><a href="http://www.tableless.com.br/o-que-sao-media-types" title="O que são Media Types do CSS?">O que são Media Types do CSS?</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tableless.com.br/css3-columns/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>
