<?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>A fronteira final &#187; Cameroon</title>
	<atom:link href="http://afronteirafinal.com/category/webmasters/cameroon/feed/" rel="self" type="application/rss+xml" />
	<link>http://afronteirafinal.com</link>
	<description>Audaciosamente indo onde nenhum dev jamais esteve</description>
	<lastBuildDate>Thu, 15 Dec 2011 15:52:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Responsive Website: O que é isso e Como usar?</title>
		<link>http://afronteirafinal.com/responsive-website-o-que-e-isso-e-como-usar/</link>
		<comments>http://afronteirafinal.com/responsive-website-o-que-e-isso-e-como-usar/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 15:26:26 +0000</pubDate>
		<dc:creator>lcameroon</dc:creator>
				<category><![CDATA[Cameroon]]></category>
		<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[layouts flexíveis]]></category>
		<category><![CDATA[mobile site]]></category>
		<category><![CDATA[responsive]]></category>
		<category><![CDATA[responsive images]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://afronteirafinal.com/?p=503</guid>
		<description><![CDATA[Nos dias de hoje quase todos os novos clientes querem uma versão mobile do seu site. E para isso é preciso antes de tudo: uma design para o BlackBerry, outro para o iPhone, outro iPad, Netbook, Kindle &#8211; e todas resoluções tela devem ser compatíveis. Nos próximos cinco anos, vamos provavelmente precisar de design adicional [...]]]></description>
			<content:encoded><![CDATA[<p>Nos dias de hoje quase todos os novos clientes querem uma versão mobile do seu site. E para isso é preciso antes de tudo: uma design para o BlackBerry, outro para o iPhone, outro iPad, Netbook, Kindle &#8211; e todas resoluções tela devem ser compatíveis. Nos próximos cinco anos, vamos provavelmente precisar de design adicional para as próximas invenções. E quando irá parar esta loucura? A resposta é nunca!</p>
<p>Na campo do web design e desenvolvimento, estamos rapidamente chegando ao ponto de ser incapaz de prosseguir com as resoluções infinitas e novos dispositivos. Para muitos websites, foi criando uma versão website para cada resolução e novo dispositivo seria impossível, ou pelo menos impraticável. Devemos apenas sofrer as conseqüências de perder visitantes de um dispositivo? Ou existe outra opção?<span id="more-503"></span></p>
<p>Responsive Website é a abordagem que sugere onde design e desenvolvimento deve responder ao comportamento do usuário e ambiente baseado na plataforma, tamanho de tela e orientação. A prática consiste em uma mistura de grades flexíveis, layouts, imagens e um uso inteligente de consultas de media CSS. Como o usuário hoje é &#8220;portável&#8221;, ele sai de seu laptop e vai para iPad, o website deve alternar automaticamente para acomodar o novo tamanho de tela, resolução imagem e habilitar scripts específicos. Em outras palavras, o site deve ter a tecnologia para responder automaticamente a preferências do usuário. Isso eliminaria a necessidade de um design diferente para cada novo dispositivo no mercado.</p>
<h2><a name="ResponsiveWebsite-OConceitodeResponsiveWebsite"></a>O Conceito de Responsive Website</h2>
<p>&#8220;<a href="http://ethanmarcotte.com/" rel="nofollow">Ethan Marcotte</a>&#8221; escreveu um artigo introdutório sobre a abordagem, &#8220;<a href="http://www.alistapart.com/articles/responsive-web-design/" rel="nofollow">Responsive Web Design</a>&#8220;, para o &#8220;A List Apart&#8221;, dando uma noção de design arquitetônico responsável, no qual fala sobre &#8220;espaços&#8221; que se ajusta automaticamente ao número e fluxo de pessoas dentro dele.</p>
<div>
<blockquote><p>&#8220;Recentemente, surgiu uma disciplina chamada de &#8220;arquitetura inteligente&#8221; e começou a perguntar como espaços físicos pode responder à presença de pessoas passando através deles. Através da combinação de robótica incorporado e materiais trançados. Arquitetos estão experimentando instalações e estruturas com paredes flex, que se encolhem e se expande conforme a multidão. Por exemplo: Sensores de movimento pode ser emparelhado com sistemas de controle climático para ajustar a iluminação e temperatura de um quarto.&#8221;</p></blockquote>
</div>
<p>Transpondo esta disciplina para o Design de sites, temos uma idéia similar. Por que deveríamos criar um design web personalizados para cada grupo de usuários; afinal, arquitetos não projetam um edifício para cada tamanho e tipo de pessoas que passes através dela? Como na arquitetura inteligente o site deve se ajustar automaticamente. Não deve requerem incontáveis soluções personalizadas para cada nova categoria de usuários.</p>
<p>Obviamente, não podemos usar sensores de movimento e robótica para realizar isto. Um Design Web &#8220;adaptável&#8221; exige uma forma mais abstrata de pensar. Entretanto, algumas idéias já estão sendo praticadas: layouts fluido, media queries e scripts que podem reformatar uma página web e fazer um &#8220;mark-up&#8221; automaticamente.</p>
<p>Mas um Responsive Website não é somente sobre resoluções de tela ajustável e imagens automaticamente redimencionadas, mas sobre uma maneira inteiramente nova de pensar sobre design web. Vamos falar sobre todos esses recursos e os conceitos associados.</p>
<h2><a name="ResponsiveWebsite-AjustandoaResolu%C3%A7%C3%A3odaTela"></a>Ajustando a Resolução da Tela</h2>
<p>Com novos dispositivos no mercado, a variedade de resoluções de tela, definições e orientações são cada vez maiores. Novos dispositivos com novos tamanhos de tela estão sendo desenvolvidos diariamente, e cada um desses dispositivos pode ter variações nas corres, tamanho e funcionalidade. Alguns estão na orientação paisagem, outras em retrato, e outro ainda completamente quadrado. Como sabemos, a partir da crescente popularidade dos smartphones, iPhone e iPad, os novos dispositivos são capazes de mudar de retrato para paisagem no capricho da vontade do usuário. E como fazer um projeto para essas situações?</p>
<p><img src="https://confluence.abril.com.br/download/attachments/7012787/Responsive-WebSite-0.png?version=1&amp;modificationDate=1323912977000" alt="" width="300" /></p>
<p>Além de projetar para ambos, paisagem e retrato, devemos considerar as centenas de diferentes tamanhos de tela. Sim, é possível agrupa-los em categorias principais e fazer cada design ficar tão flexível quanto necessário.</p>
<p>&#8220;<a href="http://sender11.typepad.com/sender11/2008/04/mobile-screen-s.html" rel="nofollow">Morten Hjerde</a>&#8221; e alguns de seus colegas identificaram, em estatísticas, que aproximadamente 400 dispositivos vendidos entre 2005 e 2008 usam alguns dos tamanhos abaixo:</p>
<p><img src="https://confluence.abril.com.br/download/attachments/7012787/Responsive-WebSite-1.png?version=1&amp;modificationDate=1323912977000" alt="" width="300" /></p>
<p>Desde então mais dispositivos saíram para o mercado. E é óbvio que não podemos manter/criar soluções personalizadas para cada um deles. Mas como lidamos com a situação?</p>
<h3><a name="ResponsiveWebsite-PartedaSolu%C3%A7%C3%A3o%3ADeixetudoFlex%C3%ADvel"></a>Parte da Solução: Deixe tudo Flexível</h3>
<p>Alguns anos atrás, quando layouts flexíveis eram quase um &#8220;luxo&#8221; para websites, as únicas coisas que eram flexíveis em um design foram as colunas do layout e o texto. Imagens poderiam facilmente quebrar seu layout, e mesmo tendo uma elementos estruturais flexíveis, quebrava o layout. Designs flexíveis não eram realmente tão flexível; eles poderiam dar ou ocupar algumas centenas pixels, mas eles freqüentemente não poderia ajustar a uma tela de computador grande para uma de netbook.</p>
<p>Agora podemos tornar as coisas mais flexível. Imagens podem ser automaticamente ajustadas, e temos soluções alternativas para o layout não quebrar. Embora não seja uma correção completa, a solução nos dá uma opção. É perfeito para dispositivos que alternam de orientação facilmente (de retrato para paisagem) ou para quando os usuários passam de um computador grande para um iPad.<br />
No artigo de &#8220;Ethan Marcotte&#8221;, ele criau um &#8220;Responsive Website&#8221; de demonstração que mostra melhor as características este layout flexível:</p>
<p><img src="https://confluence.abril.com.br/download/attachments/7012787/Responsive-WebSite-2.png?version=1&amp;modificationDate=1323912977000" alt="" width="300" /></p>
<p>O design inteiro é uma mix encantador de <a href="http://www.alistapart.com/articles/fluidgrids/" rel="nofollow">grids fluido</a>, <a href="http://unstoppablerobotninja.com/entry/fluid-images" rel="nofollow">imagens fluido</a> e mark-up inteligente onde necessário. Criando grids fluido é razoavelmente é uma prática comum, e há um número de técnicas para criar imagens fluido:</p>
<p>- <a href="http://zomigi.com/blog/hiding-and-revealing-portions-of-images/" rel="nofollow">Escondendo e Revelando Parte de Imagens</a><br />
- <a href="http://zomigi.com/blog/creating-sliding-composite-images/" rel="nofollow">Criando Sliding Composite Images</a><br />
- <a href="http://zomigi.com/blog/foreground-images-that-scale-with-the-layout/" rel="nofollow">Images Foreground escaláveis com o tamanho do layout</a></p>
<p>Para mais informações sobre criação de websites fluido, recomendo o livro &#8220;Flexible Web Design: Creating Liquid and Elastic Layouts with CSS&#8221; por Zoe Mickley Gillenwater, e baixar o capítulo exemplo &#8220;<a href="http://www.flexiblewebbook.com/bonus.html" rel="nofollow">Criando Imagens Flexíveis</a>&#8220;, além de uma extensa lista de tutorials, resources e melhores práticas sobre criação de grids flexível e layouts: &#8220;<a href="http://zomigi.com/blog/essential-resources-for-creating-liquid-and-elastic-layouts/" rel="nofollow">Essential Resources for Creating Liquid and Elastic Layouts</a>&#8221;<br />
Enquanto que do ponto de vista técnico tudo isso é facilmente possível, mas não se trata apenas de ligar esses recursos e tudo está feito.</p>
<h2><a name="ResponsiveWebsite-Imagensflex%C3%ADvel"></a>Imagens flexível</h2>
<p>Um grande problema que precisa ser resolvido com um &#8220;Responsive Website&#8221; são as imagens. Há uma série de técnicas para redimensionar imagens proporcionalmente, e muitos são facilmente aplicadas. A opção mais popular é usar CSS <strong>max-width</strong> para um reparo fácil.</p>
<div>
<div>
<div>
<pre>img { max-width: 100%; }</pre>
</div>
</div>
</div>
<p>Enquanto nenhuma outra regra de largura em imagem for usada para substituir essa, cada imagem será carregada em seu tamanho original, a menos que a área de visualização torna-se menor que a largura original da imagem. A largura máxima da imagem é definido como 100% da tela ou largura do navegador, então quando que 100% torna-se mais estreito, o mesmo acontece com a imagem. Essencialmente, como Jason Grigsby observou: &#8220;A idéia por trás imagens de fluidos é fornecer imagens no tamanho máximo que será usado. Você não declarar a altura e a largura em seu código, mas sim você deixa o browser redimensionar as imagens quando necessário ao usar CSS para orientar seu tamanho relativo&#8221;. É uma grande técnica e simples para redimensionar imagens.</p>
<p>Note-se que <strong>max-width</strong> não é suportada no IE, mas um bom uso de <strong>width: 100%</strong> em um arquivo CSS específico resolveria o problema. Mais uma questão é que quando uma imagem é redimensionada para um espaço menor, em alguns navegadores mais antigos no Windows, a renderização não é tão clara como deveria ser. Mas existe alguns scripts JS quem corrigem este problema.</p>
<p>Sabemos que o tamanho da imagem original é destinado a dispositivos de grande porte. Mas se as imagens forem renderizadas em um dispositivo móvel, o que poderiamos fazer para não impactar significativamente o tempo de download e ocupar um espaço desnecessário?</p>
<h3><a name="ResponsiveWebsite-ImagensRespons%C3%A1velporGrupo"></a>Imagens Responsável por Grupo</h3>
<p>Esta técnica, apresentada por Grupo, leva em consideração não apenas o redimensionamento de imagens proporcionalmente, mas também em diminui a resolução da imagem em dispositivos menores, paras as imagens grandes não desperdiçarem um espaço desnecessário em telas pequenas.</p>
<p><img src="https://confluence.abril.com.br/download/attachments/7012787/Responsive-WebSite-4.png?version=1&amp;modificationDate=1323912977000" alt="" width="300" /></p>
<p>Esta técnica requer alguns arquivos, os quais estão disponíveis no <a href="https://github.com/filamentgroup/Responsive-Images" rel="nofollow">Github</a>. Primeiro, o arquivo JavaScript (<a href="https://github.com/filamentgroup/Responsive-Images" rel="nofollow">rwd-images.js</a>) e o arquivo .htaccess. Então, podemos usar apenas um pouco de HTML para fazer referência tanto a resolução de imagens maiores e menores:</p>
<p>- Primeiro, a imagem pequena e em seguida uma referência para a imagem maior usando o parâmetro &#8220;<strong>full</strong>&#8220;.</p>
<div>
<div>
<div>
<pre>&lt;img src="smallImg.jpg?full=largeImg.jpg"&gt;</pre>
</div>
</div>
</div>
<p>O parâmetro &#8220;<strong>full</strong>&#8221; definido no arquivo relacionado acima e para qualquer tela que é maior do que 480 pixels, a imagem de maior resolução (largeImg.jpg) será carregado; telas menores não precisariam carregar a imagem maior, e assim a imagem menor (smallImg.jpg) será carregada.</p>
<p>O JavaScript insere no arquivo de imagem um elemento base que permite a página decidir qual a melhor usar para aquela determinada resolução. Quando a página carrega, todos os arquivos são reescritos para sua forma original, e apenas as imagens grandes ou pequenas são carregadas quando necessário. Com outras técnicas, todas as imagens de alta resolução teriam que ser carregados, mesmo que as versões maiores nunca seriam usados. Principalmente para sites com muitas imagens, esta técnica pode economizar muito no consumo de banda e tempo de carregamento.</p>
<p>Esta técnica é totalmente suportado em navegadores modernos, como o IE8+, Safari, Chrome e Opera, bem como os dispositivos móveis que usam esses navegadores mesmo (iPhone, iPad, etc.) Navegadores mais antigos (IE7 e Firefox) degradam muito bem e ainda redimensionam a imagem de resposta quando esta sendo carregada, mas para ambos em resoluções menores esta técnica é nula.</p>
<h3><a name="ResponsiveWebsite-RedimensionamentodeimagensnoiPhone"></a>Redimensionamento de imagens no iPhone</h3>
<p>Uma coisa legal sobre o iPhone e iPod Touch é que website se redimensiona automaticamente para caber na tela pequena. Um projeto normal só iria diminuir proporcionalmente no browser para um tamanho minúsculo, sem a necessidade de deslocamento para uma versão mobile. Então, o usuário poderia facilmente dar um &#8220;zoom in/out&#8221;, conforme necessário.</p>
<p>Mas isso gera um problemas quando redimencionamos as imagens proporcionalmente conforme o tamanho da tela. As imagens ainda são carregadas na sua forma original.</p>
<p>Para resolver este problema podemos usar uma meta tag específicas da Apple, colocando em seu site, dentro da tag <strong>&lt;head&gt;</strong> o código abaixo:</p>
<div>
<div>
<div>
<pre>&lt;meta name="viewport" content="width=device-width; initial-scale=1.0"&gt;</pre>
</div>
</div>
</div>
<p>Definindo o <strong>initial-scale</strong> para <strong>1</strong> substitui o padrão de redimensionamento das imagens, deixando como é que a largura do site fique com a mesma largura do dispositivo (nos modos retrato ou paisagem). A documentação da Apple tem muito mais informações sobre a meta tag viewport.</p>
<h2><a name="ResponsiveWebsite-Estruturadelayoutpersonalizado"></a>Estrutura de layout personalizado</h2>
<p>Para mudanças de tamanhos extremos, podemos querer alterar o layout totalmente, através de uma folha de estilo separada ou, de forma mais eficiente, através de uma consulta de mídia CSS. Este mudança não deve ser problemática, a maioria dos estilos pode permanecer o mesmo, enquanto as folhas de estilo específicas podem herdar estes estilos e os elementos podem ser decorados como &#8220;carros alegóricos&#8221;.</p>
<p>Por exemplo, poderíamos ter uma folha de estilo principal (que também seria o padrão) que define todos os principais elementos estruturais, tais como <strong>#conteiner, #header, #content , #sidebar, #nav, #footer</strong>, juntamente com cores, fundos e tipografia. Larguras com padrões flexíveis também poderia ser definido.</p>
<p>Se uma folha de estilo fez o layout muito estreito/curto (largura ou altura), poderíamos então detectar isso e mudar para uma nova folha de estilo. Esta nova folha de estilo &#8220;filha&#8221; adotaria esta a folha de estilo padrão e acrescentaria apenas o necessário para redefinir a estrutura do layout.</p>
<p>Aqui está o <strong><span style="text-decoration: underline">base.css</span></strong> (padrão) de conteúdo:</p>
<p>* link para o arquivo base.css</p>
<h2><a name="ResponsiveWebsite-MediaQueries"></a>Media Queries</h2>
<p>O CSS3 suporta todos os mesmos tipos de mídia como CSS 2.1, tais como <strong>screen, print e handheld</strong>, mas acrescentou dezenas de novos recursos de mídia, incluindo <strong>max-width, device-width, orientation e color</strong>. Novos dispositivos feitos após o lançamento do CSS3 (como o iPad e dispositivos Android) vai certamente dar suporte a recursos de mídia. Então, chamar uma consulta de mídia usando recursos CSS3 para esses dispositivos iria funcionar muito bem, e seria ignorado se acessado por um computador com um navegador mais antigo que não suporta CSS3.</p>
<p>Exemplo:</p>
<div>
<div>
<div>
<pre>&lt;link rel="stylesheet" type="text/css" media="screen and (max-device-width: 480px) href="sheetland.css" /&gt;</pre>
</div>
</div>
</div>
<p>Esta consulta de mídia é bastante auto-explicativa: se o navegador exibe esta página em uma tela (ao invés de impressão, etc), e se a largura da tela (não necessariamente o viewport) é de 480 pixels ou menos, então carregar sheetland.css.</p>
<p>Novos recursos CSS3 também incluem &#8220;<strong>orientation</strong>&#8221; (paisagem e retrato), <strong>device-width, min-device-width</strong> e muito mais. Pode-se criar várias folhas de estilo, bem como alterações no layout básico, definido para atender faixas de larguras e orientações (paisagem/retrato). Não deixe de olhar o artigo &#8220;<a href="http://www.alistapart.com/articles/responsive-web-design/" rel="nofollow">Meet the media query</a>&#8221; para mais exemplos e uma explicação mais aprofundada.<br />
Várias consultas de mídia também podem ser descartadas para uma folha de estilo único, que é a opção mais eficiente quando utilizado:</p>
<div>
<div>
<div>
<pre>/* Smartphones (portrait and landscape) ----------- */
@media only screen and (min-device-width : 320px) and (max-device-width : 480px) {
    ....
    styles here
    ....
}
/* Smartphones (landscape) ----------- */
@media only screen and (min-width : 321px) {
    ....
    styles here
    ....
}
/* Smartphones (portrait) ----------- */
@media only screen and (max-width : 320px) {
    ....
    styles here
    ....
}</pre>
</div>
</div>
</div>
<p>O código acima é de um modelo livre para várias consultas de mídia entre dispositivos populares por Andy Clark. Veja as diferenças entre esta abordagem e incluindo arquivos estilo diferente folha no mark-up como mostrado no post &#8220;<a href="http://stuffandnonsense.co.uk/blog/about/hardboiled_css3_media_queries" rel="nofollow">Hardboiled CSS3 Media Queries</a>&#8221;</p>
<h3><a name="ResponsiveWebsite-ConsultasdeM%C3%ADdiaCSS3"></a>Consultas de Mídia CSS3</h3>
<p>Acima estão alguns exemplos de consultas como a mídia, tanto do CSS 2.1 e CSS3 poderia funcionar. Vamos agora olhar para alguns casos específicos de como usar consultas de mídia em CSS3 para criar projetos Web responsáveis. Muitos destes usos são facilmente aplicados hoje, e todos serão definitivamente aplicáveis em um futuro próximo.</p>
<p>As propriedades <strong>min-width e max-width</strong> fazer exatamente o que eles sugerem. O <strong>min-width</strong> propriedade define um browser mínimo ou largura da tela que um determinado conjunto de estilos (ou folha de estilo separada) seria aplicada. Se alguma coisa está abaixo deste limite, o link folha de estilo ou estilos serão ignorados. O <strong>max-width</strong> propriedade faz exatamente o oposto. Qualquer coisa acima da largura do navegador ou na tela de máxima especificada não se aplica à consulta respectivas mídias.</p>
<p>Nota nos exemplos abaixo que estamos usando a sintaxe para consultas de mídia que poderiam ser usados ​​todos em um folha de estilo. Como mencionado acima, a forma mais eficiente de usar consultas de mídia é colocá-los todos em uma folha de estilo CSS, com o resto dos estilos para o site. Desta forma, várias solicitações não têm que ser feitas para várias folhas de estilo.</p>
<div>
<div>
<div>
<pre>@media screen and (min-width: 600px) {
  .myClass { width: 30%; float: right; }
}</pre>
</div>
</div>
</div>
<p>Na consulta de mídia acima a classe ( .myClass ) irá funcionar apenas se o navegador ou a largura da tela for acima de 600 pixels. Em outras palavras, esta consulta de mídia será executado somente se a largura mínima for de 600 pixels.</p>
<div>
<div>
<div>
<pre>@media screen and (max-width: 600px) {
  .aClassforSmallScreens { clear: both; font-size: 1.3em; }
}</pre>
</div>
</div>
</div>
<p>Agora, com o uso do <strong>max-width</strong>, esta consulta de mídia só se aplica a quando a largura da tela (ou navegador) for no máxima de 600 pixels ou mais estreita.</p>
<p>As consultas <strong>min-width/max-width</strong> podem ser aplicadas em qualquer tamanho de tela ou largura de navegador, às vezes é necessário fazer uma consulta de mídia que é relevante para um dispositivo específico. Isto significa que mesmo se um navegador ou área de visualização for minimizado para algo menor, a consulta de mídia ainda se aplicam ao tamanho do dispositivo real. O min-device-width e max-device-width são propriedades de consulta de mídia usados para atender um grupo de dispositivos com dimensões definidas, sem aplicar os mesmos estilos de outros tamanhos em um navegador que &#8220;imita&#8221; o tamanho do aparelho.</p>
<div>
<div>
<div>
<pre>@media screen and (max-device-width: 480px) {
  .classForiPhoneDisplay { font-size: 1.2em; }
}

@media screen and (min-device-width: 768px) {
  .minimumiPadWidth { clear: both; margin-bottom: 2px solid #ccc; }
}</pre>
</div>
</div>
</div>
<p>Há também outros truques com consultas de mídia para dispositivos de destino específico. Thomas Maier escreveu dois pequenos trechos e explicações para a segmentação do iPhone e do iPad apenas:</p>
<p>- <a href="http://thomasmaier.me/2010/06/css-for-iphone-4-retina-display/" rel="nofollow">CSS for iPhone 4 (retina display)</a></p>
<p>- <a href="http://thomasmaier.me/2010/03/howto-css-for-the-ipad/" rel="nofollow">How To: CSS para o iPad</a></p>
<p>Para o iPad especificamente, há também uma propriedade consulta de mídia chamado de <strong>orientação</strong>. O valor pode ser paisagem (orientação horizontal) ou retrato (orientação vertical).</p>
<div>
<div>
<div>
<pre>@media screen and (orientation: landscape) {
  .iPadLandscape { width: 30%; float: right; }
}

@media screen and (orientation: portrait) {
  .iPadPortrait { clear: both; }
}</pre>
</div>
</div>
</div>
<p>Infelizmente, esta propriedade só funciona no iPad. Para determinar a orientação para o iPhone e outros dispositivos o truque é usar o <strong>max-device-width e min-device-width</strong>.<br />
Há também muitas consultas de mídia que fazem sentido quando combinados. Por exemplo, o <strong>min-width e max-width</strong> podem definir um estilo específico.</p>
<div>
<div>
<div>
<pre>@media screen and (min-width: 800px) and (max-width: 1200px) {
  .classForaMediumScreen { background: #cc0000; width: 30%; float: right; }
}</pre>
</div>
</div>
</div>
<p>O código acima nesta consulta de mídia só se aplica quando a tela/browser tiver uma larguras entre 800 e 1200 pixels. Um bom uso dessa técnica é mostrar determinados conteúdos ou sidebars inteiro, dependendo da quantidade de espaço horizontal disponível.</p>
<p>Alguns desenvolvedores front-end preferem um link para uma folha de estilo separada para determinadas consultas de mídia. Se os benefícios organizacionais superarem a eficiência perdida &#8211; Tudo bem!. Para dispositivos que não mudam de orientação ou para telas cuja largura não podem ser alterados manualmente, usar uma folha de estilo separada são uma ótima alternativa.</p>
<p>Outro exemplo é um projeto flexível, destinado a telas de computadores com navegadores redimensionável. Se o navegador pode ser redimensionado manualmente, colocar todas as consultas variáveis de mídia em uma folha de estilo  é a melhor saida.</p>
<p>No entanto, a organização pode ser a chave, e um desenvolvedores front-end pode querer definir consultas de mídia em uma tag de link HTML:</p>
<div>
<div>
<div>
<pre>&lt;link rel="stylesheet" media="screen and (max-width: 600px)" href="small.css" /&gt;

&lt;link rel="stylesheet" media="screen and (min-width: 600px)" href="large.css" /&gt;

&lt;link rel="stylesheet" media="print" href="print.css" /&gt;</pre>
</div>
</div>
</div>
<h2><a name="ResponsiveWebsite-JavaScript"></a>JavaScript</h2>
<p>Outro método que pode ser usado é o JavaScript, especialmente como um back-up para dispositivos que não suportam todas as opções de consulta de mídia CSS3. Felizmente, já existe uma biblioteca JavaScript pronta que faz com que os navegadores mais antigos (IE5+, Firefox 1+, Safari 2) oferecer suporte a consultas de mídia CSS3. Se você já está usando essas consultas, basta pegar uma cópia da biblioteca e incluí-lo no seu código: <a href="http://code.google.com/p/css3-mediaqueries-js/" rel="nofollow">css3-mediaqueries.js</a>.</p>
<p>Além disso, você pode optar por uma abordagem mais &#8220;hands-on&#8221; como no código jQuery abaixo. Que detecta a largura do navegador e muda a folha de estilo.</p>
<div>
<div>
<div>
<pre>&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"&gt;
&lt;script type="text/javascript"&gt;
  $(document).ready(function(){
    $(window).bind("resize", resizeWindow);
    function resizeWindow(e){
      var newWindowWidth = $(window).width();
      // If width width is below 600px, switch to the mobile stylesheet
      if(newWindowWidth &lt; 600){
        $("link[rel=stylesheet]").attr( {href : "mobile.css"} );
      }
      // Else if width is above 600px, switch to the large stylesheet
      else if(newWindowWidth &gt; 600){
        $("link[rel=stylesheet]").attr( {href : "style.css"} );
      }
    }
  });
&lt;/script&gt;</pre>
</div>
</div>
</div>
<p>Existem muitas soluções em JavaScript para consultas de mídia CSS. Lembre-se que as consultas de mídia não são uma resposta absoluta, mas são ótimas opções para Web Developers quando se trata de soluções baseadas em CSS puro. Com a adição do JavaScript que podem acomodar variações muito mais abrangentes. Para obter mais informações leia o artigo &#8220;<a href="http://www.quirksmode.org/blog/archives/2010/08/combining_media.html" rel="nofollow">Combinação de consultas Mídia e JavaScript</a>&#8221;</p>
<h2><a name="ResponsiveWebsite-MostrandoouocultandoConte%C3%BAdo"></a>Mostrando ou ocultando Conteúdo</h2>
<p>É possível diminuir as coisas proporcionalmente e reorganizar os elementos necessário para fazer caber tudo (razoavelmente bem), quando uma tela fica menor. Mas fazer todo o conteúdo de telas grandes disponíveis em uma tela menor ou dispositivo móvel nem sempre é a melhor alternativa. Temos como boas práticas para ambientes móveis: uma navegação mais simples, o conteúdo mais focado, listas/linhas em vez de múltiplas colunas.</p>
<p>O Web Developer não deve apenas saber como criar um layout flexível em uma ampla gama de plataformas e tamanhos de tela. Ele deve também deixar o usuário escolher o conteúdo. Felizmente, via CSS é possível mostrar e ocultar o conteúdo com facilidade!. Utilizando o <strong>&#8220;display: none;&#8221;</strong></p>
<p>Basta declarar <strong>&#8220;display: none&#8221;</strong> para o elemento HTML que precisa ser escondido, em uma folha de estilo específica ou detectar a largura do navegador, e fazê-lo através de JavaScript. Além de esconder o conteúdo em telas menores, também podemos esconder os blocos em nossa folha de estilo padrão.</p>
<p>Note que não falamos do <strong>&#8220;visibility: hidden&#8221;</strong>, isso apenas deixa o conteúdo invisível (embora ele ainda está lá), enquanto a propriedade <strong>&#8220;display: none&#8221;</strong> esconde dele completamente. Para dispositivos menores, não há necessidade de manter o mark-up na página &#8211; isso poderia causar uma deslocamento desnecessário ou até quebrar o layout.</p>
<p>Aqui está o nosso mark-up:</p>
<div>
<div>
<div>
<pre>&lt;p&gt;
  &lt;a href="#"&gt;Left Sidebar Content&lt;/a&gt; | &lt;a href="#"&gt;Right Sidebar Content&lt;/a&gt;
&lt;/p&gt;
&lt;div id="content"&gt;
  &lt;h2&gt;Main Content&lt;/h2&gt;
&lt;/div&gt;
&lt;div id="sidebar-left"&gt;
  &lt;h2&gt;A Left Sidebar&lt;/h2&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div id="sidebar-right"&gt;
  &lt;h2&gt;A Right Sidebar&lt;/h2&gt;
&lt;/div&gt;</pre>
</div>
</div>
</div>
<p>Em nossa folha de estilo padrão a seguir, temos escondido os links para o conteúdo da barra lateral. Porque a nossa tela é grande o suficiente, podemos exibir este conteúdo no carregamento da página.<br />
Aqui está o <strong>base.css</strong> (padrão) de conteúdo:</p>
<div>
<div>
<div>
<pre>#content { width: 54%; float: left; margin-right: 3%; }
#sidebar-left { width: 20%; float: left; margin-right: 3%; }
#sidebar-right { width: 20%; float: left; }
.sidebar-nav { display: none; }</pre>
</div>
</div>
</div>
<p>Agora em seguida, nós escondemos as duas barras laterais e mostramos os links de navegação para estes pedaços de conteúdo. Como alternativa, os links de navegação poderiam ser chamados via JavaScript, apenas para cancelar o &#8220;display: none&#8221;, quando clicado as barras laterais poderiam ser exibidas abaixo do conteúdo (#content).</p>
<p>Aqui está o conteúdo (mais simples) <strong>mobile.css</strong>:</p>
<div>
<div>
<div>
<pre>#content { width: 100%; }
#sidebar-left { display: none; }
#sidebar-right { display: none; }
.sidebar-nav { display: block; }</pre>
</div>
</div>
</div>
<p>Com a facilmente mostrar e ocultar conteúdo, reorganizar os elementos de layout e redimensionar automaticamente imagens, elementos de formulário e muito mais, um projeto pode ser transformado para atender a uma enorme variedade de tamanhos de tela e tipos de dispositivos. Quando a tela fica menor, reorganizar os elementos para se adequar as diretrizes móveis, por exemplo, use um script ou folha de estilo alternativa para aumentar o espaço em branco ou para substituir imagens de navegação em dispositivos móveis para uma melhor usabilidade (ícones seria mais benéfico em telas menores).</p>
<p>Abaixo estão alguns dos recursos pertinentes:</p>
<p>- <a href="http://www.smashingmagazine.com/2009/01/13/mobile-web-design-trends-2009/" rel="nofollow">Mobile Web Design Trends For 2009</a><br />
- <a href="http://www.webcredible.co.uk/user-friendly-resources/web-usability/mobile-guidelines.shtml" rel="nofollow">7 Usability Guidelines for Websites on Mobile Devices</a></p>
<h2><a name="ResponsiveWebsite-AlgunsexemplosdeResponsiveWebsite"></a>Alguns exemplos de Responsive Website</h2>
<p>Abaixo temos alguns exemplos de Responsive Websites em prática hoje. Para muitos desses sites, existe várias soluções para uma variedade de navegadores, e alguns até mesmo ajustam os elementos dinamicamente dependendo do tamanho da tela e dimensões específicas do navegador. Visite cada um destes, e ajuste o tamanho do navegador ou dispositivos de mudança de vê-los em ação.</p>
<h5><a name="ResponsiveWebsite-Galeriade%22MediaQueries%22"></a>Galeria de &#8220;Media Queries&#8221;</h5>
<p><a href="http://mediaqueri.es/" rel="nofollow">http://mediaqueri.es/</a></p>
<h5><a name="ResponsiveWebsite-FoodSense"></a>Food Sense</h5>
<p><a href="http://foodsense.is/" rel="nofollow">http://foodsense.is/</a></p>
<table>
<tbody>
<tr>
<td><img src="http://mediaqueri.es/static/shots/fse.smartphone.thumb.png" alt="" /></td>
<td><img src="http://mediaqueri.es/static/shots/fse.tablet.thumb.png" alt="" /></td>
<td><img src="http://mediaqueri.es/static/shots/fse.netbook.thumb.png" alt="" /></td>
<td><img src="http://mediaqueri.es/static/shots/fse.desktop.thumb.png" alt="" /></td>
</tr>
</tbody>
</table>
<p><strong>Fonte:</strong> <a href="http://www.smashingmagazine.com/" rel="nofollow">Smashing Magazine</a>, <a href="http://www.alistapart.com/" rel="nofollow">A List Apart</a>, <a href="http://24ways.org/" rel="nofollow">24 ways</a>, <a href="http://www.impressivewebs.com/" rel="nofollow">Impressive Webs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://afronteirafinal.com/responsive-website-o-que-e-isso-e-como-usar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saiba mais sobre DOM e ECMAScript</title>
		<link>http://afronteirafinal.com/saiba-mais-sobre-dom-e-ecmascript/</link>
		<comments>http://afronteirafinal.com/saiba-mais-sobre-dom-e-ecmascript/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 03:41:46 +0000</pubDate>
		<dc:creator>lcameroon</dc:creator>
				<category><![CDATA[Cameroon]]></category>
		<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JScript]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://afronteirafinal.com/?p=290</guid>
		<description><![CDATA[Por muito tempo eu fingia saber exatamente o que era DOM, ECMAScript, JScript, DHTML, etc significava. Mas num final de semana desses eu peguei para ler sobre o que eles significam e como eles estão relacionados. Esta é a forma como a especificação DOM define um &#8220;DOM&#8221;: O Document Object Model (DOM) é um Application [...]]]></description>
			<content:encoded><![CDATA[<p>Por muito tempo eu fingia saber exatamente o que era DOM, ECMAScript, JScript, DHTML, etc significava. Mas num final de semana desses eu peguei para ler sobre o que eles significam e como eles estão relacionados.</p>
<p>Esta é a forma como a especificação DOM define um &#8220;DOM&#8221;:</p>
<blockquote><p><strong><em>O Document Object Model (DOM) é um Application Programming Interface (API) para HTML válido e documentos XML bem formatados. Ele define a estrutura lógica dos documentos e o modo como um documento é acessado e manipulado.</em></strong></p></blockquote>
<p><span id="more-290"></span>Em outras palavras, o DOM é uma forma padrão para permitir que as linguagens de programação interajam com documentos HTML / XML. O W3C fornece, o que é chamado de linguagem de vinculações, para o ECMAScript. Isto significa que as funcionalidades definidos na especificação DOM foram implementadas nessa linguagem.</p>
<p>ECMAScript é uma &#8220;uniformização&#8221; da língua (script) dos &#8220;homens das cavernas&#8221; &#8211; Netscape JavaScript e Microsoft JScript para que todos os browsers possam compreender instruções escritas usando o ECMAScript.</p>
<p>Agora, existem três grandes &#8220;dialetos&#8221; do ECMAScript: JavaScript (Firefox / Chrome / Safari), JScript (IE), e ActionScript (Adobe Flash / Flex). Estes são chamados dialetos como suporte a código escrito antes da normalização e fornecem alguns recursos não disponíveis no ECMAScript ou em outros dialetos.</p>
<p>Os navegadores fornecem uma implementação das interfaces do DOM que permite ECMAScript (ou dialetos suportados) interagirem com o DOM de um documento XML/HTML. Assim, a maioria dos browsers decentes, lançado conforme os padrões, dizem qual ECMAScript é suportado para cada versão do seu navegador.</p>
<p>O DOM de uma página HTML tem uma &#8220;árvore-como estrutura&#8221; quando visualizadas. É importante notar que o DOM não representa o conteúdo do HTML, mas representa apenas objetos através dos quais o conteúdo pode ser acessado. Esses objetos são modelados após a marcação que existe na página HTML. As relações, funções, comportamentos e atributos desses objetos são identificados pelo DOM.</p>
<p>Bom, é isso! Você normalmente não precisa de saber sobre interfaces DOM principalmente se você trabalhar com uma biblioteca JavaScript. Mas se você estiver interessado, Quirksmode (<a href="http://www.quirksmode.org" target="_blank">http://www.quirksmode.org</a>) tem uma excelente introdução ao DOM.</p>
]]></content:encoded>
			<wfw:commentRss>http://afronteirafinal.com/saiba-mais-sobre-dom-e-ecmascript/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SVG vs CANVAS</title>
		<link>http://afronteirafinal.com/svg-vs-canvas/</link>
		<comments>http://afronteirafinal.com/svg-vs-canvas/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 12:42:03 +0000</pubDate>
		<dc:creator>lcameroon</dc:creator>
				<category><![CDATA[Cameroon]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[DOM SVG]]></category>
		<category><![CDATA[explorecanvas]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[SVG Web]]></category>
		<category><![CDATA[W3C]]></category>

		<guid isPermaLink="false">http://afronteirafinal.com/?p=211</guid>
		<description><![CDATA[Como você deve ter notado em meu post anterior sobre HTML5 (http://afronteirafinal.com/prepare-se-para-o-html-5), eu abordei sobre SVG e Canvas e nas últimas semanas os debates estão se aquecendo sobre os méritos de cada um, e muitos estão prevendo um &#8220;death match&#8221;. No entanto, minha pesquisa me convence de que cada um tem suas próprias finalidades, mas [...]]]></description>
			<content:encoded><![CDATA[<p>Como você deve ter notado em meu post anterior sobre HTML5 (<a href="http://afronteirafinal.com/prepare-se-para-o-html-5" target="_blank">http://afronteirafinal.com/prepare-se-para-o-html-5</a>), eu abordei sobre SVG e Canvas e nas últimas semanas os debates estão se aquecendo sobre os méritos de cada um, e muitos estão prevendo um &#8220;death match&#8221;. No entanto, minha pesquisa me convence de que cada um tem suas próprias finalidades, mas definitivamente chegou a hora de usá-los.</p>
<h2>O QUE É SVG?</h2>
<p>SVG é uma linguagem para descrever gráficos bidimensionais e aplicações gráficas em XML. Alguns exemplos de SVG são: o logo da Wikipedia (<a href="http://upload.wikimedia.org/wikipedia/commons/7/77/Wikipedia_svg_logo.svg">http://upload.wikimedia.org/wikipedia/commons/7/77/Wikipedia_svg_logo.svg</a>) e o &#8220;Hello World&#8221; do SVG chamado de &#8220;Tiger&#8221; (<a href="http://www.amplesdk.com/examples/svg/tiger">http://www.amplesdk.com/examples/svg/tiger</a>). Veja o fonte desses dois arquivos SVG para ver como SVG parece.<span id="more-211"></span></p>
<p><strong>Demo SVG:</strong></p>
<p><img src="http://afronteirafinal.com/imgs/posts/200911/svg.png" alt="SVG" /></p>
<pre>&lt;svg xmlns:svg="http://www.w3.org/2000/svg"
  xmlns="http://www.w3.org/2000/svg"
  viewBox="0 0 200 100"
  width="200px" height="100px"&gt;
  &lt;circle cx="50" cy="50" r="30"
  style="stroke:none; fill:#ff0000;"/&gt;
  &lt;g transform="translate(100, 20) scale(1.65)"&gt;
  &lt;polygon points="36 25, 25 36, 11 36, 0 25,
  0 11, 11 0, 25 0, 36 11"
  style="stroke:none; fill:#0000ff;" /&gt;
  &lt;/g&gt;
  &lt;rect x="60" y="20" height="60" width="60"
  style="stroke:none; fill:#00ff00;
  fill-opacity: 0.5;" /&gt;
&lt;/svg&gt;</pre>
<h2>O QUE É CANVAS?</h2>
<p>A especificação do HTML 5 define da seguinte forma: &#8220;Elemento de tela que representa um processamento gráficos &#8220;bitmap&#8221; para gerar imagens, gráficos, jogos através de JavaScript&#8221;.</p>
<p><em>Vladimir Vukićević</em> da Mozilla, em 2006, deu uma boa explicação sobre as diferenças entre o SVG e Canvas:</p>
<p>- SVG é baseado em XML. Isto significa que, cada elemento está disponível no DOM SVG (útil quando você deseja anexar os manipuladores de eventos javascript para um elemento). Canvas não é baseado em XML.</p>
<p>- Canvas é processado pixel por pixel. SVG é um monte de vetores e precisa ser manipulado como um grupo de formas. Uma analogia no mundo Photoshop seria, criar um retângulo usando a &#8220;ferramenta forma&#8221; contra usar o &#8220;PaintBrush&#8221;.</p>
<p><strong>Demo Canvas:</strong></p>
<p><img src="http://afronteirafinal.com/imgs/posts/200911/svg.png" alt="Canvas" /></p>
<p>E aqui está o JavaScript que o criou o desenho:</p>
<pre>function drawSimpleCanvas() {
 var canvas =
 document.getElementById("simpleCanvas");
  if (canvas.getContext) {
  var ctx = canvas.getContext("2d");
  ctx. (); // the circle
  ctx.fillStyle = "#ff0000";
  ctx.arc(50, 50, 30, 0, 2*Math.PI, true);
  ctx.closePath();
  ctx.fill();
  ctx.save();
  // move and resize the octagon
  ctx.translate(100, 20);
  ctx.scale(1.65, 1.65);
  ctx.fillStyle = "#0000ff";
  ctx.beginPath();
  ctx.moveTo(36, 25); ctx.lineTo(25, 36);
  ctx.lineTo(11, 36); ctx.lineTo(0, 25);
  ctx.lineTo(0, 11); ctx.lineTo(11, 0);
  ctx.lineTo(25, 0); ctx.lineTo(36, 11);
  ctx.closePath();
  ctx.fill();
  // restore graphics as they
  // were before move and resize
  ctx.restore();
  ctx.fillStyle = "#00ff00";
  ctx.globalAlpha = 0.5;
  ctx.beginPath();
  ctx.rect(60, 20, 60, 60);
  ctx.closePath();
  ctx.fill();
 }
}</pre>
<h2>QUEM VAI GANHAR?</h2>
<p>Mesmo que sejam completamente diferentes na sua natureza e finalidade, há várias coisas que pode ser feito usando &#8220;Canvas&#8221; e &#8220;SVG&#8221;. A recente popularização do elemento &#8220;Canvas&#8221; parecem para  algumas pessoas a morte do SVG. Mas pelo que notei está longe da verdade.</p>
<p>O &#8220;Canvas&#8221; é tão bom como uma imagem &#8211; mas ele não manipula pixel por pixel. Neste momento, elemento Canvas não suporta os &#8220;manipuladores&#8221; de eventos (por exemplo, ter um retângulo 20x60px dentro de um canvas que seja clicável). Já com o SVG isso é possível.</p>
<p>Canvas em seu estado &#8220;natural&#8221; não é acessível. O SVG, porém, é bastante acessível.</p>
<p>No entanto existe diferenças significativas de desempenho entre Canvas e SVG. O resultado do experimento descrito no link (<a href="http://www.borismus.com/canvas-vs-svg-performance" target="_blank">http://www.borismus.com/canvas-vs-svg-performance</a>) é que: Canvas é mais adequado para um &#8220;gráficos intensivos&#8221; onde o objeto são os redesenhos com freqüência (como um jogo), enquanto o SVG é melhor para aplicações que envolvem grandes áreas de processamento (como Google Maps).</p>
<h2>POSSO USÁ-LOS AGORA?</h2>
<p>Sim, pode. Existem muitas iniciativas para permitir que os navegadores que não suportam SVG ou Canvas tornarem-se &#8220;usáveis&#8221; por outros meios. O Google tem um impressionante projeto <strong>SVG Web</strong> (<a href="http://code.google.com/p/svgweb/" target="_blank">http://code.google.com/p/svgweb/</a>) que usa o Flash para renderizar SVG em navegadores que não suportam SVG nativamente. Para Canvas, o Google tem uma biblioteca &#8220;<strong>explorecanvas</strong>&#8221; (<a href="http://code.google.com/p/explorercanvas/" target="_blank">http://code.google.com/p/explorercanvas/</a>) que utiliza VML (ou Silverlight) para processar os elementos Canvas (basta incluir o arquivo excanvas.js, e ele deve funcionar) no Internet Explorer.</p>
<h2>ENTÃO&#8230; QUEM GANHA?</h2>
<p>Ambos. Estas é uma fase fantástica para SVG e Canvas. Finalmente temos uma alternativa natural para o &#8220;Flash&#8221; e animação de necessidade básica. Mantenha seus olhos abertos no &#8220;mailing list&#8221;  do &#8220;W3C HTML Working Group&#8221; (<a href="http://lists.w3.org/Archives/Public/public-html/" target="_blank">http://lists.w3.org/Archives/Public/public-html/</a>) para as últimas notícias.</p>
]]></content:encoded>
			<wfw:commentRss>http://afronteirafinal.com/svg-vs-canvas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O que você tem que saber sobre CSS3</title>
		<link>http://afronteirafinal.com/o-que-voce-tem-que-saber-sobre-css3/</link>
		<comments>http://afronteirafinal.com/o-que-voce-tem-que-saber-sobre-css3/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 17:58:14 +0000</pubDate>
		<dc:creator>lcameroon</dc:creator>
				<category><![CDATA[Cameroon]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Gecko]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[Webkit]]></category>

		<guid isPermaLink="false">http://afronteirafinal.com/?p=163</guid>
		<description><![CDATA[Muitos de vocês provavelmente já perceberam toda a agitação em torno do CSS3, mas exatamente quais técnicas podemos usar hoje? Neste artigo, vou mostrar algumas técnicas diferentes CSS3, que alguns dos principais navegadores (mais especificamente Firefox, Chrome, Safari e Opera) já suportam. Com isso ficará evidente a degradação do layout pela falta de suporte dos [...]]]></description>
			<content:encoded><![CDATA[<p>Muitos de vocês provavelmente já perceberam toda a agitação em torno do CSS3, mas exatamente quais técnicas podemos usar hoje?</p>
<p>Neste artigo, vou mostrar algumas técnicas diferentes CSS3, que alguns dos principais navegadores (mais especificamente Firefox, Chrome, Safari e Opera)  já suportam. Com isso ficará evidente a degradação do layout pela falta de suporte dos outros browsers (como por exemplo o Internet Explorer). Usando as extensões específicas disponíveis para cada navegador, muitos dos estilos que estão sendo especificados no CSS3 já podem ser usados hoje!</p>
<h3>CSS Vendor Extensions</h3>
<p>O CSS permite que os desenvolvedores de navegadores criem implementações proprietárias para os mais variados estilos CSS. Isso permite ao distribuidor do navegador realize implementações próprias para determinada propriedade CSS, mesmo que já padronizado ou especificado, o que não é tão comum nem tão recomendado. Para utilizar no CSS, a propriedade que deseja utilizar para determinado(s) navegador(es) deve ser precedida de um prefixo. Esse prefixo indicará que se trata de uma extensão que somente aquele navegador interpretará.<br />
<br />
<em><strong>Alguns browsers com seus prefixos (CSS Proprietary Extensions Scheme):</strong></em></p>
<ul>
<li>Firefox : -moz-</li>
<li> Safari: -webkit-</li>
<li>Chrome: -webkit-</li>
<li>Opera: -o-</li>
<li>IE: -ms-</li>
</ul>
<p>A grande vantagem das extensões é que os navegadores podem ir implementando as novas propriedades, como no caso do CSS3. Propriedades essas que já estão previstas, porém não especificadas. Isso certamente acelera a evolução dos navegadores em relação ao suporte às novas propriedades; Prepara os &#8220;CSS coders&#8221; para a nova forma de trabalhar; e contribui para a especificação oficial do CSS propriamente dita.<br />
Clique se quiser saber mais sobre <a target="_blank" href="http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords" rel="nofollow">(CSS Proprietary Extensions Scheme)</a>;</p>
<p>Como você deve ter percebido, uma grande desvantagem de usar essas extensões é o fato de que acabamos tendo que repetir as propriedades para que funcione em todos os navegadores. É isso ou procurar soluções com javascript, folhas de estilos alternativas entre outras &#8220;viagens&#8221; para que a manutenção do código continue simples onerando o mínimo de recursos. Tudo bem, não basta falar, vamos mergulhar na direito no CSS3! Nota: os estilos sem um prefixo é a proposta da especificação atual W3C.</p>
<p><span id="more-163"></span></p>
<h3>Uma nota sobre os Demos nesta página</h3>
<p>Todos os exemplos estão nesta página, por isso, se você não está vendo alguns exemplos corretamente (ou nada), então o navegador que você está usando não dá suporte a técnica particular CSS3.</p>
<h3>Sombras</h3>
<p>O efeito de sombra aceita vários valores. Em primeiro lugar é simplesmente a cor da sombra. Ele aceita quatro valores de &#8220;length&#8221; e os dois primeiros são os x (offset horizontal) e do y (offset vertical). O valor seguinte é a quantidade de desfoque adicionado à sombra. O valor da quarta e última, é a quantidade propagação da sombra. &#8220;Box shadow&#8221; também vai aceitar uma palavra-chave &#8220;inset&#8221; que vai criar uma sombra interna.</p>
<pre class="brush: css">box-shadow: #333 3px 3px 4px;
-moz-box-shadow: #333 3px 3px 4px;
-webkit-box-shadow: #333 3px 3px 4px;</pre>
<p><span style="text-decoration: underline;">DEMO DE SOMBRA</span></p>
<pre class="brush: css">&lt;p&gt;
&lt;div style=&quot;width: 500px; height: 100px; margin-left:50px; color: #FFF;
background-color: #069; padding: 0 7px 0 7px; box-shadow: #333 3px 3px 4px;
-moz-box-shadow: #333 3px 3px 4px; -webkit-box-shadow: #333 3px 3px 4px;&quot;&gt;
&amp;amp;amp;amp;nbsp;&lt;/div&gt;&lt;br /&gt;
&lt;/p&gt;</pre>
<h3>Gradientes</h3>
<p>Gradientes pode ser bastante confuso no início, especialmente quando se comparam as diferenças -moz e -webkit. Com -moz você primeiro definir a direção do gradiente, em seguida, determinar o início e término. Da -webkit tem um pouco mais de código. Primeiro você define o tipo de gradiente. Os próximos dois valores definem a direção. Finalmente, os últimos dois valores definem o início e término da cor do gradiente.</p>
<pre class="brush: css">-moz-linear-gradient(-90deg,#1aa6de,#022147);
-webkit-gradient(linear, left top, left bottom, from(#1aa6de), to(#022147));</pre>
<p><span style="text-decoration: underline;">DEMO DE GRADIENTE</span></p>
<pre class="brush: css">&lt;p&gt;
&lt;div style=&quot;width: 500px; height: 100px; background-color:#2e3192;
background: -moz-linear-gradient(-90deg,#1aa6de,#022147);
-webkit-gradient(linear, left top, left bottom, from(#069), to(#036));&quot;&gt;
&amp;amp;amp;amp;nbsp;&lt;/div&gt;&lt;br /&gt;
&lt;/p&gt;</pre>
<h3>RGBA</h3>
<p>O método de cor RGBA realmente é mais fácil do que pode parecer à primeira vista. Leva quatro valores e na ordem em que estão: a quantidade de vermelho, a quantidade de verde, de azul e do nível de opacidade. Em vez de usar cor em (#) hexadecimal, defina o modo de cor em RGB, quanto o nível de opacidade pode se ver a cor transparente. A opacidade aceita valores entre 0 e 1. Com 0 sendo completamente opaco e 1 sendo a cor real definida. O exemplo abaixo tem um valor de opacidade da .5 fazendo com que o elemento fique com 50% de transparência. RGBA na verdade não necessita de qualquer das extensões do navegador.</p>
<pre class="brush: css">background-color: rgba(0, 54, 105, .5);</pre>
<p><span style="text-decoration: underline;">DEMO DE RGBA</span></p>
<pre class="brush: css">&lt;p&gt;
&lt;div style=&quot;width: 480px; height: 80px; text-align: center;
padding: 10px; background-color: rgba(0, 54, 105, .5);&quot;&gt;
Este elemento está com 50% de transparência &lt;/div&gt;&lt;br /&gt;
&lt;/p&gt;</pre>
<h3>HSL</h3>
<p>Junto com RGBA, CSS3 pode tornar o modelo de cor HSL disponível para nós. Isso poderia dar-nos todo um arsenal de cores e tons. Neste modelo de cor, HSL (H = tonalidade, S = saturação, L = luminosidade).  Tonalidade é um grau na &#8220;roda de cores&#8221;, enquanto a saturação e a luminosidade são valores percentuais das cores.</p>
<pre class="brush: css">background-color: hsl(209, 41.2%, 20,6%);</pre>
<p><span style="text-decoration: underline;">DEMO HSL</span></p>
<pre class="brush: css">&lt;p&gt;
&lt;div style=&quot;width: 480px; height: 80px; padding: 10px;
background-color: hsl(209, 41.2%, 20,6%);&quot;&gt; &amp;amp;amp;amp;nbsp; &lt;/div&gt;&lt;br /&gt;
&lt;/p&gt;</pre>
<h3>Cor da Borda</h3>
<p>Com este estilo, você deve definir border-top border-right border-bottom e border-left separadamente para obter o efeito abaixo. Você vai perceber que eu tenho definido uma borda de 8px juntamente com 8 cores diferentes para cada estilo de cor da borda. Isso porque a mesma quantidade de cores tem de coincidir com a quantidade de pixels na definição da borda.</p>
<pre class="brush: css">border: 8px solid #000;
-moz-border-bottom-colors: #555 #666 #777 #888 #999 #aaa #bbb #ccc;
-moz-border-top-colors:    #555 #666 #777 #888 #999 #aaa #bbb #ccc;
-moz-border-left-colors:   #555 #666 #777 #888 #999 #aaa #bbb #ccc;
-moz-border-right-colors:  #555 #666 #777 #888 #999 #aaa #bbb #ccc;</pre>
<p><span style="text-decoration: underline;">DEMO COR DA BORDA</span></p>
<pre class="brush: css">&lt;p&gt;
&lt;div style=&quot;width: 500px; height: 100px;
background-color: #2e3192; border: 8px solid #000;
-moz-border-bottom-colors: #555 #666 #777 #888 #999 #aaa #bbb #ccc;
-moz-border-top-colors: #555 #666 #777 #888 #999 #aaa #bbb #ccc;
-moz-border-left-colors: #555 #666 #777 #888 #999 #aaa #bbb #ccc;
-moz-border-right-colors: #555 #666 #777 #888 #999 #aaa #bbb #ccc;&quot;&gt;
&amp;amp;amp;amp;nbsp; &lt;/div&gt;&lt;br /&gt;
&lt;/p&gt;</pre>
<h3>Seleção Cor do Texto</h3>
<p>Devo dizer que mudar a cor de seleção de texto é um recurso muito bacana. Com o pseudo-elemento ::selection, você pode alterar a color e background quando o usuário destaca um elemento de texto. O ::selection foi removido do projecto CSS3 atual, mas deixa a esperança que irão adicioná-lo novamente mais tarde!</p>
<pre class="brush: css">::selection {
background: #3C0; /* Safari */
color: #90C;
}
::-moz-selection {
background: #3C0; /* Firefox */
color: #90C;
}</pre>
<p><span style="text-decoration: underline;">DEMO SELEÇÃO DE TEXTO</span></p>
<pre class="brush: css">&lt;style type=&quot;text/css&quot;&gt;
&lt;!--
#textSelection { width: 500px; }
/* Safari */
p.selection::selection { background: #3C0; color: #90C; }
/* Firefox */
p.selection::-moz-selection { background: #3C0; color: #90C; }
--&gt;
&lt;/style&gt;
&lt;div id=&quot;textSelection&quot;&gt;
&lt;p&gt;Selecione o texto para ver o efeito deste recurso! Selecione o texto para
ver o efeito deste recurso! Selecione o texto para ver o efeito deste recurso!
Selecione o texto para ver o efeito deste recurso! Selecione o texto para ver o
efeito deste recurso! Selecione o texto para ver o efeito deste recurso! Selecione
o texto para ver o efeito deste recurso! Selecione o texto para ver o efeito deste
recurso! Selecione o texto para ver o efeito deste recurso! Selecione o texto para
ver o efeito deste recurso! Selecione o texto para ver o efeito deste recurso!
Selecione o texto para ver o efeito deste recurso! &lt;/p&gt;
&lt;/div&gt;</pre>
<h3>Transformação</h3>
<p>Com o estilo &#8220;transform&#8221;, você pode fazer os elementos &#8220;crescerem&#8221;, quando o mouse estiver sobre o elemento. Com um valor acima de 1 o elemento irá aumentar de tamanho. Por outro lado, com um valor abaixo de 1 fará com que o elemento diminuir de tamanho. Junto com o &#8220;scale&#8221; o &#8220;transform&#8221; tem muitos diferentes formas de uso. Visite a página do desenvolvedor do Firefox para ver o que mais você pode usar. (<a href="https://developer.mozilla.org/En/CSS/-moz-transform">https://developer.mozilla.org/En/CSS/-moz-transform</a>)</p>
<pre class="brush: css">-moz-transform: scale(1.15);
-webkit-transform: scale(1.15);</pre>
<p><span style="text-decoration: underline;">DEMO DE TRANSFORMAÇÃO</span></p>
<pre class="brush: css">&lt;style type=&quot;text/css&quot;&gt;
&lt;!--
#transform ul { list-style:none; background:none; }
#transform ul li{ width: 200px; color:#FFF; list-style: none; padding: 5px;
background:none; background-color: #069; border-bottom: #036 solid 1px; }
#transform li a:link { color: white; }
#transform li:hover { -moz-transform: scale(1.15); -webkit-transform: scale(1.15);
background-color: #003669; }
--&gt;
&lt;/style&gt;
&lt;div id=&quot;transform&quot;&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#&quot;&gt;A Empresa&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Produtos&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Serviços&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Contato&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/div&gt;</pre>
<h3>Layout Multi-column</h3>
<p>Com este novo estilo de &#8220;layout multi-column&#8221;, podemos dar ao nosso texto um &#8220;estilo jornal&#8221;. Implementar isto é muito simples em relação ao modo &#8220;tradicional&#8221; de se fazer com CSS. Primeiro eu especifico quantas colunas eu quero, o tipo de regra que eu quero para separá-las, e como que &#8220;espaçamento&#8221; eu quero entre as colunas. Simples não?</p>
<pre class="brush: css">-moz-column-count:3;
-moz-column-rule: solid 1px black;
-moz-column-gap: 20px;</pre>
<p><span style="text-decoration: underline;">DEMO DE MULTI-COLUMN</span></p>
<pre class="brush: css">&lt;style type=&quot;text/css&quot;&gt;
&lt;!--
#multiColumns {
	-moz-column-count:3;
	-moz-column-rule: solid 1px black;
	-moz-column-gap: 20px; }
--&gt;
&lt;/style&gt;
&lt;div id=&quot;multiColumns&quot;&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.&lt;/p&gt;
&lt;/div&gt;</pre>
<h3>Resumo</h3>
<p>Espero que todos estão tão animado com o CSS3 como eu estou. Ele nos dá mais poder tanto para webmasters quanto para desenvolvedores, e em muitos aspectos muito mais simples. Agora, se nós pudéssemos chegar em todos os navegadores e dizer para apoiá-lo seria fantástico! O que eu mostrei são apenas algumas das novas características potenciais do CSS3. Se você quiser obter mais informações, dicas e/ou ajuda, eu aconselho a visitar todos os sites abaixo:</p>
<p>* CSS: Current Work (<a href="http://www.w3.org/Style/CSS/current-work" target="_blank">http://www.w3.org/Style/CSS/current-work</a>)</p>
<p>* CSS3.info (<a href="http://www.css3.info/" target="_blank">http://www.css3.info/</a>)</p>
<p>* Mozilla CSS Extensions (<a href="https://developer.mozilla.org/en/CSS_Reference/Mozilla_Extensions" target="_blank">https://developer.mozilla.org/en/CSS_Reference/Mozilla_Extensions</a>)</p>
<p>* The WebKit Open Source Project (<a href="http://webkit.org/" target="_blank">http://webkit.org/</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://afronteirafinal.com/o-que-voce-tem-que-saber-sobre-css3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Prepare-se para o HTML 5</title>
		<link>http://afronteirafinal.com/prepare-se-para-o-html-5/</link>
		<comments>http://afronteirafinal.com/prepare-se-para-o-html-5/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 18:45:12 +0000</pubDate>
		<dc:creator>lcameroon</dc:creator>
				<category><![CDATA[Cameroon]]></category>
		<category><![CDATA[(X)HTML 5]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[HTML 5]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[Web Forms 2]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://afronteirafinal.com/?p=14</guid>
		<description><![CDATA[Com apoio no Chrome, Firefox 3.5, Opera e Safari, o HTML 5 está chegando em você como um trem desgovernado. Aqui estão algumas sugestões para ajudar você a se preparar para subir a bordo ao invés de ser deixada na plataforma ou atropelado. Veja o que outros têm feito A primeira coisa que você pode [...]]]></description>
			<content:encoded><![CDATA[<p>Com apoio no Chrome, Firefox 3.5, Opera e Safari, o HTML 5 está chegando em você como um trem desgovernado. Aqui estão algumas sugestões para ajudar você a se preparar para subir a bordo ao invés de ser deixada na plataforma ou atropelado.</p>
<p><span id="more-14"></span></p>
<p><strong>Veja o que outros têm feito</strong></p>
<p>A primeira coisa que você pode fazer para se preparar para o HTML 5 é ver como as outras pessoas estão usando. Uma visita à galeria de HTML 5 (<a title="http://html5gallery.com/" href="http://html5gallery.com/" target="_blank">http://html5gallery.com/</a>) vai mostrar como vários sites já estão usando os novos elementos de HTML 5. Use-o como fonte de inspiração!</p>
<p><strong>Agora, mão à obra</strong></p>
<p>Você pode olhar para os sites (<a title="http://html5doctor.com/" href="http://html5doctor.com/" target="_blank">http://html5doctor.com/</a>), ler todos os artigos disponíveis na internet e até mesmo ler as especificações (<a title="http://www.whatwg.org/specs/web-apps/current-work/" href="http://www.whatwg.org/specs/web-apps/current-work/" target="_blank">http://www.whatwg.org/specs/web-apps/current-work/</a>), mas nenhum deles vão te ajudar a entender o HTML 5, tanto quanto utilizando os novos elementos. Você pode modificar parte de um site existente ou fazer uma experiência criando novas páginas. Faça isso com seu site pessoal, de amigos ou até  em sua empresa.</p>
<p>Ao fazer isso, você vai descobrir o que funciona e o que não funciona. Por exemplo, eu descobri que o Firefox 3.5 trata elementos como o <strong>article</strong> e a <strong>section</strong> como <strong>display:inline </strong>e eu tinha que definir explicitamente-los para <strong>display:block</strong> para fazê-los funcionar como esperado.</p>
<p><strong>O (X) em análise</strong></p>
<p>Se você é como a maioria dos designers, você provavelmente não escreve todas as marcações (tags) na mão. Mas até os bons editores tentam acompanhar os novos elementos de (X)HTML 5,  e mesmo assim você acaba fazendo algumas marcações na mão e desta forma você acaba aprendendo um pouco. Existe um pouco de confusão (e polêmica!) sobre a relação entre HTML 5, XHTML 1.0/1.1 e XHTML 5. Vamos deixar tudo bem claro agora.</p>
<p>HTML 4.0 (a linguagem de marcação que todos nós conhecemos e amamos) é baseada em um &#8220;livro de regras&#8221; (rulebook) chamado SGML. No livro de regras da SGML, os nomes dos elementos não são &#8220;case sensitive&#8221;, você pode ter elementos com tags de fechamento opcional (como <strong>&lt;p&gt;</strong>) e você pode ter valores de atributo sem aspas.</p>
<p>XHTML 1.0 e 1.1 são baseados em um &#8220;livro de regras&#8221; chamado XML. No livro de regras XML, elemento e atributo nomes são &#8220;case sensitive&#8221;, cada tag de abertura deve ter uma tag de fechamento e os valores dos atributos devem estar entre aspas.</p>
<p>HTML 5 define uma linguagem de marcação que não seja baseado em qualquer livro de regras, mas podem ser escritas de &#8220;forma HTML&#8221; (ou renderizada, conforme a especificação chamada) ou de &#8221; forma XHTML&#8221;.</p>
<p>Quando você escreve de &#8220;forma HTML&#8221;, você está autorizando deixar algumas tags abertas, valores de atributos sem aspas e elementos e nomes de atributos não são case sensitive. Você também terá de usar em algumas tags marcação XML, será obrigado a colocar barra em elementos como <strong>&lt;img /&gt;</strong> ou <strong>&lt;hr /&gt;</strong></p>
<p>Quando você usa a serialização XHTML, você tem que seguir as regras XML mencionado alguns parágrafos atrás.</p>
<p>Eu sugiro que você escreva a sua marcação em XHTML 5, ou, se você usar o HTML 5, fazer a marcação como se fosse XHTML. Vai ser melhor ficar com o padrão XML que requer um tag de fechamento para cada tag de abertura, em vez de gastar o seu tempo de para otimizar as tags que têm fechamento e/ou abertura opcional. Da mesma forma, colocar com aspas todos os valores de atributo ao invés de tentar decidir quando você pode deixar o valor de atributo sem aspas. Além de não ter que gastar neurônios sobre essas decisões, a marcação será mais consistente.</p>
<p>Se você utiliza alguma ferramenta de geração automática de marcação configure para gerar XHTML 5 em vez do HTML 5. O uso de XML é o futuro, seus espaços permitem que você tenha documentos &#8220;poliglota&#8221;, que consistem em várias marcações para além do HTML5 o RDF, MathML e o SVG. Você também pode usar ferramentas como XPath, XSLT e XQuery de marcação baseada em XML, utilizando qualquer analisador XML de sua escolha.</p>
<p>Claro, nem tudo é boa notícia. Se você trabalhar com XHTML 5, lembre-se que o servidor deve entregar os documentos com um tipo MIME de <strong>application/xhtml+xml</strong> ou <strong>text/xml</strong>. Isto pode envolver a negociação com o seu serviço de hospedagem. Além disso, quando você entregar um arquivo XML, qualquer erro de sintaxe irá causar uma mensagem de erro.</p>
<p><img src="http://afronteirafinal.com/imgs/posts/200911/xml_parsing_error.png" alt="Error Message" /></p>
<p>Se você estiver fazendo a marcação com a mão, acho que essas mensagens de erro manterá você fiel a validação. Se você estiver usando ferramentas que criam XHTML, não há problema, pois a maioria das ferramentas produzem códigos XML bem formados.</p>
<p><strong>Expressões Regulares</strong></p>
<p>HTML 5 estende o elemento <strong> input</strong> oferecendo novos atributos que permitem especificar os dados de entrada. Esses atributos incluem <strong> min</strong> e <strong>max</strong> (para definir um intervalo numérico), e também oferece novos valores para o atributo <strong>type</strong> como a <strong> url</strong>, <strong> email</strong>, <strong>date</strong> e <strong>time</strong></p>
<p>Se nenhum desses novos tipos de entrada atendem às suas necessidades o HTML 5 fornece o atributo <strong>pattern</strong> para elementos <strong>input</strong> com <strong>type=&#8221;text&#8221;</strong>. O valor do atributo <strong>pattern</strong> é uma expressão regular, tal como definido no ECMAScript e utilizado em JavaScript. As expressões regulares são uma forma concisa e talvez um tanto enigmática de especificar um padrão de caracteres. Por exemplo, se eu quiser um jogo de cinco dígitos mais hífen e três caracteres para CEP, posso usar esse padrão:</p>
<pre><strong>([0-9]{5}-[0-9]{3})</strong></pre>
<p>Todo poder do novo formulário web já estão parcialmente implementado no Safari e Chrome, e completamente no Opera (veja este site <a title="http://a.deveria.com/caniuse/" href="http://a.deveria.com/caniuse/" target="_blank">http://a.deveria.com/caniuse/</a> para obter mais informações sobre a capacidade de cada browser). Não se preocupe se o seu browser ainda não suporta as extensões do form para o HTML 5, você pode fazer o download do Google Web Forms 2 (<a title="http://code.google.com/p/webforms2/" href="http://code.google.com/p/webforms2/" target="_blank">http://code.google.com/p/webforms2/</a>)</p>
<p>Aqui está um exemplo de formulário que valida data e cep:</p>
<pre>&lt;p&gt;
  Digite uma data: &lt;input type="date" name="data"
  required="required"
  title="Fotmato de data dd-mm-yyyy" /&gt;
&lt;/p&gt;</pre>
<pre>&lt;p&gt;
  Digite um cep:
  &lt;input type="text" name="cep"
   required="required"
   pattern="([0-9]{5}-[0-9]{3})"
title="CEP: 99999-999" /&gt;
&lt;/p&gt;</pre>
<p>As expressões regulares são muito úteis e vale a pena investir um tempo para aprender. Muitos editores de texto já tem integrado pesquisa com expressão regular e substituição características, e quando você começar a usá-los, você nunca mais conseguirá ficar  sem eles.</p>
<p><strong>Arte estática com SVG</strong></p>
<p>Se você quiser que as bordas nítidas, o HTML 5 permite que você use SVG (Scalable Vector Graphics) em seus documentos. Colocar inline SVG é parcialmente implementado em Firefox, Safari e Opera, de acordo com este site (<a title="http://wiki.whatwg.org/wiki/Implementations_in_Web_browsers" href="http://wiki.whatwg.org/wiki/Implementations_in_Web_browsers" target="_blank">http://wiki.whatwg.org/wiki/Implementations_in_Web_browsers</a>).</p>
<p>E aqui está o SVG gerado:</p>
<p><img src="http://afronteirafinal.com/imgs/posts/200911/svg.png" alt="SVG" /></p>
<pre>&lt;svg xmlns:svg="http://www.w3.org/2000/svg"
  xmlns="http://www.w3.org/2000/svg"
  viewBox="0 0 200 100"
  width="200px" height="100px"&gt;
  &lt;circle cx="50" cy="50" r="30"
  style="stroke:none; fill:#ff0000;"/&gt;
  &lt;g transform="translate(100, 20) scale(1.65)"&gt;
  &lt;polygon points="36 25, 25 36, 11 36, 0 25,
  0 11, 11 0, 25 0, 36 11"
  style="stroke:none; fill:#0000ff;" /&gt;
  &lt;/g&gt;
  &lt;rect x="60" y="20" height="60" width="60"
  style="stroke:none; fill:#00ff00;
  fill-opacity: 0.5;" /&gt;
&lt;/svg&gt;</pre>
<p>Embora seja possível usar o JavaScript para modificar dinamicamente um gráfico SVG, HTML 5 oferece uma melhor solução:</p>
<p><strong>Canvas em ação</strong></p>
<p>O elemento de canvas é uma das características mais marcantes do HTML 5, e é suportada pelo Firefox, Safari, Opera e Chrome mas não pelo Internet Explorer. O elemento de <strong>canvas</strong> é realmente uma característica promissora. Você usa JavaScript para desenhar o que você precisa sobre a tela em branco. (Obs: A qualidade gráfica me surpreendeu!)</p>
<p>Aqui está o mesmo desenho feito com SVG em Canvas:</p>
<p><img src="http://afronteirafinal.com/imgs/posts/200911/svg.png" alt="Canvas" /></p>
<p>E aqui está o JavaScript que o criou o desenho:</p>
<pre>function drawSimpleCanvas() {
 var canvas =
 document.getElementById("simpleCanvas");
  if (canvas.getContext) {
  var ctx = canvas.getContext("2d");
  ctx. (); // the circle
  ctx.fillStyle = "#ff0000";
  ctx.arc(50, 50, 30, 0, 2*Math.PI, true);
  ctx.closePath();
  ctx.fill();
  ctx.save();
  // move and resize the octagon
  ctx.translate(100, 20);
  ctx.scale(1.65, 1.65);
  ctx.fillStyle = "#0000ff";
  ctx.beginPath();
  ctx.moveTo(36, 25); ctx.lineTo(25, 36);
  ctx.lineTo(11, 36); ctx.lineTo(0, 25);
  ctx.lineTo(0, 11); ctx.lineTo(11, 0);
  ctx.lineTo(25, 0); ctx.lineTo(36, 11);
  ctx.closePath();
  ctx.fill();
  // restore graphics as they
  // were before move and resize
  ctx.restore();
  ctx.fillStyle = "#00ff00";
  ctx.globalAlpha = 0.5;
  ctx.beginPath();
  ctx.rect(60, 20, 60, 60);
  ctx.closePath();
  ctx.fill();
 }
}</pre>
<p>Veja Canvas tutorial da Mozilla (<a title="Canvas tutorial" href="https://developer.mozilla.org/en/Canvas_tutorial" target="_blank">https://developer.mozilla.org/en/Canvas_tutorial</a>) para uma introdução mais aprofundada.</p>
<p><strong>O que você está esperando?</strong></p>
<p>Apesar de alguns desenvolvedores terem receio sobre a direção em que o HTML 5 está levando a web (e eu compartilho com este receio), as características do HTML 5 são bem interessantes e vale a pena ser explorada. Assim, comece a olhar código fonte de outras pessoas, e fazer experiências em seu próprio site, e mergulhe nas novas características de validação de formulários e as de CANVAS.</p>
<h6><em>Post baseado no artigo de J. David Eisenberg (<a title="catcode@catcode.com" href="mailto:catcode@catcode.com">catcode@catcode.com</a>) também escritor do livro SVG &#8211; Scalable Vector Graphics e professor em San Jose, CA.</em></h6>
<p><em><br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://afronteirafinal.com/prepare-se-para-o-html-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

