<?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>Tableless &#187; Browsers</title>
	<atom:link href="http://tableless.com.br/categoria/browsers/feed/" rel="self" type="application/rss+xml" />
	<link>http://tableless.com.br</link>
	<description>Tableless - Desenvolvimento inteligente com padrões web</description>
	<lastBuildDate>Fri, 18 May 2012 12:22:56 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Dicas de sobrevivência em uma era pós o IE6</title>
		<link>http://tableless.com.br/dicas-de-sobrevivencia-ie6/</link>
		<comments>http://tableless.com.br/dicas-de-sobrevivencia-ie6/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 12:30:52 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Client-Side]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[Na Prática]]></category>
		<category><![CDATA[2012]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[desenvolvimento web]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[internet explorer]]></category>

		<guid isPermaLink="false">http://tableless.com.br/?p=5864</guid>
		<description><![CDATA[Confira algumas propriedades importantes do CSS que você não podia usar no IE6, mas pode usar hoje no IE7 ou superior.]]></description>
			<content:encoded><![CDATA[<p>Nós ficamos mal acostumados com o Internet Explorer 6&#8230; Digo isso por que tinhamos tantos problemas e limitações no tempo em que precisávamos suportá-lo, que até hoje nos privamos de algumas técnicas e propriedades do CSS que funcionam plenamente no IE8 e nos IEs mais novos. Quero confessar que eu estava até esses dias eu era prisioneiro da sombra do IE6.</p>
<p>Por isso, aqui vão algumas dicas de propriedades que você já deve conhecer, mas que não usa ainda por que acha que todos os IEs são iguais ao maldito IE6.</p>
<h3>:after</h3>
<p>Você deve usar alguma técnica de <strong>clearfix</strong> que você criou ou que você pegou de algum lugar. Eu usava muito jquery para criar um elemento vazio dinamicamente no final do elemento que necessita do clearfix para fazê-lo parar de sofrer influência dos floats dos elementos. Essa técnica aqui pode salvar sua vida:</p>
<div class="codecolorer-container css mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">div<span style="color: #3333ff;">:after </span><span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">content</span><span style="color: #00AA00;">:</span><span style="color: #ff0000;">&quot; &quot;</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">block</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">clear</span><span style="color: #00AA00;">:</span><span style="color: #993333;">both</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>O <strong>content</strong> pode ser usado para uma série de outras coisas, como por exemplo inserir um ícone, objeto ou até texto depois de um determinado elemento.</p>
<p>Nesse caso o IE7 fica de fora.</p>
<h3>first-child</h3>
<p>Sim. O First-child funciona no IE7 ou superior. Mas o last-child não. Sem chance.<br />
Isso já acaba com aqueles problemas de alinhamento de elementos em linha, onde você precisa tirar a margin, padding ou border do último (ou o primeiro) elemento para que eles fiquem alinhados corretamente.</p>
<div class="codecolorer-container css mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">div<span style="color: #3333ff;">:first-child </span><span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">margin-left</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">padding-left</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">border-left</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<h3>Seletores complexos</h3>
<p>Olha só que maravilha, o IE7+ já suporta alguns <a href="http://tableless.com.br/seletores-complexos-do-css/" target="_blank">seletores complexos</a> como os descritos abaixo:</p>
<table summary="lista de seletores complexos">
<thead>
<tr>
<th>Seletor</th>
<th>Descrição</th>
</tr>
</thead>
<tbody>
<tr>
<td>input[type="text"]</td>
<td>Seleciona o elemento INPUT com o atributo TYPE cujo valor seja exatamente o valor TEXT</td>
</tr>
<tr>
<td>a[title]</td>
<td>Seleciona o elemento <strong>a</strong> que contenha o atributo <strong>type</strong>não importando o valor.</td>
</tr>
<tr>
<td>a[href$=html]</td>
<td>Seleciona elementos com atributos cujo seu valor temine com… Por exemplo, você poderia querer selecionar todos os links que apotam para um arquivo .pdf, ou .php etc.</td>
</tr>
<tr>
<td>a[href^="http://tableless.com.br/"]</td>
<td>Seleciona elementos com o atributos que comecem com… Você pode querer selecionar apenas os links que apontem para um site específico, por exemplo.</td>
</tr>
<tr>
<td>a[title~="tableless"]</td>
<td>Seleciona os elementos cujo o atributo tenha um valor que seja separado por espaços. No exemplo acima ele seleciona um link que contenha o atributo title e que em seu valor tenha a palavra “tableless” no meio.</td>
</tr>
<tr>
<td>a[hreflang|="pt"]</td>
<td>Seleciona o elemento <strong>a</strong> cujo o valor do atributo <strong>hreflang</strong> comece com PT. Ou seja valores como “pt-br” serão encontrados.</td>
</tr>
<tr>
<td>a[href="http://tableless.com.br/"]</td>
<td>Seleciona o elemento <strong>a</strong> cujo o valor do atributo <strong>href</strong> seja exatamente <b>http://tableless.com.br/</b>.</td>
</tr>
<tr>
<td>a[title*="artigo"]</td>
<td>Seleciona os elementos <strong>a</strong> cujo o valor tenha pelo menos uma ocorrência com a palavra “artigo”.</td>
</tr>
</tbody>
</table>
<p>Todos eles funcionam no IE7 ou superior. Só com estes seletores já economizamos uma penca de código Javascript.</p>
<h3>:first-letter e :first-line</h3>
<p>Formatar a primeira letra do parágrafo ou a primeira linha. Coisa linda.</p>
<div class="codecolorer-container css mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">p<span style="color: #3333ff;">:first-letter </span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">30px</span><span style="color: #00AA00;">;</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><br />
p<span style="color: #3333ff;">:first-line </span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span><span style="color: #993333;">bold</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<h3>word-wrap</h3>
<p>Essa propriedade é utilíssima. Você já deve ter escrito uma palavra muito grande ou uma URL, que geralmente não tem espaços, o que ocasionou da string ultrapassar a largura do objeto. A propriedade <strong>word-wrap</strong> faz com que essas strings muito grandes quebrem de linha assim que atingirem o limite do objeto.</p>
<div class="codecolorer-container css mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">p <span style="color: #00AA00;">&#123;</span>word-wrap<span style="color: #00AA00;">:</span> break-word<span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Essa propriedade funciona desde o IE5. O.o</p>
<h3>max-height/width e min-height/width</h3>
<p>Essas aqui são essências para produzirmos layouts fluidos e responsivos. Funcionam a partir do IE7.</p>
<div class="codecolorer-container css mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">div <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">min-width</span><span style="color: #00AA00;">:</span><span style="color: #933;">200px</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/** largura mínima **/</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">max-width</span><span style="color: #00AA00;">:</span><span style="color: #933;">500px</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/** largura máxima **/</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">min-height</span><span style="color: #00AA00;">:</span><span style="color: #933;">150px</span><span style="color: #00AA00;">;</span> &nbsp;<span style="color: #808080; font-style: italic;">/** altura mínima **/</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">max-height</span><span style="color: #00AA00;">:</span><span style="color: #933;">300px</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/** altura máxima **/</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<h2>Tabela de referência</h2>
<p>O MSDN guarda uma <a href="http://msdn.microsoft.com/en-us/library/cc351024(v=vs.85).aspx#elementselectors" target="_blank">tabela de compatibilidade muito completa com propriedades do CSS</a> que os IEs suportam ou não. Vale a pena dar uma olhada e entender melhor o que você já pode usar nativamente do CSS em vez de sair escrevendo loucamente soluções JQuery.</p>
<h3  class="related_post_title">Posts Relacionados</h3><ul class="related_post"><li><a href="http://tableless.com.br/ferramentas-de-diagnostico/" title="Ferramentas de diagnóstico">Ferramentas de diagnóstico</a></li><li><a href="http://tableless.com.br/dev-ie6/" title="Desenvolvendo para IE6">Desenvolvendo para IE6</a></li><li><a href="http://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://tableless.com.br/ie8-o-sonho-nao-acabou/" title="IE8 &#8211; O sonho não acabou">IE8 &#8211; O sonho não acabou</a></li><li><a href="http://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></ul>]]></content:encoded>
			<wfw:commentRss>http://tableless.com.br/dicas-de-sobrevivencia-ie6/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>O browser que você amou odiar</title>
		<link>http://tableless.com.br/o-browser-que-voce-amou-odiar/</link>
		<comments>http://tableless.com.br/o-browser-que-voce-amou-odiar/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 10:57:58 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[2012]]></category>
		<category><![CDATA[internet explorer]]></category>

		<guid isPermaLink="false">http://tableless.com.br/?p=5813</guid>
		<description><![CDATA[O Internet Explorer só serve para uma coisa: baixar outros browsers. Veja a mais nova campanha da Microsoft.]]></description>
			<content:encoded><![CDATA[<p>A Microsoft tem feito um esforço fenomenal para que os usuários mantenham seu Internet Explorer atualizado. Começou com a sensacional campanha <a href="http://www.ie6countdown.com/">IE6 Countdown</a> e alguns outros esforços mais diretos em blogs da compania e agora com a mais nova campanha chamada <a href="http://browseryoulovedtohate.com/?utm_source=TablelessComBr&#038;utm_medium=Post&#038;utm_campaign=TablelessComBr&#038;utm_nooverride=1">The Browser You Loved to Hate</a>.</p>
<p>O vídeo conta a história de um cara que faz de tudo para que os usuários não utilizem a velha versão do Internet Explorer, fazendo com que isso se torne um vício. Ele diz que os IEs antigos servem para apenas uma coisa: &#8220;baixar outros browsers&#8221;. Hell yeah! <img src='http://tableless.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </p>
<p>A Microsoft tem promovido o IE9 por que é o IE que mais se adequa ao padrões web até agora. O IE10 é muito melhor, mas ainda não está nas prateleiras e provavelmente vai ser lançado de verdade somente com o Windows 8. O IE10 fica no páreo com os browsers mais atuais como Chrome, Firefox e Safari, mas o IE9 está fazendo um ótimo trabalho também e não dá tanta dor de cabeça como as versões antigas do browser.</p>
<p>Veja o vídeo e divirta-se. <img src='http://tableless.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><iframe width="720" height="396" src="http://www.youtube.com/embed/4DbgiOCTQts" frameborder="0" allowfullscreen></iframe></p>
<h3  class="related_post_title">Posts Relacionados</h3><ul class="related_post"><li><a href="http://tableless.com.br/dicas-de-sobrevivencia-ie6/" title="Dicas de sobrevivência em uma era pós o IE6">Dicas de sobrevivência em uma era pós o IE6</a></li><li><a href="http://tableless.com.br/schema-marcacao-de-dados-estruturados/" title="Schema &#8211; Marcação de dados estruturados">Schema &#8211; Marcação de dados estruturados</a></li><li><a href="http://tableless.com.br/seu-lugar-ao-sol/" title="Seu lugar ao sol">Seu lugar ao sol</a></li><li><a href="http://tableless.com.br/prefixos-dos-browsers-a-web-precisa-de-voce/" title="Prefixos dos browsers: A web precisa de você">Prefixos dos browsers: A web precisa de você</a></li><li><a href="http://tableless.com.br/google-chrome-para-android/" title="Google Chrome para Android">Google Chrome para Android</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tableless.com.br/o-browser-que-voce-amou-odiar/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Google Chrome para Android</title>
		<link>http://tableless.com.br/google-chrome-para-android/</link>
		<comments>http://tableless.com.br/google-chrome-para-android/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 13:05:08 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[2012]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[mobiles]]></category>

		<guid isPermaLink="false">http://tableless.com.br/?p=5472</guid>
		<description><![CDATA[Versão do browser Chrome para Android.]]></description>
			<content:encoded><![CDATA[<p><iframe width="720" height="396" src="http://www.youtube.com/embed/lVjw7n_U37A" frameborder="0" allowfullscreen></iframe></p>
<p>O Google acaba de lançar o <a href="http://chrome.blogspot.com/2012/02/introducing-chrome-for-android.html">Google Chrome para Android</a>. Antes que você fique todo alegre, o Chrome para Android só está disponível para os usuários do Ice Cream Sandwich ou tablets. Ele é baseado na simplicidade do Chrome para desktops, prometendo a experiência de navegação. </p>
<p>Eles reimaginaram o uso de tabs para os mobiles, e nas tablets a utilização as tavs ficaram similares com o Chrome para Desktops. Temos também incluído nessa versão mobile o famoso &#8220;Porn mode&#8221; ou o Incognito, que é o modo de navegação privativa.</p>
<p><a href="http://tableless.com.br/wp-content/uploads/2012/02/Tablet-phone-YT-G-Maps.png"><img src="http://tableless.com.br/wp-content/uploads/2012/02/Tablet-phone-YT-G-Maps.png" alt="" title="Tablet-phone-YT-G-Maps" width="720" height="346" class="alignnone size-full wp-image-5474" /></a></p>
<p>O Google Chrome para Android ainda está em fase beta e você pode <a href="https://market.android.com/details?id=com.android.chrome">baixá-lo no MarketPlace</a> mais próximo.</p>
<p>Uma boa notícia para toda a comunidade de desenvolvimento web mobile. A briga fica acirrada entre os sistemas. O que é bom para nós e para os usuários. Agora oremos para que o IE10 para Windows Phone saia logo, o que eu duvido. Acho que ele somente virá com o Windows Phone 8. Entretanto temos um ótimo cenário quando falamos sobre browsers para mobiles.</p>
<h3  class="related_post_title">Posts Relacionados</h3><ul class="related_post"><li><a href="http://tableless.com.br/dicas-de-sobrevivencia-ie6/" title="Dicas de sobrevivência em uma era pós o IE6">Dicas de sobrevivência em uma era pós o IE6</a></li><li><a href="http://tableless.com.br/schema-marcacao-de-dados-estruturados/" title="Schema &#8211; Marcação de dados estruturados">Schema &#8211; Marcação de dados estruturados</a></li><li><a href="http://tableless.com.br/o-browser-que-voce-amou-odiar/" title="O browser que você amou odiar">O browser que você amou odiar</a></li><li><a href="http://tableless.com.br/seu-lugar-ao-sol/" title="Seu lugar ao sol">Seu lugar ao sol</a></li><li><a href="http://tableless.com.br/prefixos-dos-browsers-a-web-precisa-de-voce/" title="Prefixos dos browsers: A web precisa de você">Prefixos dos browsers: A web precisa de você</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tableless.com.br/google-chrome-para-android/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Utilizando APPs em vez de browsers</title>
		<link>http://tableless.com.br/utilizando-apps-em-vez-de-browsers/</link>
		<comments>http://tableless.com.br/utilizando-apps-em-vez-de-browsers/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 11:00:35 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[Acessibilidade]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Internet Móvel]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[Tecnologia e Tendências]]></category>
		<category><![CDATA[2012]]></category>
		<category><![CDATA[acessibilidade]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[dispositivos moveis]]></category>
		<category><![CDATA[navegadores]]></category>
		<category><![CDATA[tecnicascss]]></category>

		<guid isPermaLink="false">http://tableless.com.br/?p=5117</guid>
		<description><![CDATA[Existem mais pessoas utilizando Apps para acessar conteúdo do que Browsers.]]></description>
			<content:encoded><![CDATA[<p>De acordo com a <a href="http://www.comscore.com/Press_Events/Press_Releases/2011/12/comScore_Reports_November_2011_U.S._Mobile_Subscriber_Market_Share?utm_source=TablelessComBr&#038;utm_medium=link&#038;utm_campaign=Post">comScore</a> as pessoas estão usando mais mobile Apps para consumir conteúdo do que browsers.</p>
<p>O tráfego medido pela comScore mostra o market share dos principais players do mercado de mobile em Novembro. O Android continua ganhando, logo atrás vem o iPhone que foi impulsionado pelas vendas do 4S. Todas as outras plataformas perderam campo. Outra coisa, o report da comScore não conta com iPads nem iPods.</p>
<p>Os mobiles Android represetam algo em torno de 47% e o iPhone 30%.</p>
<p><img src="http://tableless.com.br/wp-content/uploads/2012/01/Screen-Shot-2012-01-05-at-10.24.17-AM.png" alt="" title="Screen Shot 2012-01-05 at 10.24.17 AM" width="456" height="271" class="alignnone size-full wp-image-5123" /></p>
<p><img src="http://tableless.com.br/wp-content/uploads/2012/01/Screen-shot-2011-12-29-at-2.03.27-PM.png" alt="" title="Screen-shot-2011-12-29-at-2.03.27-PM" width="514" height="270" class="size-full wp-image-5118"></p>
<p>O mais importante são os números abaixo que mostram o uso de conteúdo por estes dispositivos pelos usuários:<br />
<img src="http://tableless.com.br/wp-content/uploads/2012/01/Screen-shot-2011-12-29-at-2.10.55-PM.png" alt="" title="Screen-shot-2011-12-29-at-2.10.55-PM" width="490" height="325" class="size-full wp-image-5119" /></p>
<p>Acho que pouquíssimas pessoas, mesmo nos seus computadores, entram no site do Twitter para escrever em vez de usar algum App, não é verdade? Mesmo assim acho que o futuro não estão nos Apps. Eles sempre ficarão lá, firmes e fortes, mas aos poucos muitas empresas irão reformular seus sistemas web para ficar o mais parecido possível com as apps. Esse é o mais inteligente já que você não precisa reprogramar tudo novamente como é feito hoje. A mudança do CSS será o trabalho mais importante nesse caso, já que a interface &#8220;precisa&#8221; ser diferente em cada um aparelhos.<br />
Na verdade não precisa&#8230; Mas é bom manter a interface nativa de cada um dos aparelhos para que os usuários não estranhem a utilização. Não seria bom que a interface do twitter no Windows Phone fosse igual a do iPhone ou a do Android. Confunde bastante. Não, é?</p>
<p>Só uma observação: estes números refletem a realidade lá dos states, ok? Provavelmente esse comportamento pode ser multiplicado em outros países, como aqui.</p>
<h3  class="related_post_title">Posts Relacionados</h3><ul class="related_post"><li><a href="http://tableless.com.br/qualidade-de-imagens-e-densidade-de-pixels/" title="Qualidade de Imagens e densidade de pixels">Qualidade de Imagens e densidade de pixels</a></li><li><a href="http://tableless.com.br/responsive-web-design-voce-esta-fazendo-isso-errado/" title="Responsive Web Design &#8211; focando a coisa certa">Responsive Web Design &#8211; focando a coisa certa</a></li><li><a href="http://tableless.com.br/um-pensamento-sobre-design-para-web/" title="Um pensamento sobre design para web">Um pensamento sobre design para web</a></li><li><a href="http://tableless.com.br/experiencia-cross-device/" title="Experiência cross-device">Experiência cross-device</a></li><li><a href="http://tableless.com.br/simuladores-de-browsers-mobiles/" title="Simuladores de Browsers Mobiles">Simuladores de Browsers Mobiles</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tableless.com.br/utilizando-apps-em-vez-de-browsers/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Mobile First &#8211; A arte de pensar com foco</title>
		<link>http://tableless.com.br/mobile-first-a-arte-de-pensar-com-foco/</link>
		<comments>http://tableless.com.br/mobile-first-a-arte-de-pensar-com-foco/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 15:30:26 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[Acessibilidade]]></category>
		<category><![CDATA[Artigos]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[Internet Móvel]]></category>
		<category><![CDATA[Tecnologia e Tendências]]></category>
		<category><![CDATA[Usabilidade]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[acessibilidade]]></category>
		<category><![CDATA[aprenda]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[internetmovel]]></category>
		<category><![CDATA[mobilidade]]></category>
		<category><![CDATA[usabilidade]]></category>

		<guid isPermaLink="false">http://tableless.com.br/?p=4669</guid>
		<description><![CDATA[Os dispositivos móveis estão tomando conta do mundo. Sendo assim, o que você acha de pensarmos nos dispositivos móveis antes de pensarmos nos desktops?]]></description>
			<content:encoded><![CDATA[<p>Durante muito tempo especialistas de diversas áreas previram o crescimento do uso dos dispositivos móveis. Demorou um pouco mas a previsão se tornou verdadeira. Hoje todo mundo carrega um pedaço de plástico com uma tela de vidro na mão o dia inteiro&#8230; quase uma extensão de nossos corpos.</p>
<p>Os dispositivos móveis se tornaram uma febre e vieram para ficar. É a melhor forma de fazer a inclusão digital para aqueles que não tem uma forma de ter um notebook ou um desktop em casa. Não estou falando daqueles smartphones de R$1500, mas dos muitos smartphones, com teclados qwerty, prontos para internet e que custam R$200. Isso sim  é inclusão digital para as massas de verdade.</p>
<h3>Alguns números</h3>
<p>As <a href="http://tech.fortune.cnn.com/2011/02/07/idc-smartphone-shipment-numbers-passed-pc-in-q4-2010/">vendas de smartphones já passaram as de PCs</a>. A utilização de emails pelos dispositivos móveis aumentou em 36%. Sem contar que <a href="http://news.bango.com/2010/02/16/600-percent-growth-in-mobile-web-usage/">o tráfego de visitação de websites utilizando smartphones cresceu 600% em 2010</a>!</p>
<p>O Paypal tempos atrás recebia algo em torno de $10 Milhões de dólares em pagamentos via mobiles. Por dia! <a href="http://prowireless.com.au/paypal-mobile-payments">Eles tem uma predição de movimentar algo em torno de 6 Bilhões só este ano</a>! E em 2016 serão $31 Bilhões!</p>
<p>As perspectivas globais são enormes. Abaixo, veja um inforgráfico que o blog <a href="http://www.plexical.com/blog/2011/09/29/mobile-first-mobile-only/">The Meta Cloud</a> preparou. Cuidado para não se assustar.</p>
<p><a href="http://www.plexical.com/blog/wp-content/uploads/2011/09/mobile-first-mobile-only.pdf"><img src="http://tableless.com.br/wp-content/uploads/2011/12/mobile-first-mobile-only.png" alt="" title="mobile-first-mobile-only" width="570" height="902" class="alignnone size-full wp-image-4704" /></a></p>
<h3>O conceito</h3>
<p>Você consegue entender estes números? Se sim, você vai entender que o conceito do Mobile First faz muito sentido, mas vai contra toda uma tradição de desenvolvimento de sites que você está acostumado. A ideia do Mobiles First é que comecemos a desenvolver e planejar projetos web, desde um pequeno site até um grande sistema, primeiramente para dispositivos móveis e somente depois para desktops/notebooks.</p>
<h4>Algumas vantagens</h4>
<p>Se o mundo inteiro está passando mais tempo acessando a internet com dispositivos móveis, não é muito sensato pensarmos primeiramente em fazermos sites para desktops/notebooks, não é? O fato é que ao colocar os mobiles primeiro lugar, desfrutamos de uma série de vantagens:</p>
<ul>
<li><strong>As capacidades técnicas são mais interessantes.</strong> Com o mobiles você pode brincar com o acelerometro, GPS, multitouch, giroscópio e etc. Isso amplia a experiência do usuário para um patamar que o desktop nunca terá. </li>
<li><strong>Foco.</strong> Quem já teve que adaptar um site para mobiles entende que informação demais prejudica. Se focar nas ações essenciais que o usuário executará ao acessar seu site com um dispositivo móvel é o básico.</li>
<li><strong>A atenção em áreas como Arquitetura de Informação, Usabilidade e Acessibilidade é aumentada.</strong> Em mobiles, decidir onde cada botão vai ser posicionado é tão essencial quanto a programação server-side ou um HTML bem feito. </li>
<li><strong>Te prepara para outros cenários.</strong> Fazer sites mobile é só o primeiro passo. Mas e os grandes formatos como SmartTVs ou outros dispositivos? Não vai demorar muito para acessarmos a internet de qualquer dispositivo sem bloqueios ou restrições. </li>
</ul>
<h3>O design</h3>
<p>O design também precisa ser revisto. Na verdade, o design mais do que nunca conta com as respostas e os conceitos de AI, Acessibilidade e Usabilidade. Se antes fazíamos festa porque a resolução dos desktops aumentaram e agora temos mais espaço para trabalharmos, nos mobiles o cenário é completamente o contrário.</p>
<h4>Arquitetura de Informação</h4>
<p>As informações que você previa no desktop precisam ser remanejadas, diminuidas e retrabalhadas para que se adaptem nas telas menores. A maioria dos celulares tem algo em torno de 320&#215;480 pixels. Se não tomarmos cuidado, toda a informação pode se perder em uma tela tão pequena. No mundo mobile o simples é a palavra que manda.</p>
<p>Você pode perceber que alguns websites conseguiram resolver bem seus problemas de excesso de informação promovendo em seus websites mobiles apenas as ações realmente importantes e dando foco ao conteúdo que provavelmente o usuário irá consumir quando estiver utilizando um pequeno dispositivo. </p>
<p>Se você é usuário do Flickr, conhece aquele bando de opções que ele guarda em seu menu principal. São centenas de opções e ações que certamente não cabem em uma tela tão pequena.</p>
<p><img src="http://tableless.com.br/wp-content/uploads/2011/12/flickr1.png" alt="screenshot da tela do site do Flickr versão desktop"></p>
<p>Um estudo profundo certamente deve ser feito para que você saiba exatamente quais informações e ações serão mais úteis na versão mobile.</p>
<p><a href="http://m.flickr.com/"><img src="http://tableless.com.br/wp-content/uploads/2011/12/flickr2.png" alt="screenshot da tela do site do Flickr versão mobile"></a></p>
<h4>Mantendo informações importantes</h4>
<p>Existem também outras formas de acomodar um grande número de informações sem que isso atrapalhe o usuário. Uma delas é criando menus dropdown ou separando uma tela que guarda as informações que serão menos utilizadas mas que são igualmente importantes para a utilização do site/sistema. Veja abaixo dois bons exemplos vindo dos sites Gmail e ESPN.</p>
<p><a href="http://tableless.com.br/wp-content/uploads/2011/12/gmail.gif"><img src="http://tableless.com.br/wp-content/uploads/2011/12/gmail.gif" alt="gmail versão mobile" title="gmail" width="640" height="417" class="alignnone size-full wp-image-4678" /></a></p>
<p><a href="http://tableless.com.br/wp-content/uploads/2011/12/espn.gif"><img src="http://tableless.com.br/wp-content/uploads/2011/12/espn.gif" alt="epsn.com versão mobile" title="espn" width="638" height="355" class="alignnone size-full wp-image-4677" /></a></p>
<p>Onde os usuários utilizam seus mobiles e visitam seu site? Bem, de todo lugar. Algumas pessoas acham que usuários utilizam apenas quando estão em filas, ônibus, parados no trânsito etc. Mas algumas pesquisas mostram que 84% dos usuários usam seus dispositivos em casa. Isso mesmo&#8230; em casa. Veja bem: quando as pessoas estão em casa, elas preferem utilizar seus smartphones em vez do notebook/desktop!<br />
62% utilizam enquanto assistem a TV. Até a TV perde atenção quando briga com os mobiles.</p>
<p>Não existem mais desculpas. Os browsers para mobiles estão tão modernos quanto os dos desktops. O hardware está muito mais poderoso, mais do que poderíamos imaginar a dois anos atrás. Existe um número gigante de usuários utilizando estes dispositivos, isso os torna potenciais visitantes e claro, compradores. Porque desperdiçar esta oportunidade?</p>
<p>Você pode <a href="http://www.abookapart.com/products/mobile-first">ler mais sobre este assunto neste livro</a> esperto escrito por <a href="http://www.lukew.com/">LUKE WROBLEWSKI</a>. Aproveite!</p>
<h3  class="related_post_title">Posts Relacionados</h3><ul class="related_post"><li><a href="http://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://tableless.com.br/mobilidade-na-cabeca/" title="Mobilidade na cabeça">Mobilidade na cabeça</a></li><li><a href="http://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://tableless.com.br/browsers_em_dispositivos_moveis/" title="Browsers dos Dispositivos Móveis">Browsers dos Dispositivos Móveis</a></li><li><a href="http://tableless.com.br/responsive-web-design-voce-esta-fazendo-isso-errado/" title="Responsive Web Design &#8211; focando a coisa certa">Responsive Web Design &#8211; focando a coisa certa</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tableless.com.br/mobile-first-a-arte-de-pensar-com-foco/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Utilizando a Biblioteca Modernizr</title>
		<link>http://tableless.com.br/utilizando-a-biblioteca-modernizr/</link>
		<comments>http://tableless.com.br/utilizando-a-biblioteca-modernizr/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 13:52:28 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[Acessibilidade]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Client-Side]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Na Prática]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[acessibilidade]]></category>
		<category><![CDATA[aprenda]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[modernizr]]></category>
		<category><![CDATA[tecnicascss]]></category>

		<guid isPermaLink="false">http://tableless.com.br/?p=4431</guid>
		<description><![CDATA[Alguns browsers não aceitam as novas features de CSS3 e HTML5. Saiba como detectá-los e tratá-los com a biblioteca Modernizr.]]></description>
			<content:encoded><![CDATA[<h3>Problemas de compatibilidade</h3>
<p>Quando produzimos um site os problemas de compatibilidade fazem parte da regra do jogo. Para tentar contornar estes problemas utilizamos hacks, comentários condicionais, sniffing de browsers e outras coisas, que muitas vezes mais prejudicam do que ajudam.</p>
<p>Para ajudar mais ainda o CSS3 e o HTML5 apareceram derrubando tudo, e o problema de compatibilidade que já era chato, ficou mais chato que meia molhada. Embora os browsers estejam muito mais atuais e suportando propriedades avançadas de CSS3 e HTML5, não é garantia que todos eles suportem as mesmas propriedades. E é aqui que começamos a ter problemas novamente, como no passado. </p>
<p>Como você consegue reconhecer quem um determinado browser suporta CSS Animation? Como você sabe que o browser conhece LocalStorage do HTML5? Você não vai ficar olhando numa tabelinha toda vez que tiver essas dúvidas para fazer um visual ou uma solução alternativa para tais browsers.</p>
<p>É por essas e outras que você utilizará a Modernizr.</p>
<h3>O que é a Modernizr</h3>
<p>Modernizr é uma pequena biblioteca Javascript que detecta a disponibilidade das novas características do HTML5 e CSS3 nos browsers. Muitas destas características já estão implementadas nos browsers, mas é muito chato você decorar quais novidades os browsers já estão suportando. O que a Modernizr faz é simples: ela te diz quais features um determinado browser suporta e insere classes no HTML para que você possa utilizar para fazer uma versão alternativa de visual ou solução.</p>
<p>Entenda que a Modernizr não é um sniffing de browser. Ela é diferente. A Modernizr faz o trabalho de detectar das seguintes formas:</p>
<ul>
<li>Ela testa 40 features de CSS3 e HTML5 em alguns milisegundos.</li>
<li>Depois ela cria objetos javascript que contém os resultados destes testes.</li>
<li>Aí são adicionadas classes no elemento HTML descrevendo exatamente quais propriedades e novidades são ou não nativamente suportadas.</li>
<li>Depois disso você consegue ter os resultados descritos nos navegadores dinamicamente e então pode tomar decisões criando alternativas para aquelas propriedades não suportadas pelos browsers antigos.</li>
</ul>
<h3>Como funciona</h3>
<p>É simples: primeiro você baixa a versão mais atual da biblioteca no endereço <a href="http://www.modernizr.com/">http://www.modernizr.com/</a>. O interessante é que você tem a opção para personalizar a biblioteca, indicando quais features você quer que a Modernizr teste no seu projeto.</p>
<p>Depois você inclui esse pacote no seu HTML:</p>
<div class="codecolorer-container html4strict mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #00bbdd;">&lt;!DOCTYPE html&gt;</span><br />
<br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">html</span></a> <span style="color: #000066;">lang</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;pt-br&quot;</span>&gt;</span><br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/head.html"><span style="color: #000000; font-weight: bold;">head</span></a>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/meta.html"><span style="color: #000000; font-weight: bold;">meta</span></a> <span style="color: #000066;">charset</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;utf-8&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/title.html"><span style="color: #000000; font-weight: bold;">title</span></a>&gt;</span>Teste de Modernizr<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/title.html"><span style="color: #000000; font-weight: bold;">title</span></a>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">script</span></a> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;modernizr-2.0.6.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">script</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/head.html"><span style="color: #000000; font-weight: bold;">head</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold;">body</span></a>&gt;</span><br />
<br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold;">body</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">html</span></a>&gt;</span></div></td></tr></tbody></table></div>
<p>Feito isso, insira uma classe <em>no-js</em> no elemento <em>HTML</em>:</p>
<div class="codecolorer-container html4strict mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">html</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;no-js&quot;</span> <span style="color: #000066;">lang</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;pt-br&quot;</span>&gt;</span></div></td></tr></tbody></table></div>
<p>Quando a Modernizr rodar, ela irá substituir essa classe para uma <em>js</em> se o browser estiver com o Javascript ligado, já te dando um feedback para tomar alguma atitude se o usuário estiver com o Javascript desligado.</p>
<p>Junto com essa mudança são adicionadas outras classes, indicando o que o browser aceita nativamente ou o que ele não aceita. Ficará algo parecido com isso:</p>
<div class="codecolorer-container html4strict mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">html</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot; js flexbox canvas canvastext webgl no-touch geolocation postmessage websqldatabase no-indexeddb hashchange history draganddrop websockets rgba hsla multiplebgs backgroundsize borderimage borderradius boxshadow textshadow opacity cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions fontface generatedcontent video audio localstorage sessionstorage webworkers applicationcache svg inlinesvg smil svgclippaths&quot;</span> <span style="color: #000066;">lang</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;pt-br&quot;</span>&gt;</span></div></td></tr></tbody></table></div>
<p>O browser que eu utilizei é o Safari/Mac. Pelo visto ele aceita bastante coisa. <img src='http://tableless.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
O que o browser não aceita, a Modernizr insere uma classe com o prefixo <b>no-</b> antes da classe, por exemplo: no-boxshadow, no-geolocation, no-touch etc.</p>
<p>A Modernizr também cria um objeto Javascript contendo um valor booleano para cada uma dessas features, possibilitando a criação de testes. Um exemplo:</p>
<div class="codecolorer-container javascript mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Modernizr.<span style="color: #660066;">geolocation</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Aceita&quot;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Não Aceita&quot;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<h3>Exemplos de utilidade</h3>
<p>Exemplo bem básico: imagine que você queira utilizar o box-shadow em seu projeto. Browsers como o IE6,7,8 não reconhecem essa feature, então seria interessante darmos uma alternativa, como por exemplo, colocando uma borda em vez de sombra. Assim o elemento não fica tão diferente do que deveria.</p>
<p>Como a Modernizr colocou uma classe no elemento HTML referente a aceitação das features, podemos utilizá-la fazendo assim:</p>
<div class="codecolorer-container css mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #6666ff;">.loginBox</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; box-shadow<span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">10px</span> <span style="color: #933;">10px</span> rgba<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0.3</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<br />
<span style="color: #6666ff;">.no-boxshadow</span> <span style="color: #6666ff;">.loginBox</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#CCC</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">border-bottom</span><span style="color: #00AA00;">:</span> <span style="color: #933;">3px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#CCC</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Assim, se o browser não aceitar a propriedade box-shadow o usuário verá uma borda no lugar. Você pode fazer isso com praticamente qualquer nova feature do CSS3 e do HTML5. Uma <a href="http://bit.ly/oA9jHu" title="link externo">listagem completa dessas features suportadas está aqui</a>.</p>
<p>Ah, mais uma coisa: provavelmente você já utiliza um scriptzinho <em>html5.js</em> para fazer com o que os Internet Explorers reconheçam as tags do HTML5, correto? O Modernizr já faz isso automaticamente. Sugiro que pare de utilizar o html5.js e passe a utilizar a Modernizr somente.</p>
<p>A Modernizr facilita demais as coisas. A ideia é que você não prive seus projetos da utilização de features novas. A produção vai ficar mais eficaz e seu projeto sempre estará atualizado com as melhores práticas do mercado. Adote a Modernizr e seja feliz.</p>
<p>Sugiro que você <a href="http://www.modernizr.com/docs/" title="link externo para a documentação da Modernizr">dê uma lida na documentação</a> da Modernizr. Tem bastante coisa interessante lá que você deveria saber.</p>
<h3  class="related_post_title">Posts Relacionados</h3><ul class="related_post"><li><a href="http://tableless.com.br/css3-sombras-em-textos-e-elementos/" title="CSS3 &#8211; Sombras em textos e elementos">CSS3 &#8211; Sombras em textos e elementos</a></li><li><a href="http://tableless.com.br/multiplos-backgrounds-com-css/" title="Múltiplos backgrounds com CSS">Múltiplos backgrounds com CSS</a></li><li><a href="http://tableless.com.br/css3-abas-com-a-pseudo-classe-target/" title="CSS3 &#8211; Abas com a pseudo-classe :target">CSS3 &#8211; Abas com a pseudo-classe :target</a></li><li><a href="http://tableless.com.br/drops3-modular-css/" title="Drops 3 &#8211; Duas formas de modular seu CSS">Drops 3 &#8211; Duas formas de modular seu CSS</a></li><li><a href="http://tableless.com.br/introducao-ao-css-3d-flip-card/" title="Introdução ao CSS 3D &#8211; Flip Card">Introdução ao CSS 3D &#8211; Flip Card</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tableless.com.br/utilizando-a-biblioteca-modernizr/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Tenha o DOM</title>
		<link>http://tableless.com.br/tenha-o-dom/</link>
		<comments>http://tableless.com.br/tenha-o-dom/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 16:35:41 +0000</pubDate>
		<dc:creator>Alysson Franklin</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Extensions]]></category>
		<category><![CDATA[navegadores]]></category>
		<category><![CDATA[Semântica]]></category>
		<category><![CDATA[web standards]]></category>

		<guid isPermaLink="false">http://tableless.com.br/?p=3958</guid>
		<description><![CDATA[Entenda o que é o Document Object Model e tenha o DOM.]]></description>
			<content:encoded><![CDATA[<p class="c6">Muito ja foi falado sobre DOM e posso estar sendo repetitivo aqui, mas é importante falar deste assunto que em dias de manipulação pesada de seletores, percebo que pouca atenção é dada. Temos muita literatura boa sobre o assunto mas muitas vezes o foco acaba sendo o novo plugin que saiu e faz mais-do-mesmo-no-front-end-só-que-mais-fácil (E se você tiver sorte ele é free).</p>
<p class="c6">Entender realmente como um navegador funciona é importante, e garante seu entendimento do <strong><span class="c7">real </span></strong>dos problemas que está enfrentando no código que está implementando. Tem mais! Criar um código que manipula o layout (leia-se DOM) fica mais fácil, é uma relação <em><span class="c9">win-win</span></em><span class="c7 c9">.</span></p>
<p class="c6">Criado pelo W3C,<strong> O DOM é uma multi-plataforma que representa como as marcações em HTML, XHTML e XML são organizadas e lidas pelo navegador que você usa</strong>. Uma vez indexadas, estas marcações se transformam em elementos de uma árvore que você pode manipular via API &#8211; que é o que fazemos quando usamos programas ou scripts para alterar funcionalidades de uma página: conteudo, estrutura ou folha de estilo.</p>
<h2 class="c6"><span class="c7">Um pouco de história</span></h2>
<p class="c6">Não tem graça falar sobre o assunto sem mostrar como ele surgiu. Isso só reforça ainda mais a importância de conhecermos bem o assunto pois mostra sua relevância (e porque falar de <em><span class="c9">browser wars</span></em> é bem legal, apesar de evidenciar os cabelos brancos).</p>
<p class="c6">Netscape e Microsoft guerreavam com Netscape 2 e IE3.0 lá em 1996 e enquanto a Netscape lançava o <strong>Javascript</strong> a Microsoft lançava o <strong>JScript</strong>. A diferença entre um e outro não é nada mais além do nome &#8211; acredite! Por razões comerciais devido as “<span class="c9">sangrentas” <em>browser wars</em></span> as empresas decidiram adotar nomes diferentes para a mesma coisa &#8211; que na verdade era (e continua sendo) o <strong>ECMAScript</strong>, a linguagem que comecou a ser criada em 1994 quando o W3C colocou na mesma mesa as duas empresas e várias outras para desenvolver um padrão para linguagens de script para os navegadores. <strong>Javascript, JScript e ActionScript não são nada mais que </strong><strong><em><span class="c7">dialetos</span></em> de ECMAScript.</strong></p>
<h2 class="c6"><span class="c7">O DOM em sua forma e como é reconhecido pelos navegadores</span></h2>
<div class="wp-caption alignnone" style="width: 458px"><img class="  " src="http://devfiles.myopera.com/articles/618/DOMTree.gif" alt="" width="448" height="198" /><p class="wp-caption-text">Representação de um documento HTML e sua árvore DOM</p></div>
<p class="c6">A figura acima mostra a estrutura de uma árvore DOM, a linearização  das marcações de modo que ela possa ser montada inicialmente por um navegador. <span class="c7">Esta estrutura não será o que veremos no navegador &#8211; o layout em si. O DOM é a base para uma outra árvore que é o que realmente um browser monta na tela, a <strong>Árvore de Renderização </strong></span>- <em>aka </em><em><span class="c9">Render Tree</span></em>.</p>
<p class="c6">A base para todos os nós da árvore DOM é o base class chamado <strong><span class="c7">Node.h</span></strong>. Ele possui várias categorias, e as relevantes para renderizarmos código no navegador são os nós de <strong><span class="c7">documentos, elementos </span></strong><span class="c7">e</span><strong><span class="c7"> texto</span></strong>.</p>
<ol class="c12" start="1">
<li class="c10 c6"><strong><span class="c1">Documentos </span></strong><span class="c4">é o nó mais importante do DOM, com três classes diferentes: </span><span class="c1"><strong>Document</strong>, </span><span class="c4">que é usado por todos os documentos XML e outros que não sejam SVG (que também é um XML, porém com marcação já padronizada)</span><span class="c1">, <strong>HTMLDocument </strong></span><span class="c4">que como o nome diz, cuida de documentos HTML e </span><span class="c1">SVGDocument</span><span class="c4">, responsável pelos documentos SVG e tambem por outros documentos herdados da classe </span><span class="c1">Document (</span><span class="c4">Como o </span><strong><span class="c1">Document.h </span></strong><span class="c4">e o </span><span class="c1"><strong>HTMLDocument.h</strong>).</span></li>
<li class="c10 c6"><span class="c1"><strong>Elementos</strong> </span><span class="c4">são todas as tags que estão em arquivos HTML ou XML se transformam em elementos da árvore DOM. Considerando a renderização do navegador, um elemento é um nó com uma tag que pode ser usada para fazer subclasses específicas que podem ser processadas de acordo com as necessidades da </span><em><span class="c4 c9">Render Tree </span></em><span class="c4">(</span><strong><span class="c1">Element.h</span></strong><span class="c4"><span class="c4">).</span></span></li>
<li class="c10 c6"><span class="c1"><strong>Texto</strong>: </span><span class="c4">É o texto que vai entre os elementos. Todo o conteúdo das tags (&lt;p&gt;</span><span class="c1">Isto é um text node</span><span class="c4">&lt;/p&gt;). O nó de Texto guarda basicamente texto puro, que pode ser renderizado ou trabalhado via script.</span></li>
</ol>
<h2 class="c0">A Render Tree</h2>
<div id="attachment_3942" class="wp-caption alignnone" style="width: 413px"><a href="http://tableless.com.br/wp-content/uploads/2011/07/render.png"><img class="size-full wp-image-3942  " src="http://tableless.com.br/wp-content/uploads/2011/07/render.png" alt="Como a render tree e montada" width="403" height="187" /></a><p class="wp-caption-text">Como a render tree é montada</p></div>
<p class="c6"><span class="c4">A <em>Render Tree</em> é a parte mais importante do processo de renderização. Bem parecida com a árvore DOM, cada objeto corresponde a nós de </span><strong><span class="c1">Documentos, Elementos </span><span class="c4">ou</span></strong><span class="c1"><strong> Texto</strong>. </span><span class="c4">A diferença é que q <em>Render Tree</em> possui tambem objetos que não possuem nós na árvore DOM, como <strong>scripts e folhas de estilos</strong>. </span></p>
<p class="c0">O processo de criação da<strong> Render Tree</strong> passa pelos seguintes passos:</p>
<ol class="c3" start="1">
<li class="c6 c10"><span class="c7"><strong>Attachment</strong>:</span> Após finalizar o parse do DOM e a criação de seus nós, os navegadores chamam um método chamado <strong><span class="c7">attach </span></strong>para começar a renderização. O attach adiciona primeiramente as folhas de estilo a árvore DOM e começa a estilização da página. Um bom exemplo é o uso das propriedades CSS <span class="c7">display x visibility: </span>Caso um elemento da árvore DOM tenha uma propriedade <span class="c7">display:none</span>, este elemento (e seus nós filhos) não será criado na<em> Render Tree</em>. Ao contrário do uso de <span class="c7">visibility:hidden</span>, que vai renderizar o elemento na <span class="c9">árvore</span>, porém  ele irá remover (ou adicionar quando <span class="c7">visibility:visible</span>) via<strong> Repaint </strong>as cores (ou propriedades) que formam este elemento. Vale lembrar também que este processo de attach é <em>top down</em>, criando sempre inicialmente os nós parent e depois seus descendentes (nós filhos). (<a href="http://tableless.com.br/entendendo-os-reflows-2" title="Entendendo os Reflows">Para saber mais sobre Repaint e Reflows, veja este outro artigo</a>)</li>
<li class="c10 c6"><span class="c7"><strong>RenderStyle.h</strong>:</span> Durante o processo de attach um método é criado, o <strong>RenderStyle.h</strong> que vai guardar objetos de referência com cada uma das propriedades CSS do documento. O nó criado no DOM é verificado no documento de CSS e caso existam propriedades que incidam naquele elemento, ela é aplicada. Esta propriedade fica salva dentro da <em><span class="c9">Render Tree </span></em>até que ela seja destruída ou que este valor seja alterado por algum script.</li>
<li class="c10 c6"><strong><span class="c7">CSS Box Model: </span></strong>Após o método <strong>RenderStyle</strong> ser criado, ele é acessado via <strong>RenderObject</strong>. O Box model é usado para posicionar um elemento dentro da página, oferecendo suporte para o <span class="c7">conteúdo, padding, bordas e margens </span>que envolvem este elemento</li>
</ol>
<h2 class="c6"><img class="alignnone" src="http://www.w3.org/TR/CSS21/images/boxdim.png" alt="Uma representação visual do CSS box model" width="455" height="340" /></h2>
<h2 class="c6"><span class="c5">Destruindo (ou atualizando) a Render Tree</span></h2>
<p class="c6">A <em><span class="c9">Render Tree</span></em> é destruída quando nós da árvore DOM são removidos, causando a necessidade de um novo parse no DOM, ou quando uma tab do navegador com a árvore DOM usada é fechada. Após o refresh da árvore DOM, todo o processo acima é refeito, com attach chamando o RenderStyle, que montado chama o método <strong>style()</strong> do RenderObject que acessa o CSS BOX model.</p>
<h2 class="c0">Como os navegadores interpretam todos estes elementos criados por DOM e Render Tree antes de aplicar o estilo?</h2>
<p class="c0">Todo navegador tem uma lista de elementos HTML suportados. Quando o seu markup possui tags presentes na lista, a árvore DOM é montada e o processo de <span class="c7">attachment </span>começa logo na sequência e os estilos são aplicados, dando continuidade a criação da <span class="c9"><em>Render tree</em>.</span></p>
<p class="c6">O grande problema é que cada navegador tem a sua própria lista, que trata situações similares de maneiras diferentes. Obviamente já sabemos que o navegador que mais apresenta problemas para as situações acima é o Internet Explorer, mas acredite, <strong><span class="c7">todos </span></strong>os navegadores apresentam problemas quando um elemento não está em sua lista de elementos permitidos, e precisa de um trabalho para fazer tudo acontecer na <span class="c9">Render Tree </span>como deve ser feito.</p>
<p class="c6">Elementos fora desta lista são tratados como <span class="c7">Elementos desconhecidos. </span>E eles são uma grande fonte de problemas:</p>
<ol class="c3" start="1">
<li class="c10 c6"><span class="c7"><span class="c7"><strong>Como estilizar este elemento?</strong></span></span>Por exemplo, a tag &lt;p&gt; tem por padrão espacamento no topo e bottom, &lt;blockquote&gt; possui uma indentação automática adicionando uma margem à esquerda ou &lt;h1&gt; tem uma fonte maior que o &lt;p&gt; por ser um cabeçalho. Tudo isso esta padronizado, mas como cuidar de algo que não existe?</li>
<li class="c10 c6"><span class="c7"><span class="c7"><strong>Como este elemento deve aparecer na árvore DOM?</strong></span></span>Os navegadores também possuem uma lista que mostra quais elementos podem ser filhos de outros elementos. Por exemplo, se você adiciona por engano no seu markup &lt;p&gt;&lt;p&gt; o segundo paragrafo implicitamente fechará o primeiro &lt;p&gt;, fazendo que os dois elementos sejam irmãos (no mesmo nível na árvore DOM) e nao como nós filhos como de maneira linear pode parecer. Porém se vc adiciona um &lt;p&gt;&lt;span&gt;, este paragrafo inicial não será fechado, porque o navegador permite que &lt;span&gt; seja filho de elementos de paragrafo, fazendo assim o &lt;span&gt; ser nó filho de &lt;p&gt;</li>
</ol>
<p class="c6">Para elementos desconhecidos, a ideia é <span class="c7">não estilizar.</span> Caso queira algum estilo em elementos desconhecidos, você deve colocá-lo no nó acima (se necessário um <em><span class="c9">wrapper</span></em>), para fazer com que ele <span class="c7">herde</span> o estilo.</p>
<p class="c6">Perceba a sutileza de como isso funciona. Os dois diagramas mostram uma árvore DOM, montada por um navegador suporte HTML5 nativo e o Internet Explorer 8 (navegadores que <span class="c7">não </span>suportam HTML5 tem funcionamento semelhante):</p>
<div id="attachment_3988" class="wp-caption alignnone" style="width: 570px"><a href="http://tableless.com.br/wp-content/uploads/2011/07/renderizaao_HTML5-5.png"><img class="size-full wp-image-3988 " src="http://tableless.com.br/wp-content/uploads/2011/07/renderizaao_HTML5-5.png" alt="Arvore DOM com suporte HTML5" width="560" height="472" /></a><p class="wp-caption-text">Arvore DOM com suporte HTML5</p></div>
<div id="attachment_3987" class="wp-caption alignnone" style="width: 576px"><a href="http://tableless.com.br/wp-content/uploads/2011/07/renderizacaoIE-5.png"><img class="size-full wp-image-3987  " src="http://tableless.com.br/wp-content/uploads/2011/07/renderizacaoIE-5.png" alt="Arvore DOM IE e outros navegadores sem suporte HTML5" width="566" height="458" /></a><p class="wp-caption-text">Arvore DOM IE e outros navegadores sem suporte HTML5</p></div>
<p class="c6">É por essas e outras que a gente usa o modernizr, o HTML5shiv ou um simples document.create(“SECTION”) / document.create(“ARTICLE”). E é isso que acontece quando navegadores interpretam elementos desconhecidos. Eles desconsideram o nó real aonde o elemento está, e o reconhece como filho de &lt;BODY&gt;. E por favor, sem trocadilhos com o <span class="c9">filho </span>dos outros.</p>
<p class="c6">Ver como uma árvore DOM é montada  e como a <em><span class="c9">Render tree</span> </em>é feita nos dá idéia do quão importante é ter um documento <span class="c7">semântico</span>. <strong>Realmente semântico</strong>. Uma vez entendidos os conceitos, a manipulação e a programação dos elementos fica mais fácil.</p>
<p class="c6">E você começa a entender como os navegadores funcionam.</p>
<h2>Referências</h2>
<p><a href="http://tableless.com.br/entendendo-os-reflows-2">Entendendo os Reflows</a> por Alysson Franklin</p>
<p><a href="http://www.modernizr.com/">Modernizr</a> para suporte HTML5</p>
<p><a href="http://code.google.com/p/html5shiv/">HTML5shiv</a> para suporte HTML5</p>
<p><a href="http://en.wikipedia.org/wiki/Browser_wars">Browser Wars</a> pela Wikipedia</p>
<p><a href="http://en.wikipedia.org/wiki/ECMAScript">ECMAScript</a> pela Wikipedia</p>
<p><a href="http://en.wikipedia.org/wiki/JavaScript">Javascript</a> pela Wikipedia</p>
<p><a href="http://en.wikipedia.org/wiki/JScript">JScript</a> pela Wikipedia</p>
<p><a href="http://www.w3.org/TR/CSS21/box.html#box-dimensions">CSS Box model</a> pelo W3C</p>
<p><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size: 13px;line-height: 19px"><a href="http://en.wikipedia.org/wiki/Document_Object_Model">DOM</a></span><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size: 13px;line-height: 19px"> pela wikipedia </span></p>
<p><a href="http://www.webkit.org/blog/114/webcore-rendering-i-the-basics/">Renderização no webkit, o básico</a> pela webkit</p>
<p><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size: 13px;line-height: 19px"><a href="http://www.w3.org/DOM/">W3C Overview do DOM</a></span></p>
<p><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size: 13px;line-height: 19px"><a href="http://www.w3.org/DOM/Activity.html">Declaração de atividades do DOM pelo W3C</a></span></p>
<p><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size: 13px;line-height: 19px"><a href="http://diveintohtml5.org/semantics.html#unknown-elements">Uma discussão sobre como Navegadores entendem elementos desconhecidos</a></span><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size: 13px;line-height: 19px"> por Mark Pilgrim  </span></p>
<p><a href="http://dev.opera.com/articles/view/traversing-the-dom/">Traversing the DOM</a><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size: x-small"><span class="Apple-style-span" style="line-height: 19px"> by Mike West</span></span></p>
<p><a href="http://www.netmagazine.com/features/%20progressive-enhancement-demystified">Progressive enhancement demystified</a><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size: x-small"><span class="Apple-style-span" style="line-height: 19px"> by Aaron Gustafson</span></span></p>
<p><a href="http://paulirish.com/2011/dom-html5-css3-performance/">DOM, HTML5, CSS3 e Performance</a> – <a href="http://dl.dropbox.com/u/39519/talks/gperf/index.html">Slides</a> por Paul Irish</p>
<pre><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size: x-small"><span class="Apple-style-span" style="line-height: 19px">E também o @mariocaixa, esse cara tem o DOM!</span></span></pre>
<h3  class="related_post_title">Posts Relacionados</h3><ul class="related_post"><li><a href="http://tableless.com.br/entendendo-os-reflows-2/" title="Entendendo os Reflows">Entendendo os Reflows</a></li><li><a href="http://tableless.com.br/contedo-flash-e-html/" title="Conteúdo, Flash e HTML">Conteúdo, Flash e HTML</a></li><li><a href="http://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://tableless.com.br/agora-e-a-vez-dos-desenvolvedores/" title="Agora é a vez dos desenvolvedores">Agora é a vez dos desenvolvedores</a></li><li><a href="http://tableless.com.br/webintents-framework-para-webapps/" title="WebIntents &#8211; Framework para WebApps">WebIntents &#8211; Framework para WebApps</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tableless.com.br/tenha-o-dom/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Especificação para touch screens</title>
		<link>http://tableless.com.br/especificacao-para-touch-screens/</link>
		<comments>http://tableless.com.br/especificacao-para-touch-screens/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 13:00:48 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[Internet Móvel]]></category>
		<category><![CDATA[Tecnologia e Tendências]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[cotidiano]]></category>
		<category><![CDATA[desenvolvimento web]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[interface mobiles]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[internetmovel]]></category>
		<category><![CDATA[mobiles]]></category>
		<category><![CDATA[mobilidade]]></category>

		<guid isPermaLink="false">http://tableless.com.br/?p=3905</guid>
		<description><![CDATA[Interações em interfaces touch são diferentes das interfaces baseadas com mouse. Hoje temos pleno controle das ações baseadas com mouse, mas este controle não pode ser expandido para as interfaces touch. As ações e as forma de comportamento do usuário são diferentes.]]></description>
			<content:encoded><![CDATA[<p>Até alguns anos atrás nós acessávamos a internet apenas utilizando computadores e celulares. Hoje existem aparelhos de diversos tipos. Temos até dispositivos como o <a href="http://www.microsoft.com/surface/">Surface</a>, ainda que seu uso seja mais restrito e específico. Mas não demora muito que outros dispositivos surjam e preencham alguma lacuna escondida. O importante é entender que cada aparelho tem sua forma de interação.</p>
<p>Hoje, as interfaces touch estão maduras e estáveis, que chegam a inspirar as interfaces dos sistemas desktops. Vide o que aconteceu com o OS X Lion e com o Windows 8. As principais ideias foram retiradas de suas respectivas interfaces mobiles: o Windows do Windows Phone e o Lion do OS X para iPad.<br />
As interfaces mobiles e as interfaces desktop ficarão mais homogêneas com o passar do tempo, se assemelhando cada vez mais, contudo, as interações são totalmente diferentes. As interfaces criadas para cada dispositivo nos ajudam a distinguir os ambientes e também a forma com que o usuário interage.</p>
<p>Estamos acostumados com a experiência de interação com a ajuda do mouse. Isso foi desde os primórdios e provavelmente ainda será por bastante tempo. Nós desenhamos interfaces para ações baseadas no mouse ou qualquer aparelho que controle a setinha da sua tela. Criar interfaces touch é algo relativamente novo. Nós trouxemos ideias da interação com mouse para os dispositivos touch, mas grande parte das interações precisaram ser reinventadas porque o modo, o ato, a forma de interagir com a informação é diferente. Na interface touch você não &#8220;coloca o mouse&#8221; em cima do elemento. Você não utiliza teclas de atalho para executar ações. Normalmente as ações importantes estão expostas na interface, facilitando o acesso rápido. Isso é muito importante porque nos ensina criar interfaces mais intuitivas, com a curva de aprendizado menor.<br />
Há também o outro lado da moeda, onde detalhes das interfaces touch não podem ser portadas para interfaces baseadas em mouse. Lembre agora na forma de como você gira uma imagem em um dispositivo touch e como você gira essa mesma imagem utilizando um mouse. A interface muda, o seu comportamento muda. </p>
<p>Sabendo dessas limitações você deve entender que não podemos simplesmente portar o visual de um determinado site para um dispositivo touch. Você pode dizer que &#8220;hoje fazemos isso e até agora está funcionando muito bem&#8221;. Mas pense melhor&#8230; a grande maioria dos sites que você visita hoje no iPad ou qualquer outro tablet, por exemplo, são sites onde a sua interação é limitada. O que você faz em um site hoje em dia? Clica nos links e lê. Salvo às vezes quando você visita um site mais &#8220;animadinho&#8221; com mais ações para entreter o usuário. Mas e se você faz um site onde é preciso rotacionar uma imagem ou fazer um ZOOM? Você precisará manter as mesmas ações nos dois cenários. E como antigamente, para manter o cenário das interfaces touch você precisa da ajuda de muito script.</p>
<p>Ambas as versões tem suas limitações e um legado de compatibilidade com seu sistema base que precisam manter.</p>
<p>A ideia de criar uma especificação destinada para as interfaces touch é que tenhamos controle sobre as ações do usuário, da mesma forma que temos nos desktops. Para isso eles estão <a href="http://bit.ly/mMP5jy">mapeando uma série de eventos que específicos das interfaces touch</a>. Assim podemos definir ações baseadas nessas interfaces.  Estão participando da escrita desta especificação Doug Schepers do W3C, Sangwhan Moon da Opera Software ASA e Matt Brubeck da Mozilla. </p>
<p>Se você parar para ler a específicação, vai entender que poderemos controlar quando o usuário interage encostando o dedo na tela, movendo o dedo e também ao retirá-lo. Você poderá controlar a área de toque. Se o elemento for pequeno, por exemplo, você poderá aumentar essa área de toque para que o usuário não tenha dificuldades. Poderá acionar eventos no momento que o usuário rotacionar os elementos. Se você está fazendo um WebApp poderá acionar um menu contextual personalizado quando o usuário fizer um &#8220;tap&#8221; com dois dedos. O usuário vira basicamente um proctologista. <img src='http://tableless.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>A especificação ainda é um rascunho mas já está mostrando que as possibilidades são imensas. Eu vivo me perguntando até onde irá o HTML, CSS e Javascript com essas novas mudanças. Será que vão continuar fáceis como são hoje ou tudo vai ficar complicado? Será que serão eles que farão todo o trabalho ou novas linguagens serão criadas para lidar com essas novidades? Who knows? Eu tenho um palpite, mas é assunto para outra hora.</p>
<h3  class="related_post_title">Posts Relacionados</h3><ul class="related_post"><li><a href="http://tableless.com.br/mobile-first-a-arte-de-pensar-com-foco/" title="Mobile First &#8211; A arte de pensar com foco">Mobile First &#8211; A arte de pensar com foco</a></li><li><a href="http://tableless.com.br/introducao-ao-responsive-web-design/" title="Introdução ao Responsive Web Design">Introdução ao Responsive Web Design</a></li><li><a href="http://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://tableless.com.br/experiencia-cross-device/" title="Experiência cross-device">Experiência cross-device</a></li><li><a href="http://tableless.com.br/commander-conquer-tiberium-alliances/" title="Command &#038; Conquer: Tiberium Alliances">Command &#038; Conquer: Tiberium Alliances</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tableless.com.br/especificacao-para-touch-screens/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Em tempo de transição, quais recursos utilizar?</title>
		<link>http://tableless.com.br/em-tempo-de-transicao-quais-recursos-utilizar/</link>
		<comments>http://tableless.com.br/em-tempo-de-transicao-quais-recursos-utilizar/#comments</comments>
		<pubDate>Tue, 24 May 2011 16:48:26 +0000</pubDate>
		<dc:creator>Thaiana Poplade</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tecnologia e Tendências]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[cotidiano]]></category>
		<category><![CDATA[Na Prática]]></category>

		<guid isPermaLink="false">http://tableless.com.br/?p=3736</guid>
		<description><![CDATA[Acompanhar todas as mudanças que o desenvolvimento web vem sofrendo é tarefa muito difícil e bastante trabalhosa. Alguns de nós ainda preferem sentir-se mais seguros quanto a regulamentação dessas diretrizes e outros já estão testando e experimentando. Pra onde podemos direcionar nossa postura às evoluções?]]></description>
			<content:encoded><![CDATA[<p>HTML 5, CSS3, IE9, Firefox 4&#8230; enfim, siglas, nomes e versões que não param de pipocar nos tweets, posts, artigos, e em todos os lugares dentro do nosso universo do desenvolvimento web e automaticamente nos perguntamos &#8211; como traçar nosso trabalho nesta época de transição? O que é certo? O que é errado?</p>
<h3>Graciosamente retroceder ou progressivamente evoluir?</h3>
<p>A melhor análise antes de decidir qual caminho tomar e a qual evolução recorrer vem do planejamento de seu projeto. Estudo de estatísticas de navegadores, perfil do usuário, resolução de tela, dispositivos, etc; são alguns dos pontos a serem levados em consideração, criando material suficiente para você decidir qual caminho seguir: considerar o retrocesso [ por exemplo: desenvolver seu website para IE6 ] ou expor a evolução de forma progressiva [ por exemplo: utilizar bordas arredondadas e novas características via CSS3 ].<br />
Determinar os fins do projeto vão estabelecer o melhor caminho a seguir durante toda a sua execução pois, em época de transição, os riscos de utilizar algo que não dê certo e a presença de retrabalho são quase inevitáveis. Assim, considere todas as possibilidades.</p>
<h3>Graciosamente retroceder</h3>
<p>Quando pensamos em retrocesso, no caso do desenvolvimento web, o utilizamos para conceituar uma codificação baseada em X-HTML/CSS 2 e Crossbrowser [ com browsers de mercado incluindo o IE6 ], de qualquer forma, a ideia não é pensar que esteja errado ou que seja um método fora de uso, mas sim uma segurança em utilizar o que já está regulamentado, validado pela W3C e igualmente embutido na renderização padrão dos browsers mais utilizados.<br />
Inúmeras são as dicas aqui no Tableles relacionadas à esta frente de desenvolvimento, mas o que podemos levar em consideração quando pensamos em desenvolver um website dentro dessas diretrizes é que: IE 6 e IE7 ainda devem fazer parte dos browsers em testes e que ainda utilizaremos imagens para criação de bordas arredondadas e sombras. Além claro, de nos encontrar em momentos que utilizaremos diversos elementos em nosso código html apenas para assegurar que algum efeito visual seja renderizado na tela [ as vezes dependente do uso de Javascript para tanto ]. Considerando estes pontos e pensando nos fins do projeto, basta iniciar o desenvolvimento.<br />
Algumas dicas que podem ajudar nesta escolha estão em: <a href="http://tableless.com.br/categoria/client-side/html-css/page/2" target="_blank">http://tableless.com.br/categoria/client-side/html-css/page/2</a></p>
<h3>Progressivamente evoluir</h3>
<p>Como falamos acima, estamos num momento de transição que significa acima de tudo &#8211; escolha. Utilizar novas possibilidades na criação de websites é uma escolha que deve ser igualmente planejada pois, o risco não vem do que já conhecemos e do que já sabemos que vai exigir maior cuidado, mas sim do que desconhecemos &#8211; a renderização de novos parâmetros em folhas de estilo e a interpretação de uma nova tag html, por exemplo.<br />
Pouco ainda consegue-se definir a respeito das novas possibilidades, mas é fato que muitos desenvolvedores estão aprendendo como utilizar o novo, testando e reportando erros e acertos e este comportamento deve estender-se por anos, até que as diretrizes sejam regulamentadas pela W3C e os browsers tenham o mesmo número de usuários que suas versões de mercado tem hoje.<br />
Com isso, os testes geralmente giram em torno dos novos browsers, mas eventualmente necessitamos também direcionar o desenvolvimento à navegadores mais antigos, encontrando assim, a dificuldade em visualizar a mesma coisa em todos eles. Para ajudar, pensando em HTML 5 e CSS3, abaixo uma lista de algumas ferramentas que podem ajudar na implementação das novas técnicas em browsers e possibilidades atuais:</p>
<ul>
<li>Modernizr: <a href="http://www.modernizr.com/" target="_blank">http://www.modernizr.com/</a> &#8211; uma ferramenta JavaScript que suporta propriedades CSS3 em diferentes navegadores.</li>
<li>CSS3 Pie: <a href="http://css3pie.com/" target="_blank">http://css3pie.com/</a> &#8211; <a href="http://tableless.com.br/css3-bordas-arredondadas-sombras-e-gradiente" target="_blank">já comentada em outro artigo</a>, o CSS3 Pie é uma ferramenta JavaScript que permite renderizar bordas arredondadas, background-gradient e box-shadow nas versões anteriores de IE.</li>
<li>Selectivizr: <a href="http://selectivizr.com/" target="_blank">http://selectivizr.com/</a> &#8211; ferramenta JavaScript que emula seletores CSS3 e pseudo-classes, como por exemplo :focus em diferentes browsers.</li>
</ul>
<p>Além das ferramentas, conheça no link ao lado também, algumas das melhorias trazidas para as folhas de estilo em sua nova versão e para a evolução da linguagem de marcação &#8211; o HTML5: <a href="http://tableless.com.br/categoria/client-side/html-css" target="_blank">http://tableless.com.br/categoria/client-side/html-css</a></p>
<p>Testar o novo ou trabalhar com o conhecido? Esta pergunta não podemos responder, mas analisadas as características do seu projeto, você mesmo poderá tomar esta decisão consciente de um trabalho profissional e determinado ao sucesso.</p>
<p>Boas escolhas e até a próxima.<br />
 <img src='http://tableless.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3  class="related_post_title">Posts Relacionados</h3><ul class="related_post"><li><a href="http://tableless.com.br/experiencia-cross-device/" title="Experiência cross-device">Experiência cross-device</a></li><li><a href="http://tableless.com.br/seu-lugar-ao-sol/" title="Seu lugar ao sol">Seu lugar ao sol</a></li><li><a href="http://tableless.com.br/agora-e-a-vez-dos-desenvolvedores/" title="Agora é a vez dos desenvolvedores">Agora é a vez dos desenvolvedores</a></li><li><a href="http://tableless.com.br/introducao-ao-css-3d-flip-card/" title="Introdução ao CSS 3D &#8211; Flip Card">Introdução ao CSS 3D &#8211; Flip Card</a></li><li><a href="http://tableless.com.br/commander-conquer-tiberium-alliances/" title="Command &#038; Conquer: Tiberium Alliances">Command &#038; Conquer: Tiberium Alliances</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tableless.com.br/em-tempo-de-transicao-quais-recursos-utilizar/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Manipulando a metatag Viewport</title>
		<link>http://tableless.com.br/manipulando-metatag-viewport/</link>
		<comments>http://tableless.com.br/manipulando-metatag-viewport/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 13:00:09 +0000</pubDate>
		<dc:creator>Diego Eis</dc:creator>
				<category><![CDATA[Acessibilidade]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Internet Móvel]]></category>
		<category><![CDATA[Na Prática]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[acessibilidade]]></category>
		<category><![CDATA[internetmovel]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobilidade]]></category>
		<category><![CDATA[padroes web]]></category>

		<guid isPermaLink="false">http://tableless.com.br/?p=3540</guid>
		<description><![CDATA[Aprenda a manipular o viewport de mobiles e outros dispositivos com a metatag Viewport do HTML.]]></description>
			<content:encoded><![CDATA[<p>O viewport é a área onde seu website aparece. É a área que você se preocupa se o vai ou não caber na hora da criação. O tamanho do viewport depende muito da resolução, tamanho do monitor e dispositivo utilizado. Em máquinas desktop nós não precisamos nos preocupar muito, já estamos acostumados com um determinado tamanho de tela e resolução média utilizada pelos usuários, que hoje gira em torno de no mínimo 1024 de largura. Mas quando começamos a variar muito o tamanho das telas, a largura do viewport começa a ser uma preocupação porque afeta diretamente a forma como o usuário utiliza seu website.</p>
<p>Hoje existe uma gama muito grande de aparelhos com telas de tamanhos variados. Comece a pensar pelos netbooks e depois vá diminuindo até chegar em um smartphone popular como iPhone, Milestone e etc. A variação de tamanho de tela é muito grande. Lembrando que o tamanho da tela é uma coisa e a resolução de tela é outra. Nunca confunda os dois. A largura da tela do iPhone na posição retrato é de 320px. Mas sua resolução padrão é 980px. Isso quer dizer que se você fizer um HTML simples, colocar uma imagem de 980px de largura e visualizar no iPhone, não existirá barra de rolagem. Obviamente a imagem ficará miniaturizada, como mostra abaixo:</p>
<p><img src="http://tableless.com.br/wp-content/uploads/2011/04/980px.png"></p>
<p>Isso é interessante porque possibilita a boa visualização de websites que não estão preparados para mobiles. Vemos o site inteiro miniaturizado, com possibilidade de fazer zoom em qualquer parte do layout.</p>
<h3>A tag meta viewport</h3>
<p>Mesmo assim os smartphones tem telas pequenas podem dificultar a leitura se fizermos um sistema planejado para grandes resoluções. Por isso é interessante que possamos customizar o viewport para que ele se adeque a realidade desses dispositivos. É aí que entra a metatag viewport.<br />
Com essa metatag iremos customizar a resolução inicial que o browser deve renderizar do viewport do dispositivo. Dessa forma, podemos preparar websites com resoluções personalizadas para smartphones e outros aparelhos.</p>
<p>A sintaxe é muito simples e deve ser colocada, como sempre, na tag <strong>head</strong>:</p>
<div class="codecolorer-container html4strict mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/meta.html"><span style="color: #000000; font-weight: bold;">meta</span></a> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;viewport&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span>&gt;</span></div></td></tr></tbody></table></div>
<p>Os valores de content são os que seguem abaixo:</p>
<table>
<thead>
<tr>
<th>Valor</th>
<th>Descrição</th>
</tr>
</thead>
<tbody>
<tr>
<td>width</td>
<td>Define uma largura para o viewport. Os valores podem ser em PX ou &#8220;device-width&#8221;, que determina automaticamente um valor igual a largura da tela do dispositivo.</td>
</tr>
<tr>
<td>height</td>
<td>Define uma altura para o viewport. Os valores podem ser em PX ou &#8220;device-height&#8221;, que determina automaticamente um valor igual a altura da tela do dispositivo.</td>
</tr>
<tr>
<td>initial-scale</td>
<td>Define a escala inicial do viewport.</td>
</tr>
<tr>
<td>user-scalable</td>
<td>Define a possibilidade de o usuário fazer &#8220;zoom&#8221; em um determinado lugar da tela. É ativado quando o usuário bate duas vezes com o dedo em um lugar da tela.</td>
</tr>
</tbody>
</table>
<h3>Como usar</h3>
<p>A tela abaixo não tem nenhuma tag de viewport definida. </p>
<p><img src="http://tableless.com.br/wp-content/uploads/2011/04/viewport-980.png"></p>
<p>Veja que o texto do elemento está bem pequeno. Isso é porque estamos visualizando-o em 980px de resolução em uma tela de smartphone.<br />
Vou acrescentar a seguinte linha:</p>
<div class="codecolorer-container html4strict mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/meta.html"><span style="color: #000000; font-weight: bold;">meta</span></a> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;viewport&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;width=320px&quot;</span>&gt;</span></div></td></tr></tbody></table></div>
<p>Define que a largura do viewport será 320px. O resultado está abaixo:</p>
<p><img src="http://tableless.com.br/wp-content/uploads/2011/04/viewport-320px.png"></p>
<p>Se inserirmos uma imagem ou um objeto maior que a largura do viewport, uma barra de rolagem é criada. Não precisa se preocupar com o espaço da barra, já que pelo menos nos OSs de smartphones novos, como iPhone e Android, a barra fica invisível e só aparece pro cima dos elementos.</p>
<p><img src="http://tableless.com.br/wp-content/uploads/2011/04/rolagem.png"></p>
<p>Adicionando o <strong>initial-scale</strong> com o valor de 1.5, temos um aumento na escala da visualização. Abaixo segue um exemplo comparativo. A imagem inserida tem 320px de largura, logo ela ficará bem justa na tela quando a escala é 1.0, e um pouco estourada quando a escala é 1.5 ou maior. Veja:</p>
<p><img src="http://tableless.com.br/wp-content/uploads/2011/04/initi-scale1.png"></p>
<p>Agora com escala de 1.5:</p>
<p><img src="http://tableless.com.br/wp-content/uploads/2011/04/init-scale15.png"></p>
<p>Agora com escala de 2:<br />
<img src="http://tableless.com.br/wp-content/uploads/2011/04/init-scale2.png"></p>
<p>E agora com texto, nas mesmas proporções:</p>
<p><img src="http://tableless.com.br/wp-content/uploads/2011/04/scale1-text.png"><br />
<img src="http://tableless.com.br/wp-content/uploads/2011/04/scale15-text.png"><br />
<img src="http://tableless.com.br/wp-content/uploads/2011/04/scale2-text.png"></p>
<p>Se colocarmos o <strong>user-scalable</strong> como NO, desabilitamos a possibilidade do usuário de fazer zoom quando ele bate duas vezes com o dedo. Deixar habilitado o zoom é interessante utilizar quando o viewport não está sendo customizado. No nosso caso aqui, isso não iria adiantar muita coisa, já que todos os elementos estão com o tamanho natural, por isso vamos desabilitá-lo.</p>
<div class="codecolorer-container html4strict mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/meta.html"><span style="color: #000000; font-weight: bold;">meta</span></a> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;viewport&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;width=320px, user-scalable=no&quot;</span>&gt;</span></div></td></tr></tbody></table></div>
<p>Atente-se para o detalhe de colocar , (vírgula) entre um valor e outro.<br />
Veja um <a href="http://tableless.github.com/exemplos/viewport/viewport.html">exemplo aqui</a>. Tente ver com um smartphone como o iPhone, Android, etc.</p>
<p>Manipular o Viewport nos dá possibilidades para personalizar o visual de qualquer site para praticamente qualquer dispositivo, não importa sua resolução ou seu tamanho de tela. Quando unimos isso às <a href="http://tableless.com.br/introducao-sobre-media-queries">media queries</a>, temos um outro mundo de possibilidades.</p>
<h3  class="related_post_title">Posts Relacionados</h3><ul class="related_post"><li><a href="http://tableless.com.br/quem-precisa-de-versao-mobile/" title="Quem precisa de versão mobile?">Quem precisa de versão mobile?</a></li><li><a href="http://tableless.com.br/experiencia-deve-ter-comeco-meio-e-fim/" title="Experiência deve ter começo, meio e fim">Experiência deve ter começo, meio e fim</a></li><li><a href="http://tableless.com.br/browsers-antigos-guerra-contra-o-terror/" title="PDF &#8211; Browsers antigos: guerra contra o terror">PDF &#8211; Browsers antigos: guerra contra o terror</a></li><li><a href="http://tableless.com.br/seu-lugar-ao-sol/" title="Seu lugar ao sol">Seu lugar ao sol</a></li><li><a href="http://tableless.com.br/commander-conquer-tiberium-alliances/" title="Command &#038; Conquer: Tiberium Alliances">Command &#038; Conquer: Tiberium Alliances</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tableless.com.br/manipulando-metatag-viewport/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

