<?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>Sun, 22 Aug 2010 03:29:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>HTML5 e seus companheiros</title>
		<link>http://www.tableless.com.br/html5-e-seus-companheiros</link>
		<comments>http://www.tableless.com.br/html5-e-seus-companheiros#comments</comments>
		<pubDate>Tue, 06 Jul 2010 12:05:22 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML/XHTML]]></category>
		<category><![CDATA[Tecnologia e Tendências]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[padroesweb]]></category>
		<category><![CDATA[tab]]></category>

		<guid isPermaLink="false">http://www.tableless.com.br/?p=1841</guid>
		<description><![CDATA[O HTML5 veio para mudar. Mas o HTML5 sozinho não faz verão. Por isso, é bom que saibamos que o CSS e o Javascript fazem boa parte do trabalho. ]]></description>
			<content:encoded><![CDATA[<p>Este artigo faz parte de uma pesquisa que fiz para o novo livro. Estou com o tempo bastante curto para diagramá-lo de forma adequada para um artigo, por isso ele pode parecer sem pé nem cabeça. <img src='http://www.tableless.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>A guerra entre os Padrões Web e tecnologias como o Flash começou de verdade.<br />
Desde o momento que as possibilidades do HTML5 e CSS3 foram publicadas, um pequeno burburinho entre os desenvolvedores sobre uma possível concorrência entre os Padrões e tecnologias como o Flash começou a rolar. Alguns desenvolvedores descrentes começaram a acreditar no poder das novas tecnologias para desenvolvimento web e novamente o HTML e o CSS tiveram a grande atenção de empresas e desenvolvedores.</p>
<p>Mesmo assim existem pontos que precisam ser esclarecidos. Muitos estão fazendo uma confusão com significados, objetivos e as reais soluções que essas novas tecnologias proporcionam:</p>
<ol>
<li>O HTML5 sozinho não faz nada além de dar significado à informação. Com ele, o CSS 3 e o Javascript completam o pacote para que todas essas mudanças que andamos lendo faça sentido de verdade. Mesmo com a midia fazendo um alarde muito grande em cima do HTML 5, uma boa parte das mágicas deve-se ao poder do CSS 3.<br />
Contudo o HTML5 está sendo totalmente reformulado para que haja mais integração entre o trio HTML, CSS e Javascript.</li>
<li>Os browsers são independentes, mas trabalham todos juntos em pról dos Padrões Web. Embora cada um deles tenham interesses financeiros óbvios, todos eles sabem que a única maneira de estar à frente do concorrente é andar lado à lado com os Padrões. O que basicamente diferencia um browser do outro são os serviços agregados, velocidade e facilidade de uso. Dificilmente um browser ganhará mercado se ele for super ultra compatível com os padrões. A não ser que a massa de usuários saiba o que isso signifiqueo ou que haja uma campanha muito forte, partindos dos desenvolvedores e empresas interessadas para evangelizar e educar os usuários finais.</li>
<li>Se você não começar a forçar o desenvolvimento da sua empresa para que os projetos sejam desenvolvidos focando browsers atuais, pra ficar para obsoleto. Daqui pra frente o mercado vai ficar cada vez mais dinâmico. Conforme os browsers vão se atualizando e o W3C libera novos padrões, você, seu cliente e seu projeto podem ficar para atrás. Por isso é interessante haver principios de Graceful Degradation nos projetos para que usuários de browsers mais atuais se beneficiem de um visual mais bem acabado, velocidade de carregamento da página e tecnologia atual. Entenda que eu não estou dizendo para criar projetos para um browser específico, mas limitar características visuais e funcionais de browsers mais antigos.</li>
</ol>
<p>O HTML foi criado por uma necessidade de compartilhar, interligar e portar informação.  Logo, o HTML precisa ser uma linguagem que possa ser lida pr qualquer meio de acesso. </p>
<p>O HTML 5 modifica a forma com que damos significado para a informação na web. Você está acostumado a escrever código para criar elementos que são renderizados pelo browser e lidos por diversos meios de acesso. Estes elementos tem seus respectivos significados. Para manipular estes elementos, você utiliza Javascript para controlar o CSS que formata as características deste objeto. Por mais que bibliotecas como JQuery sejam ótimas, a maneira que manipulamos o comportamento dos elementos não é a melhor. Existem diversas necessidades que não são resolvidas de uma maneira fácil ou que simplesmente não há solução. Além do HTML 5 renovar a forma com que atribuímos significado, ele nos dá ferramentas para facilitar a manipulação dos elementos.</p>
<p>Alguns desenvolvedores não entenderam as verdadeiras mudanças do HTML 5 e suas reais implicações sobre o desenvolvimento client-side. Saiba que o HTML 5 veio para estreitar as ligações entre o HTML, o CSS e o Javascript. Todos eles trabalharão mais integrados a partir de agora. Se acostume para ver pencas de código Javascript por aí. Isso é por conta das famosas APIs que o HTML 5 está trazendo.</p>
<h3> </h3>
<ul class="related_post">
<li><a href="http://www.tableless.com.br/apostila-sobre-html5" title="Apostila sobre HTML5">Apostila sobre HTML5</a></li>
<li><a href="http://www.tableless.com.br/html5-diff" title="HTML5 Diff">HTML5 Diff</a></li>
<li><a href="http://www.tableless.com.br/contedo-flash-e-html" title="Conte&#250;do, Flash e HTML">Conte&#250;do, Flash e HTML</a></li>
<li><a href="http://www.tableless.com.br/google-apps-nao-suportara-mais-ie6" title="Google Apps não suportará mais IE6">Google Apps não suportará mais IE6</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>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tableless.com.br/html5-e-seus-companheiros/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>@font-face &#8211; Fonts externas na web</title>
		<link>http://www.tableless.com.br/font-face-fonts-externas-na-web</link>
		<comments>http://www.tableless.com.br/font-face-fonts-externas-na-web#comments</comments>
		<pubDate>Tue, 30 Mar 2010 12:58:59 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[Tecnologia e Tendências]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[Na Prática]]></category>
		<category><![CDATA[tecnicascss]]></category>
		<category><![CDATA[tipografia]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.tableless.com.br/?p=1802</guid>
		<description><![CDATA[@font-face possibilita utilizar fonts externas em websites. Você já pode utilizar essa regra agora.]]></description>
			<content:encoded><![CDATA[<p>Tipografia na web sempre foi um sonho para todo designer para web. Alguns designers que trabalharam durante muito tempo com impressão estranham o tarbalhar com web por conta dessa limitação. A tipografia é parte importante na criação de peças gráficas e na web, isso não poderia ser diferente. Mesmo assim, não havia uma maneira &#8216;inteligente&#8217; de utilizar fonts externas na criação de layouts para web. Iniciativas como <a href="http://typekit.com/">TypeKit</a>e <a href="http://www.mikeindustries.com/blog/archive/2004/12/sifr-2.0-release-candidate-2">Sifr</a> quebram o galho mas não são o ideal.</p>
<p>@font-face é uma das funcionalidades mais esperadas do CSS. Ela permite que você utilize famílias de fonts em websites sem que o usuário tenha a font instalada no sistema. Veja abaixo a sintaxe:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #a1a100;">@font-face {</span>
     <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> helveticaneue<span style="color: #00AA00;">;</span>
     src<span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'HelveticaNeueLTStd-UltLt.otf'</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Na primeira linha você dá um nome para a Font que você está importando. Pode ser qualquer nome.<br />
Na segunda linha, você inclue o endereço de onde a font se encontra. Para facilitar, crie uma pasta font dentro da pasta onde está o CSS.</p>
<p>Feito isso, você a utiliza como qualquer outra font:</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;">p <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">font</span><span style="color: #00AA00;">:</span><span style="color: #933;">36px</span> helveticaneue<span style="color: #00AA00;">,</span> Arial<span style="color: #00AA00;">,</span> Tahoma<span style="color: #00AA00;">,</span> Sans-<span style="color: #993333;">serif</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Fiz alguns testes aqui e em algumas máquinas e conexões lerdas, o browser carrega primeiramente o texto com a font padrão do sistema e logo depois monta o texto com as fonts corretas. Nada de outro mundo para quem utiliza imagens para substituir textos. Mesmo assim, pode ser um incomodo para alguns.</p>
<p>Suponhamos que você queira oferecer a font para os que não a tem disponivel no sistema, mas para que o site carregue mais rápido, queira utilizar a cópia local do sistema do usuário caso ele a tenha instalado:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #a1a100;">@font-face {</span>
     <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> helveticaneue<span style="color: #00AA00;">;</span>
     src<span style="color: #00AA00;">:</span> local<span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">HelveticaNeueLTStd-UltLt.otf</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">,</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">HelveticaNeueLTStd-UltLt.otf</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>O valor <strong>local()</strong> faz com que o browser procure a font no computador do visitante antes de executar o download da font que está no servidor. </p>
<p>Abaixo segue uma série de formatos que podem ser usados e que os browsers podem adotar:</p>
<table>
<thead>
<tr>
<th>String</th>
<th>Font Format</th>
<th>Common extensions</th>
</tr>
</thead>
<tbody>
<tr>
<th>&#8220;truetype&#8221;</th>
<td>TrueType</td>
<td>.ttf</td>
</tr>
<tr>
<th>&#8220;opentype&#8221;</th>
<td>OpenType</td>
<td>.ttf, .otf</td>
</tr>
<tr>
<th>&#8220;truetype-aat&#8221;</th>
<td>TrueType with Apple Advanced Typography extensions</td>
<td>.ttf</td>
</tr>
<tr>
<th>&#8220;embedded-opentype&#8221;</th>
<td>Embedded OpenType</td>
<td>.eot</td>
</tr>
<tr>
<th>&#8220;svg&#8221;</th>
<td>SVG Font</td>
<td>.svg, .svgz</td>
</tr>
</tbody>
</table>
<h3>Compatibilidade</h3>
<p>A compatibilidade é melhor do que você pode imaginar. Mesmo assim há alguns entraves que chateiam. Entretando, se você pratica <a href="http://www.tableless.com.br/graceful-degradation-e-tudo-sobre-acessibilidade">Gracefull Degradation</a>, vai achar uma maravilha.</p>
<p>As versões 7, 8 e 9 do Internet Explorer aceitam o @font-face apenas se a font for EOT.<br />
Safari, Firefox, Chrome e Opera aceitam fonts em TTF e OTF.<br />
Você pode converter suas fonts para EOT diretamente no <a href="http://www.fontsquirrel.com/fontface/generator">Font Squirrel</a>. </p>
<p>É sempre bom você não abusar. Uma porque o design não fica bonito se você utilizar muitas fonts diferentes. Outra que o site pode ficar carregado. Lembre-se que o browser carrega o arquivo da font para só assim aplicar no layout.</p>
<p><a href="http://www.tableless.com.br/wp-content/uploads/2010/03/fonface.html">Veja um exemplo pronto.</a></p>
<h3>Fonts pagas</h3>
<p>O principal problema com o @font-face o download de font ilegal. Há uma pancada de fonts que são grátis, estas não há problema. Mas há uma outra grande parte que são pagas. O problema é que você tem a licensa de utilizar essa font nos seus projetos, mas não tem o direito de compartilhá-la ou dar para alguém. Quando você utiliza @font-face, você praticamente disponibiliza para o mundo o arquivo da font. Qualquer um pode fazer o download sem problemas. Por isso, cuidado com a font que você utiliza. Certifique-se de que ela é uma font gratuita.</p>
<p><a href="http://www.w3.org/TR/css3-fonts/#the-font-face-rule">Leia mais direto da fonte.</a>lan<br />
<h3> </h3>
<ul class="related_post">
<li><a href="http://www.tableless.com.br/contedo-flash-e-html" title="Conte&#250;do, Flash e HTML">Conte&#250;do, Flash e HTML</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/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/nth-child" title="Propriedade do CSS: nth-child">Propriedade do CSS: nth-child</a></li>
<li><a href="http://www.tableless.com.br/css3-columns" title="CSS 3 Columns">CSS 3 Columns</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tableless.com.br/font-face-fonts-externas-na-web/feed</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<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>16</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>6</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>27</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>36</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>51</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="Propriedade do CSS: nth-child">Propriedade do CSS: 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>18</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="Propriedade do CSS: nth-child">Propriedade do CSS: 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>
	</channel>
</rss>
