<?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>Como Criar Um Site, Blog ou Loja Virtual Gratis - WebMaster.pt &#187; CSS</title>
	<atom:link href="http://www.webmaster.pt/categoria/web-design/css/feed" rel="self" type="application/rss+xml" />
	<link>http://www.webmaster.pt</link>
	<description>Aprenda Como Criar Um Site, Blog ou Loja Virtual com WordPress e Joomla e Ganhar Dinheiro Online</description>
	<lastBuildDate>Mon, 23 Jan 2012 22:14:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CSS3 &#8211; Como Criar Animações Espectaculares</title>
		<link>http://www.webmaster.pt/css3-como-criar-animacoes-8677.html</link>
		<comments>http://www.webmaster.pt/css3-como-criar-animacoes-8677.html#comments</comments>
		<pubDate>Wed, 18 Aug 2010 09:36:22 +0000</pubDate>
		<dc:creator>Maicon Sobczak</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://www.webmaster.pt/?p=8677</guid>
		<description><![CDATA[As animações num site captam a atenção do visitante. Aprenda a criar animações impressionantes com CSS3.<p><a href="http://www.webmaster.pt/css3-como-criar-animacoes-8677.html">CSS3 &#8211; Como Criar Animações Espectaculares</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>

Related posts:<ol>
<li><a href='http://www.webmaster.pt/como-criar-galeria-jquery-css3-12021.html' rel='bookmark' title='Como Criar Uma SUPER Galeria Com jQuery E CSS3'>Como Criar Uma SUPER Galeria Com jQuery E CSS3</a></li>
<li><a href='http://www.webmaster.pt/como-criar-animacoes-jquery-9097.html' rel='bookmark' title='Como Criar Animações Com jQuery'>Como Criar Animações Com jQuery</a></li>
<li><a href='http://www.webmaster.pt/especial-css3-layout-1909.html' rel='bookmark' title='Especial! CSS3 &#8211; Layout'>Especial! CSS3 &#8211; Layout</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h2>Animações Com CSS3</h2>
<p>Por melhor que seja o design de um website, o usuário médio vai sempre prestar mais atenção às animações. Afinal são elas que tornam uma interface realmente interativa. Você clica no botão e desencadeia um processo suave de troca de informações. Isso é muito legal.</p>
<p>Nós já passamos pela revolução das bibliotecas javascript que tornaram o processo de criação de animações bem mais fácil que utilizando javascript puro. Pois agora com o CSS 3 o que era fácil ficou ainda mais. Mesmo efeitos que nem o jQuery consegue sozinho (sem a ajuda de plug-ins) conseguimos fazer apenas no CSS! </p>
<p>Existe todo um debate sobre criar animações utilizando folhas de estilo, já que o propósito declarado delas é trabalhar somente o visual dos elementos e a camada seguinte fica por conta das outras linguagens de programação. </p>
<p>É uma discussão válida, mas improdutiva. E por que não utilizá-las se facilitam o nosso trabalho? Fica por conta dos desenvolvedores organizarem o código de maneira a não misturar a apresentação com o comportamento dos elementos.</p>
<h2>Suporte Dos Navegadores</h2>
<p>As propriedades de animação são digamos, as mais avançadas do CSS 3. Então já é esperado que o suporte a elas não fosse dos melhores. O único navegador em que funcionam é o Safari. O Chrome e Firefox 4 só não interpretam corretamente as transformações 3D. E o Internet Explorer não interpreta nada.</p>
<p>Um ponto positivo é o graceful degradation das propriedades não interpretadas. Na maior parte dos casos o layout não é afetado caso o navegador não suporte a propriedade.</p>
<p>A necessidade de utilizar o prefixo do navegador na frente da propriedade é um ponto negativo já que quadriplica o código. Um mal necessário que promete ser sanado quando as especificações do CSS 3 estiverem prontas.</p>
<h2>Transitions</h2>
<p>Você tem o estado inicial do elemento e o estado em que ele vai estar ao final do efeito. Por exemplo da cor azul para a vermelha. A transition torna esta mudança mais suave, torna ela animada.</p>
<p>A transition normalmente é definida no estado original do elemento de maneira que a animação ocorra tanto quando o elemento tiver o foco quanto quando ele perder o foco, se for o caso.</p>
<p><strong>Propriedade</strong></p>
<p>A primeira informação a ser fornecida é a propriedade que será animada.</p>
<p><pre><code><br />
<br />
transition-property:background-color;<br />
-moz-transition-property:background-color;<br />
<br />
-webkit-transition-property:background-color;<br />
-o-transition-property:background-color;<br />
<br />
</code></pre> </p>
<p>É possível animar mais de uma propriedade ao mesmo tempo, basta separá-las com vírgula:</p>
<p><pre><code><br />
<br />
transition-property:background-color, margin-left<br />
<br />
</code></pre></p>
<p>Se você quiser alterar todas as propriedades, ao invés de listá-las separadamente, basta utilizar o valor “all”. Outro valor possível é o transform, que veremos abaixo.</p>
<p><strong>Duração</strong></p>
<p>Em seguida é informada a duração da animação em segundos:</p>
<p><pre><code><br />
<br />
transition-duration: 2s;<br />
-moz-transition-duration: 2s;.<br />
-webkit-transition-duration: 2s;<br />
-o-transition-duration: 2s;<br />
<br />
</code></pre></p>
<p>Quando houver mais de uma propriedade a ser animada, é possível definir individualmente a duração da transição de cada uma separando os valores com vírgula. Se apenas um valor for informado ele valerá para todas as propriedades.</p>
<p><pre><code><br />
<br />
transition-duration: 2s, 5s;<br />
<br />
</code></pre></p>
<p><strong>Easing</strong></p>
<p>A velocidade da animação pode variar em determinados pontos, o chamado easing. Tem um plugin famoso do jQuery que faz isso. Pois agora podemos trabalhar isso diretamente no CSS.</p>
<p><pre><code><br />
<br />
transition-timing-function:ease-in;<br />
-moz-transition-timing-function:ease-in;<br />
-webkit-transition-timing-function:ease-in;<br />
-o-transition-timing-function:ease-in;<br />
<br />
</code></pre></p>
<p>Os valores possíveis para esta propriedade são: ease, linear, ease-in, ease-out, ease-in-out e cubic-bezier. Neste último você pode personalizar os valores. Os demais são pré-configurados, com a aceleração sendo maior no início ou no final do movimento.</p>
<p><strong>Delay</strong></p>
<p>Podemos definir um intervalo entre o momento em que o mouse, ou outro evento acontece, e o momento em que a animação inicia. Se quisermos que a transição ocorra dois segundos após o evento disparador escrevemos:</p>
<p><pre><code><br />
<br />
transition-delay:2s;<br />
-webkit-transition-delay:2s;<br />
-moz-transition-delay: 2s;<br />
-o-transition-delay: 2s;<br />
<br />
</code></pre></p>
<p><strong>Em apenas uma declaração</strong></p>
<p>Todas as propriedades acima podem ser declaradas em apenas uma linha com a seguinte sintaxe:</p>
<p>transition: propriedade, duração, easing, delay;</p>
<p>Somando os efeitos mostrados acima:</p>
<p><pre><code><br />
<br />
transition: background-color,margin-left, 1s, ease-in, 2s;<br />
-webkit-transition: background-color,margin-left, 1s, ease-in, 2s;<br />
-moz-transition: background-color,margin-left, 1s, ease-in, 2s;<br />
-o-transition: background-color,margin-left, 1s, ease-in, 2s;<br />
<br />
</code></pre></p>
<h2>Transform</h2>
<p>As animações produzidas com o transform se dividem em 2D e 3D. As alterações mais suportadas pelos navegadores são as 2D: altura, largura, rotação e distorção. Estas transformações não alteram o layout da página.</p>
<p><strong>Escala</strong></p>
<p>Qualquer elemento pode ser aumentado ou diminuído com o scale.</p>
<p><pre><code><br />
<br />
transform: scale(1.5);<br />
-webkit-transform: scale(1.5);<br />
-o-transform: scale(1.5);<br />
-moz-transform: scale(1.5);<br />
<br />
</code></pre></p>
<p>No exemplo acima o elemento aumenta proporcionalmente em 50% o tamanho. Para alterar desproporcionalmente as medidas, podem ser fornecidos dois valores, para a largura e para altura.</p>
<p><pre><code><br />
<br />
transform: scale(1.5, 0.5);<br />
transform: scaleX(1.5);<br />
transform: scaleY( 0.5);<br />
<br />
</code></pre></p>
<p><strong>Rotação</strong></p>
<p>A rotação dos elementos com o CSS 3 é incrivelmente fácil:</p>
<p><pre><code><br />
<br />
transform:rotate(45deg);<br />
-webkit-transform:rotate(45deg);<br />
-moz-transform:rotate(45deg);<br />
-o-transform:rotate(45deg);<br />
<br />
</code></pre></p>
<p>O valor fornecido é em graus (em inglês degree). Sendo assim, vai de 0 a 360.</p>
<p><strong>Distorção</strong></p>
<p>Neste efeito o elemento é esticado, sendo possível definir em qual direção.</p>
<p><pre><code><br />
<br />
transform:skew(25deg, 15deg);<br />
transform:skewX(25deg);<br />
transform:skewY(25deg);<br />
transform:skew(25deg);<br />
<br />
</code></pre></p>
<p>Os valores são informados em graus, como na rotação. A função aceita dois valores, a distorção no eixo x e no eixo y. Se preferir pode criar uma distorção para cada eixo com o skewX e skewY. Quando é informado somente um valor, apenas o eixo X é alterado.</p>
<p><strong>Direção</strong></p>
<p>Digamos que é uma soma das quatro propriedades da margem, porque com o translate você muda a direção do elemento.</p>
<p><pre><code><br />
<br />
transform: translate(10px,10px);<br />
transform: translateX(10px);<br />
transform: translateY(10px);<br />
<br />
-webkit-transform: translate(10px,10px);<br />
-moz-transform: translate(10px,10px);<br />
-o-transform: translate(10px,10px);<br />
<br />
</code></pre></p>
<p><strong>Ponto de origem</strong></p>
<p>A transform-origin é especialmente útil ao trabalharmos com rotação.  Normalmente o ponto de âncora da rotação é o centro do elemento. Com esta propriedade o ponto pode ser deslocado.</p>
<p><pre><code><br />
<br />
transform-origin:1em;<br />
-webkit-transform-origin:1em;<br />
-moz-transform-origin:-2em -5em;<br />
-o-transform-origin:-2em -5em;<br />
<br />
</code></pre></p>
<p><strong>Tudo em uma declaração</strong></p>
<p>Assim como nas transições, as transformações podem ser somadas em uma declaração e tornar o efeito mais complexo e completo. A ordem em que as funções são definidas influencia diretamente no resultado. </p>
<p>Nas duas linhas abaixo apesar dos mesmos valores, a ordem é diferente e o resultado também:</p>
<p><pre><code><br />
<br />
-webkit-transform: translate(40px, 40px) scale(1.5, 1.5) rotate(45deg) ;<br />
-webkit-transform: scale(1.5, 1.5) rotate(45deg) translate(40px, 40px)&nbsp;&nbsp;;<br />
<br />
</code></pre></p>
<p>Longe de ser um empecilho, essa sensibilidade abre portas para uma gama incrível de animações.</p>
<h2>Efeitos 3D</h2>
<p>Este tópico foi deixado por último porque se os outros ainda não foram implementados de forma satisfatório imagine este que é ainda mais avançado. O Safari é o único que oferece suporte consistente a estes efeitos.</p>
<p>Vamos torcer que em um futuro não muito distante possamos apresentar para você um tutorial listando as possibilidades com a certeza do mínimo de suporte dos demais navegadores.</p>
<p>Por hora você pode se divertir com <a href="http://www.paulrhayes.com/experiments/cube-3d/index.html" target="_blank">este exemplo de efeito 3D</a>, se você tiver a última versão do Safari.</p>
<h2>Avançando Ainda Mais</h2>
<p>Os desenvolvedores da engine do Chrome e Safari querem permitir suporte ainda mais robusto as animações e efeitos com CSS. Atualmente estes dois navegadores implementaram suporte a reflexos e animações repetidas. O –webkit-box-reflect e o @-webkit-keyframes. </p>
<p>Não entrarei em detalhes sobre eles neste artigo já que tem uma aplicação bastante limitada. Mas se você pesquisar e trabalhar um pouco verá que é diversão garantida.</p>
<h2>Exemplos</h2>
<p>Transitions e transform tornam-se incrivelmente poderosos quando trabalham em conjunto. Diariamente surgem novos efeitos criados com essa dupla.  Abaixo serão mostrados alguns dos mais interessantes e funcionais. Vale lembrar que somente funcionam perfeitamente no Chrome e Safari.</p>
<p><a href="http://dinolatoga.com/demo/webkit-image-hover-effects/" target="_blank">Amazing Image Hover Effects using Webkit and CSS</a></p>
<p>Um dos mais úteis que encontrei com aplicação em galerias de imagem.</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/08/exemplo_01.jpg" alt="Amazing Image Hover Effects using Webkit and CSS" title="Amazing Image Hover Effects using Webkit and CSS" width="600" height="308" class="aligncenter size-full wp-image-8678" /></p>
<p><a href="http://dinolatoga.com/demo/webkit-image-hover-effects/" target="_blank">Pure CSS3 Animated AT-AT Walker from Star Wars</a></p>
<p>É bastante experimental, mas vale como material de estudo e para se ter uma idéia do que esta por vir.</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/08/exemplo_02.jpg" alt="Pure CSS3 Animated AT-AT Walker from Star Wars" title="Pure CSS3 Animated AT-AT Walker from Star Wars" width="600" height="473" class="aligncenter size-full wp-image-8679" /></p>
<p><a href="http://www.romancortes.com/blog/pure-css-coke-can/" target="_blank">Pure CSS Coke Can</a></p>
<p>Um exemplo bastante prático e útil para demonstração de produtos.</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/08/exemplo_03.jpg" alt="Pure CSS Coke Can" title="Pure CSS Coke Can" width="539" height="367" class="aligncenter size-full wp-image-8680" /></p>
<p><a href="http://www.zurb.com/playground/drop-in-modals" target="_blank">Drop-In Modals</a></p>
<p>Imagine menos dois arquivos e somente algumas linhas para conseguir criar janelas modais. Agora acesse e veja isso tornam-se realidade.</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/08/exemplo_04.jpg" alt="Drop-In Modals" title="Drop-In Modals" width="600" height="464" class="aligncenter size-full wp-image-8681" /></p>
<p><a href="http://buildinternet.com/live/elasticthumbs/" target="_blank">Elastic Thumbnail Menu</a></p>
<p>Típico exemplo de um efeito Flash criado com poucas linhas de CSS.</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/08/exemplo_05-e1282124023730.jpg" alt="Elastic Thumbnail Menu" title="Elastic Thumbnail Menu" width="600" height="243" class="aligncenter size-full wp-image-8682" /></p>
<h2>Conclusão</h2>
<p>Infelizmente não podemos utiizar estes efeitos em larga escala e por um tempo ainda serão o playground dos web designers. Contudo, muito já pode ser criado pois na maioria das vezes não alteram o funcionamento nem o layout da página. </p>
<p>Então vale sim a pena aprender transition e transform. O seu trabalho terá um adicional que pode surpreender tanto os visitantes quanto o cliente quando estes atualizarem o navegador.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.webmaster.pt%2Fcss3-como-criar-animacoes-8677.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.webmaster.pt%2Fcss3-como-criar-animacoes-8677.html&amp;source=marketocracia&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.webmaster.pt/css3-como-criar-animacoes-8677.html">CSS3 &#8211; Como Criar Animações Espectaculares</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>
<p>Related posts:<ol>
<li><a href='http://www.webmaster.pt/como-criar-galeria-jquery-css3-12021.html' rel='bookmark' title='Como Criar Uma SUPER Galeria Com jQuery E CSS3'>Como Criar Uma SUPER Galeria Com jQuery E CSS3</a></li>
<li><a href='http://www.webmaster.pt/como-criar-animacoes-jquery-9097.html' rel='bookmark' title='Como Criar Animações Com jQuery'>Como Criar Animações Com jQuery</a></li>
<li><a href='http://www.webmaster.pt/especial-css3-layout-1909.html' rel='bookmark' title='Especial! CSS3 &#8211; Layout'>Especial! CSS3 &#8211; Layout</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.webmaster.pt/css3-como-criar-animacoes-8677.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3</title>
		<link>http://www.webmaster.pt/especial-layout-de-revista-com-html5-e-css3-6582.html</link>
		<comments>http://www.webmaster.pt/especial-layout-de-revista-com-html5-e-css3-6582.html#comments</comments>
		<pubDate>Tue, 29 Jun 2010 10:03:30 +0000</pubDate>
		<dc:creator>Maicon Sobczak</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.webmaster.pt/?p=6582</guid>
		<description><![CDATA[Aprenda a criar o layout duma paǵina estilo revista, com as novidades do HTML5 e CSS3, mas que funciona nos browsers / navegadores que ainda não suportam CSS3 e HMTL5...<p><a href="http://www.webmaster.pt/especial-layout-de-revista-com-html5-e-css3-6582.html">ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>

Related posts:<ol>
<li><a href='http://www.webmaster.pt/especial-css3-layout-1909.html' rel='bookmark' title='Especial! CSS3 &#8211; Layout'>Especial! CSS3 &#8211; Layout</a></li>
<li><a href='http://www.webmaster.pt/css3-efeitos-textos-1907.html' rel='bookmark' title='Especial! CSS3 &#8211; Efeitos Em Textos'>Especial! CSS3 &#8211; Efeitos Em Textos</a></li>
<li><a href='http://www.webmaster.pt/css3-selectores-940.html' rel='bookmark' title='Especial! CSS3 &#8211; Selectores'>Especial! CSS3 &#8211; Selectores</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h2>Layout De Revista</h2>
<p>A enorme quantidade de tutoriais disponíveis demonstrando as possibilidades do CSS 3 transparece a excitação da comunidade em torno do assunto.  Todas  as possibilidades são exploradas e demonstram como esta nova versão do CSS tem o potencial de mudar a web.</p>
<p>Um problema compartilhado pela maioria dos tutoriais é a restrição no funcionamento do código à ultima versão dos navegadores. O que torna a utilização e implementação do código para uso rotineiro bastante difícil.</p>
<blockquote><p>Pensando nisso, decidi criar uma página, que apesar de trazer todas as novidades, ainda assim consegue funcionar nos navegadores que ainda não oferecem suporte ao CSS 3 e HTML 5 (IE..).</p></blockquote>
<p>A disposição dos elementos será feita tendo como base a utilizada pelas revistas, onde o texto é divido em colunas e existem blocos para assuntos relacionados. Será utilizada uma fonte não padrão e adicionados efeitos utilizando apenas CSS. Veja abaixo o resultado final no Firefox 3.6 :</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/06/resultado.jpg" alt="Layout De Revista" title="Layout De Revista" width="600" height="685" class="aligncenter size-full wp-image-6583" /></p>
<p><strong>Não serão utilizados nem código javascript nem behaviors  para que o CSS funcione em todos os navegadores.</strong> O principal objetivo deste tutorial é mostrar a aplicação de seletores e propriedades CSS 3 o que limita o funcionamento completo às últimas versões dos navegadores. Claro que haverá um cuidado para que funcione no maior número possível de navegadores, mas apenas o que for possível através do CSS.  </p>
<h2>O HTML</h2>
<p>O único javascript utilizado será para evitar que o layout quebre nos navegadores que não interpretam o HTML 5. No cabeçalho da página será adicionado:</p>
<p><pre><code><br />
&lt;!--[if lt IE 9]&gt;<br />
&lt;script src=&quot;http://html5shiv.googlecode.com/svn/trunk/html5.js&quot;&gt;&lt;/script&gt;<br />
&lt;![endif]--&gt;<br />
<br />
</code></pre></p>
<p>Entre as tags <strong>body</strong> vai o seguinte código:</p>
<p><pre><code><br />
&lt;div class=&quot;global-div&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;header&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;Lorem ipsum&lt;/h1&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/header&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&quot;esq-div&quot;&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;article&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&quot;citacao&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;aside&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt; blockquote&gt; Aenean non enim eget diam aliquam tristique.&lt;/ blockquote&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/aside&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean odio sem, mattis malesuada, consectetuer eu, ultricies convallis, lacus. Praesent non orci. Donec sagittis metus vel massa. Nulla facilisi. Proin justo. Aenean ac massa. Quisque vel risus. Morbi ipsum. Integer odio eros, dapibus eget, egestas sed, lacinia dictum, nunc. Maecenas pellentesque rhoncus lectus. Nulla facilisi. Pellentesque eget libero et tortor hendrerit venenatis. Aliquam tempus, felis in ornare congue, lacus mi consectetuer risus, sit amet luctus orci nisl at dui. Aenean ligula sem, pretium sed, tincidunt sit amet, accumsan eget, justo. Nam in massa. Cras turpis velit, volutpat eu, vestibulum at, pellentesque vel, dui.&lt;/p&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;p&gt; Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent rutrum malesuada urna. Aliquam sollicitudin. Pellentesque id nisi. Duis in mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec ac elit. Etiam posuere venenatis ante. Nunc ullamcorper neque ac justo. Donec id purus. Aenean non enim eget diam aliquam tristique. Mauris pellentesque pulvinar dui. Donec et arcu ut leo laoreet vulputate. Aenean a magna et massa ornare congue. Phasellus a tellus vitae enim ornare laoreet.&lt;br&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Integer viverra, odio sed sollicitudin malesuada, magna mauris cursus nulla, non ultricies arcu massa in tellus. Duis velit nibh, porttitor non, sodales at, iaculis eget, lectus. Curabitur vitae ante. Mauris dapibus consequat mi. Sed at quam a lacus varius tempus. Phasellus scelerisque suscipit justo. Morbi ac justo eu arcu ornare facilisis. Donec et est. Morbi et lectus. Suspendisse et augue. Vivamus enim eros, condimentum vel, sodales vel, ullamcorper vitae, purus.&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Donec non felis quis augue interdum accumsan. Nulla at libero. Nunc ultricies auctor sapien. Praesent quis quam et massa tincidunt luctus. Vivamus nibh. Sed ligula. Nunc non est a augue tempor lacinia. Mauris lectus pede, porta tempus, ultrices sed, dignissim sed, justo. Suspendisse porta. Fusce arcu. Sed vehicula libero a odio.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;br&gt;<br />
Ut magna urna, tincidunt nec, eleifend sit amet, auctor pretium, nisi. Suspendisse arcu enim, commodo at, facilisis in, feugiat sit amet, quam. Praesent ut lacus. Maecenas sed metus. Nulla sed urna. Donec vitae ipsum quis quam cursus porttitor. Curabitur justo elit, pulvinar eu, condimentum consectetuer, tristique vel, velit. Suspendisse libero massa, scelerisque eget, malesuada ut, ultricies aliquam, neque. Curabitur elementum est sed magna. Morbi enim. Ut dignissim mattis justo. Nunc justo.&lt;br&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fusce purus. Curabitur eu ligula. Vestibulum ultricies hendrerit elit. Nulla a metus. Aenean aliquam. Phasellus nec massa. Nullam vehicula neque id magna ornare elementum. Phasellus luctus, lorem non ornare laoreet, ligula elit ultrices metus, vel scelerisque dolor velit nec risus. Ut orci. Nullam luctus, mauris et ultricies mattis, nisi felis auctor dui, sed elementum nisl felis sit amet lectus. Donec mauris odio, condimentum sit amet, semper sed, scelerisque eu, est. Aliquam pellentesque, ipsum id fermentum pretium, augue orci convallis magna, ut vulputate magna est vel enim. Nulla quis est mattis massa scelerisque tristique. Vestibulum id turpis. Proin ultrices. Proin lacinia nisi vehicula nunc. Nullam nec velit nec erat aliquam scelerisque.Aliquam pellentesque, ipsum id fermentum pretium augue orci convallis magna.&lt;br&gt;<br />
&lt;/p&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/article&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&quot;dir-div&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;article&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;figure&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img src=&quot;img.jpg&quot; width=&quot;276&quot; height=&quot;184&quot; alt=&quot;imagem&quot;&gt;<br />
&lt;figcaption&gt;Lorem ipsum é um texto padrão em latim.&lt;/figcaption&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/figure&gt;<br />
&lt;p&gt;Em design gráfico e editoração, Lorem ipsum é um texto utilizado para preencher o espaço de texto em publicações (jornais, revistas, e websites), com a finalidade de verificar o lay-out, tipografia&nbsp;&nbsp;e formatação antes de utilizar conteúdo real. Muitas vezes este texto também é utilizado em catálogos de tipografia&nbsp;&nbsp;para demonstrar textos e títulos&nbsp;&nbsp;escritos com as fontes.&lt;/p&gt;<br />
 &lt;p&gt;Lorem ipsum é um texto padrão em latim. Em documentos utilizados para testes, este tipo de texto é utilizado para evitar que as pessoas foquem a atenção no texto e se concentrem nos aspectos visuais. O lorem ipsum simula com razoável fidelidade um texto real, por possuir palavras de diversos tamanhos e sinais de pontuação, permitindo testar também a forma como o texto flui nas caixas e campos de formatação.&lt;/p&gt;<br />
 &lt;p&gt;Ao contrário da crença popular, Lipsum (Lorem Ipsum abreviado) não é simplesmente um texto qualquer com um monte de letras. Ela tem raízes numa peça clássica da literatura latina de 45 A.C., fazendo com que este famoso texto tenha mais de 2000 anos de idade. Richard McClintock, um professor de Latim na Hampden-Sydney College na Virginia, pesquisou uma das mais obscuras palavras em Latim, &amp;quot;consectetur&amp;quot; , da passagem de Lipsum, e indo a fundo nas citações da literatura clássica descobriu de uma fonte segura que Lipsum vem das seções 1.10.32 e 1.10.33 do &amp;quot;de Finibus Bonorum et Malorum&amp;quot; (Os Extremos do Bem e do Mal) escrito por Cícero em 45 A.C.. Este livro trata da teoria de ética, muito popular durante a Renascença.&lt;/p&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/article&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;footer&gt;<br />
&nbsp;&nbsp;&lt;p &gt;Escrito por &lt;a href=&quot;http://www.maiconweb.com&quot; title=&quot;Web designer&quot;&gt;Maicon Sobczak&lt;/a&gt; para &lt;a href=&quot;http://www.webmaster.pt&quot; title=&quot;Tutoriais &quot;&gt;Webmaster.pt&lt;/a&gt;&lt;/p&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/footer&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&lt;/div&gt;<br />
<br />
&lt;code&gt;<br />
<br />
Sobre as tags HMTL 5 no código: a &lt;strong&gt;header&lt;/strong&gt; define o título da página; a &lt;strong&gt;article&lt;/strong&gt; engloba conteúdo que pode ser isolado da página sem perder o significado; a &lt;strong&gt;aside&lt;/strong&gt; define uma citação; &lt;strong&gt;figure&lt;/strong&gt; indica imagem; &lt;strong&gt;figcaption&lt;/strong&gt; a legenda para a imagem e &lt;strong&gt;footer&lt;/strong&gt; o rodapé com informações adicionais.<br />
<br />
Você pode saber mais sobre estas tags acessando a página com os tutorias sobre HTML 5:<br />
<br />
&lt;ul&gt;<br />
&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;http://www.webmaster.pt/html5-parte1-4955.html&quot;&gt;Conheça O HTML 5 Parte 1&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;http://www.webmaster.pt/html5-parte2-5094.html&quot;&gt;Conheça O HTML 5 Parte 2&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;<br />
<br />
&lt;h2&gt;Gradiente No Fundo&lt;/h2&gt;<br />
<br />
O fundo do texto terá um gradiente do azul claro para o branco. E vamos fazê-lo sem a necessidade de imagens. Apenas com a propriedade &lt;strong&gt;gradient&lt;/strong&gt;. No código abaixo estão listadas apenas as regras necessárias para o efeito deixando de forma as demais responsáveis pelo posicionamento e outros aspectos.<br />
<br />
&lt;code&gt;<br />
<br />
body{ background:#e8fdff;}<br />
<br />
.global-div{<br />
 background:-moz-linear-gradient(top, #e8fdff, #fff); <br />
background:-webkit-gradient(linear,left top, left bottom, color-stop(0,#e8fdff), color-stop(.5,#fff));}<br />
<br />
</code></pre></p>
<p>O fundo da página será azul claro. A div que contém o texto terá um gradiente no fundo. As regras para o Firefox e Chrome/Safari diferem neste ponto. Na primeira regra, já definimos no nome que é um gradiente linear, ele parte do topo com a cor azul claro e termina na base com a cor branca, tendo como ponto médio subentendido o meio.</p>
<p>Já a regra para o Chrome/Safari, exige mais parâmetros. Você informa que ela será linear a partir do canto esquerdo superior em direção ao esquerdo inferior, com a cor do topo no ponto zero e a cor inferior a partir do meio do gradiente.</p>
<p>Fica como dica <a href="http://www.westciv.com/tools/gradients/" target="_blank">esta ferramenta</a>, que pode auxiliar na criação dos gradientes.</p>
<h2>A Fonte</h2>
<p>No título e primeira letra do texto utilizaremos uma fonte não padrão dos navegadores.  A England Hand DB. Mas ao invés de usar uma das tantas soluções de substituição de fonte com flash, javascript ou PHP, vamos utilizar a propriedade CSS @font-face.</p>
<p>Será preciso importar fonte no formato TrueType e OpenType que funciona na maioria dos navegadores e  Embedded OpenType para o Internet Explorer. Um tanto de trabalho&#8230;</p>
<p>Mas para nossa sorte, existe um website fantástico chamado Font Squirrel que disponibiliza fontes grátis para uso comercial em pacotes prontos para utilizar com a @font-face. Siga os passos:</p>
<ul>
<li>Acesse <a href="http://www.fontsquirrel.com/fontface" target="_blank">Font Squirrel</a>;</li>
<li>Digite no campo de pesquisa à direita superior “england” e mande pesquisar;</li>
<li>Clique sobre a fonte England Hand DB para ser levado à página dela. Nesta página faça o download clicando no link “@font-face kit”;</li>
<li>Salve na pasta da página que estamos criando renomeando a pasta descompactada para “fonte” e deixe ela na raiz do website.</li>
</ul>
<p>Veja na pasta “fonte” que temos todos os formatos necessários. Tem também um arquivo do tipo folha de estilo chamado “stylesheet.css”. Abra o arquivo. No conteúdo temos as linhas:</p>
<p><pre><code><br />
<br />
@font-face {<br />
&nbsp;&nbsp;font-family: &#039;EnglandHandDBRegular&#039;;<br />
&nbsp;&nbsp;src: url(&#039;england-webfont.eot&#039;);<br />
&nbsp;&nbsp;src: local(&#039;☺&#039;), url(&#039;england-webfont.woff&#039;) format(&#039;woff&#039;), url(&#039;england-webfont.ttf&#039;) format(&#039;truetype&#039;), url(&#039;england-webfont.svg#webfont&#039;) format(&#039;svg&#039;);<br />
&nbsp;&nbsp;font-weight: normal;<br />
&nbsp;&nbsp;font-style: normal;<br />
}<br />
<br />
</code></pre></p>
<p>Copie tudo e cole no arquivo CSS que vamos trabalhar.</p>
<p>Na propriedade ‘font-family’ definimos como vamos os referir a fonte no decorrer do código. Mude de &#8216;EnglandHandDBRegular&#8217; para somente ‘England’. Desta maneira fica mais fácil de trabalhar.</p>
<p>Na linha seguinte inicia a busca pela fonte que será implementada.  Primeiro é pesquisada a fonte ‘.eot’ para que funcione no Internet Explorer.  Depois é feita a busca no próprio computador do usuário.  Substitua o smile pelo nome completo da fonte ‘EnglandHandDBRegular’. Não encontrando no computador do usuário, é importada a fonte no formato ‘woff’, um formato aberto para uso na internet.  Em seguida buscada a fonte nos formatos TrueType e SVG se nenhum dos anteriores funcionar.</p>
<p>Como os arquivos estão dentro da pasta ‘fonte’, precisamos alterar o caminho. Este trecho alterado na nossa folha de estilo fica:</p>
<p><pre><code><br />
<br />
@font-face {<br />
&nbsp;&nbsp;font-family: &#039;England&#039;;<br />
&nbsp;&nbsp;src: url(&#039;fonte/england-webfont.eot&#039;);<br />
&nbsp;&nbsp;src: local(&#039;EnglandHandDBRegular&#039;), url(&#039;fonte/england-webfont.woff&#039;) format(&#039;woff&#039;), url(&#039;fonte/england-webfont.ttf&#039;) format(&#039;truetype&#039;), url(&#039;fonte/england-webfont.svg#webfont&#039;) format(&#039;svg&#039;);<br />
&nbsp;&nbsp;font-weight: bold;<br />
&nbsp;&nbsp;font-style: normal;<br />
}<br />
<br />
</code></pre></p>
<h2>O Título E Primeira Letra</h2>
<p>Com a fonte configurada, podemos utilizá-la na estilização do título do texto.</p>
<p><pre><code><br />
<br />
h1{<br />
font: 12em England; <br />
color:#ffae00; <br />
text-align:center; <br />
margin:-20px 0 8px 0; <br />
text-shadow:3px 2px 0 #d2eef1; <br />
-webkit-transition:color .5s ease-out;<br />
transition-property:color .5s ease-out;}<br />
<br />
h1:hover{<br />
color:#d2eef1; <br />
text-shadow:3px 2px 0 #ffae00; <br />
-webkit-transition-property:color .5s ease-out; <br />
transition-property:color .5s ease-out;}<br />
<br />
header{display:block;}<br />
<br />
</code></pre></p>
<p>Por ser uma fonte script, a England funciona melhor com a fonte em tamanho grande. Merece menção o <strong>text-shadow</strong> que cria uma sombra levemente mais escura que o fundo. A transição, grande estrela do CSS 3, funciona somente no Chrome e Safari. Nesta linha, é definida que a propriedade cor, se for diferente da amarela, vai retornar a ela em meio segundo; mais rapidamente quando chegar ao final do efeito (ease-out). </p>
<p>No estado <strong>:hover</strong> ocorre apenas a inversão das cores do texto e da sombra. Também com efeito.</p>
<p>A tag header é definida como elemento de bloco para ocupar toda a extensão superior da página.</p>
<p>Para capitular a primeira letra do texto vamos utilizar uma soma de seletores para evitar a utilização de marcação desnecessária.</p>
<p><pre><code><br />
<br />
.esq-div p:first-of-type:first-letter{<br />
font-family:England; <br />
font-size:600%; <br />
margin:10px 30px 0 0; <br />
float:left;}<br />
<br />
</code></pre></p>
<p>Lendo de trás para frente selecionamos a primeira letra(first-letter) do primeiro elemento parágrafo (first-of-type) existente dentro da ‘esq-div’.</p>
<p>A fonte será England e 600 por cento maior que o restante do texto. Para encaixar entre as três primeiras linhas é flutuada à esquerda.</p>
<h2>O Texto Em Colunas</h2>
<p>Com o CSS 3 podemos facilmente dividir o texto em quantas colunas quisermos, ainda definindo a distancia entre elas e o divisor.  </p>
<p><pre><code><br />
<br />
.esq-div &gt; p:not(:nth-child(2)){<br />
-webkit-column-count: 2; <br />
-webkit-column-gap: 30px; &gt;<br />
-moz-column-count: 2; <br />
-moz-column-gap: 30px; <br />
column-count: 2; <br />
column-gap: 30px;}<br />
<br />
.esq-div p:nth-child(2){margin-bottom:15px;}<br />
<br />
</code></pre></p>
<p>Na nossa página, o primeiro parágrafo não será divido para que a citação fique mais bem encaixada. Então temos que excluí-lo da seleção. Mais uma vez fica mais fácil entender lendo os seletores de trás para frente. Exceto (:not) os dois primeiros parágrafos(:nth-child(2)) pertencem à ‘esq-div’, todos os outros serão divididos em duas colunas distantes 30 pixels uma da outra.</p>
<p>Na regra seguinte selecionamos o primeiro parágrafo para aplicar uma margem inferior de forma a distanciá-lo do restante do texto e melhorar o resultado final. </p>
<h2>A Citação</h2>
<p>O primeiro parágrafo esta corrido, enquanto o restante do texto esta dividido em duas colunas. Agora vamos encaixar a citação.</p>
<p><pre><code><br />
<br />
.citacao{<br />
width:150px; <br />
height:150px; <br />
padding:30px; <br />
position:relative; <br />
float:right; <br />
margin:5px;<br />
background:#ffae00; <br />
-moz-border-radius:150px; <br />
-webkit-border-radius:150px; <br />
border-radius:150px; <br />
-moz-box-shadow:3px 3px 0 #d2eef1; <br />
-webkit-box-shadow:3px 3px 0 #d2eef1; <br />
box-shadow:3px 3px 0 #d2eef1; <br />
}<br />
<br />
.citacao:hover{<br />
-webkit-transform:rotate(-15deg) scale(1.2); <br />
-moz-transform:rotate(-15deg) scale(1.2); <br />
transform:rotate(-15deg) scale(1.2); <br />
z-index:900; <br />
-webkit-box-shadow:0 0 5px #999; <br />
-moz-box-shadow:0 0 5px #999; <br />
box-shadow:0 0 5px #999;}<br />
<br />
.citacao blockquote{<br />
text-align:center; <br />
font:bold italic 2.3em &quot;Times New Roman&quot;, Times, serif; <br />
line-height:1.4em; }<br />
<br />
.citacao blockquote:before, .citacao blockquote:after{<br />
content:&#039;\201C&#039;;<br />
display:block;<br />
 margin:0 0 -20px 0; <br />
font-size:3em;<br />
 color:#cb8a00; <br />
text-align:left;}<br />
<br />
.citacao blockquote:after{<br />
content:&#039;\201D&#039;;<br />
margin:0 5px -5px 0; <br />
text-align:right;}<br />
<br />
</code></pre></p>
<p>Para que a div fique redonda é necessário que tanto a largura quanto a altura sejam do mesmo tamanho.  O arredondamento das bordas por sua vez será igual a largura ou altura dela. Uma sombra na mesma direção e cor da aplicada no título adiciona um leve efeito e assegura a integridade.</p>
<p>Quando o mouse pousar sobre esta <strong>div</strong>, ela vai ‘pular’, aumentando de tamanho.  Para isso é utilizada a propriedade <strong>transform</strong>. No efeito, existe a rotação anti-horária em 15 graus negativos com o leve aumento do bloco. Para tornar o efeito mais verossímil, a sombra é alterada do azul claro chapado para um cinza com bastante difusão. O elemento também é trazido para a frente de todos os outros com o z-index.</p>
<p>As aspas em torno do texto são inseridas utilizando os pseudo-elementos :after e :before.  Na propriedade <strong>content</strong> é definido o conteúdo a ser adicionado. Não são utilizados os valores “open-quote” e” close-quote” porque o Chrome/Safari não interpretam. Então usamos os caracteres unicode correspondentes.</p>
<h2>Caixa De Texto</h2>
<p>A exemplo das matérias de uma revista ou jornal foi adicionada uma caixa de texto na lateral com informações ligadas ao texto principal.</p>
<p><pre><code><br />
<br />
.dir-div{<br />
position:relative;<br />
float:left;<br />
width:280px; <br />
height:auto; <br />
background:#fff; <br />
padding:10px; <br />
-moz-box-shadow:0 0 7px #ccc; <br />
-webkit-box-shadow:0 0 7px #ccc; <br />
box-shadow:0 0 7px #ccc; <br />
-moz-border-radius:10px; <br />
-webkit-border-radius:10px; <br />
border-radius:10px;}<br />
<br />
</code></pre></p>
<p>Além das propriedades habituais para definir largura, posicionamento e espaçamento, foram adicionadas mais algumas para melhorar a aparência. Uma sombra bem difusa, mas com um cinza claro destaca a caixa. Os cantos arredondados tornam o design mais agradável. </p>
<p>Mais uma vez além da propriedade normal, é necessário adicionar os prefixos referentes aos navegadores. </p>
<p>O texto da caixa é um pouco menor que o da matéria além de ter a primeira linha mais destacada.</p>
<p><pre><code><br />
<br />
.dir-div p{font-size:1.2em;}<br />
<br />
.dir-div p:first-of-type:first-line{font-weight:bold; }<br />
<br />
.dir-div p:not(:last-child){margin-bottom:10px;}<br />
<br />
</code></pre></p>
<p>Primeiro o tamanho do texto é reduzido. E começam os seletores CSS 3. Iniciamos os trabalhos procurando pela primeira linha do primeiro parágrafo deste texto para finalmente adicionar negrito. É adicionada margem entre os parágrafos para tornar a leitura mais agradável, exceto o último parágrafo para evitar espaço excessivo em relação à borda.</p>
<h2>Legenda Para A Imagem</h2>
<p>Quando o mouse pousar sobre a imagem, será mostrada uma legenda na parte superior da imagem. Mas primeiro vamos relembrar a estrutura HTML desta parte.</p>
<p><pre><code><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;figure&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img src=&quot;img.jpg&quot; width=&quot;276&quot; height=&quot;184&quot; alt=&quot;imagem&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;figcaption&gt;<br />
Lorem ipsum é um texto padrão em latim.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/figcaption&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/figure&gt;<br />
<br />
</code></pre></p>
<p>A tag <strong>figure</strong> informa que o conteúdo é uma imagem (&#8230;) enquanto a <strong>figcaption</strong> serve justamente para ser uma legenda da imagem. </p>
<p><pre><code><br />
<br />
&nbsp;&nbsp;.dir-div img{<br />
&nbsp;&nbsp;border:2px solid #c7b3a0;&nbsp;&nbsp;<br />
&nbsp;&nbsp;margin-bottom:10px; <br />
&nbsp;&nbsp;position:relative; <br />
&nbsp;&nbsp;float:left; }<br />
<br />
&nbsp;&nbsp;figcaption{<br />
&nbsp;&nbsp;display:none; <br />
&nbsp;&nbsp;font:1.2em Arial, Helvetica, sans-serif; <br />
&nbsp;&nbsp;background-color:#fff; <br />
&nbsp;&nbsp;background-color:rgba(255,255,255,0.8); <br />
&nbsp;&nbsp;border:2px solid #eaeaea; <br />
&nbsp;&nbsp;position:absolute; <br />
&nbsp;&nbsp;top:10px; <br />
&nbsp;&nbsp;width:90%; <br />
&nbsp;&nbsp;padding:3px; <br />
&nbsp;&nbsp;text-align:center; <br />
&nbsp;&nbsp;border-bottom:1px solid #fff; <br />
&nbsp;&nbsp;text-shadow:0 0 1px #999;}<br />
<br />
&nbsp;&nbsp;.dir-div img:hover + figcaption{ <br />
&nbsp;&nbsp;display:block;<br />
&nbsp;&nbsp;z-index:500; }<br />
<br />
</code></pre></p>
<p>A propriedade chave na estilização do elemento imagem é o posicionamento relativo. Com isso ela se torna o ponto de referência para a legenda.</p>
<p>E falando na legenda, a principio ela não é mostrada graças ao <strong>display:none</strong>. Por que dois <strong>background-color</strong>?  O primeiro vale para o IE, que não entende o RGBA.  Definindo a cor do plano de fundo com o RGBA permite a você definir transparência, representada pelo canal Alpha do nome.  A legenda é posicionada absolutamente em relação à imagem e o texto tem uma sombra para melhorar o contraste.</p>
<p>Agora vamos fazer com que ela apareça. Isso ocorre quando o mouse pousar sobre (<strong>:hover</strong>) a imagem. Isso acontencendo o <strong>figcaption</strong> adjacente será mostrado com o <strong>display:block</strong> e posicionado acima dos outros elementos com o <strong>z-index</strong>.</p>
<h2>Rodapé</h2>
<p>O HTML 5  tem uma tag especial para englobar informações adicionais, como por exemplo o autor, comentários. É a footer. Vamos estiliza-la para finalizar a página.</p>
<p><pre><code><br />
<br />
footer{<br />
display:block; <br />
float:left;<br />
 width:100%; <br />
background:#ffae00; <br />
margin-top:10px; <br />
padding:5px; <br />
text-align:center; }<br />
<br />
</code></pre></p>
<p>Pelo que nós já vimos até aqui, até que esta estilização esta tranquila de entender. O bloco ocupa toda a extensão disponível com o texto centralizado e bem espaçado.</p>
<h2>Conclusão</h2>
<p>Como você pode conferir, apesar da aparência simples, nesta página foram aplicados grande parte dos seletores e propriedades trazidos pelo CSS 3. </p>
<p>Se você ficou um pouco perdido, acesse aqui no Webmaster.pt os artigos explicando tanto os aspectos do HTML 5:</p>
<ul>
<li><a href="http://www.webmaster.pt/html5-parte1-4955.html">Conheça O HTML 5 Parte 1</a></li>
<li><a href="http://www.webmaster.pt/html5-parte2-5094.html">Conheça O HTML 5 Parte 2</a></li>
</ul>
<p>Download do código usado neste tutorial: <a href='http://www.webmaster.pt/wp-content/uploads/2010/06/layout_css_html.zip'>Layout De Revista Com HTML5 E CSS3</a>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.webmaster.pt%2Fespecial-layout-de-revista-com-html5-e-css3-6582.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.webmaster.pt%2Fespecial-layout-de-revista-com-html5-e-css3-6582.html&amp;source=marketocracia&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.webmaster.pt/especial-layout-de-revista-com-html5-e-css3-6582.html">ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>
<p>Related posts:<ol>
<li><a href='http://www.webmaster.pt/especial-css3-layout-1909.html' rel='bookmark' title='Especial! CSS3 &#8211; Layout'>Especial! CSS3 &#8211; Layout</a></li>
<li><a href='http://www.webmaster.pt/css3-efeitos-textos-1907.html' rel='bookmark' title='Especial! CSS3 &#8211; Efeitos Em Textos'>Especial! CSS3 &#8211; Efeitos Em Textos</a></li>
<li><a href='http://www.webmaster.pt/css3-selectores-940.html' rel='bookmark' title='Especial! CSS3 &#8211; Selectores'>Especial! CSS3 &#8211; Selectores</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.webmaster.pt/especial-layout-de-revista-com-html5-e-css3-6582.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Como Criar Um Mapa Interativo Com CSS</title>
		<link>http://www.webmaster.pt/mapa-interativo-css-6288.html</link>
		<comments>http://www.webmaster.pt/mapa-interativo-css-6288.html#comments</comments>
		<pubDate>Thu, 17 Jun 2010 09:49:31 +0000</pubDate>
		<dc:creator>Maicon Sobczak</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.webmaster.pt/?p=6288</guid>
		<description><![CDATA[Como criar um mapa que destaca os continentes quando o mouse passa sobre cada continente utilizando sprites, com legenda e informação sobre o continente.<p><a href="http://www.webmaster.pt/mapa-interativo-css-6288.html">Como Criar Um Mapa Interativo Com CSS</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>

Related posts:<ol>
<li><a href='http://www.webmaster.pt/como-criar-galeria-jquery-css3-12021.html' rel='bookmark' title='Como Criar Uma SUPER Galeria Com jQuery E CSS3'>Como Criar Uma SUPER Galeria Com jQuery E CSS3</a></li>
<li><a href='http://www.webmaster.pt/css3-como-criar-animacoes-8677.html' rel='bookmark' title='CSS3 &#8211; Como Criar Animações Espectaculares'>CSS3 &#8211; Como Criar Animações Espectaculares</a></li>
<li><a href='http://www.webmaster.pt/como-criar-animacoes-jquery-9097.html' rel='bookmark' title='Como Criar Animações Com jQuery'>Como Criar Animações Com jQuery</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h2>Mapa Interativo Com CSS</h2>
<p>Dentre algumas coisas previsíveis dentro do trabalho do desenvolvedor web esta a criação de um mapa interativo. Pode ser um mapa para listar os representantes da empresa espalhados pelo país ou os estados atendidos. Em alguma altura do campeonato você vai precisar criar um mapa intereativo.</p>
<p>Então neste tutorial vamos criar um mapa que destaca os continentes quando o mouse passar sobre cada um utilizando <strong>sprites</strong> para evitar tempo de espera entre a troca das imagens. Será adicionada legenda utilizando a <strong>pseudo-classe :target</strong> e dicas com informações sobre o continente.</p>
<p>O resultado pode ser conferido na imagem abaixo.</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/06/mapa.jpg" alt="mapa interativo com css" title="mapa interativo com css" width="600" height="266" class="aligncenter size-full wp-image-6289" /></p>
<h2>Organizando As Imagens</h2>
<p>O <strong>CSS Sprite</strong> é uma técnica para trabalhar com imagens onde todas as necessárias são unidas em um único arquivo que será a imagem de fundo dos elementos. Definido o tamanho do elemento, a posição desta imagem de fundo é alterada conforme a imagem que for preciso mostrar na tela.</p>
<p>Desta maneira é reduzido o número de requisições ao servidor e os efeitos são aplicados sem a necessidade de espera do carregamento. </p>
<p>Para a criação do nosso mapa a imagem principal fica assim:</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/06/mapa.gif" alt="imagem principal" title="imagem principal" width="569" height="543" class="aligncenter size-full wp-image-6290" /></p>
<p>Os continentes foram desmembrados e posicionados distantes um do outro para evitar que o pedaço de um apareça no efeito de outro.</p>
<p>Perdoe quem fez o mapa por não ter adicionado a Antartica.</p>
<h2>A Base</h2>
<p>Dentre as diversas maneiras de fazer este efeito, vamos utilizar itens de lista. </p>
<p><pre><code><br />
<br />
&lt;ul class=&quot;continentes&quot;&gt;<br />
<br />
&lt;li id=&quot;america&quot;&gt;&lt;a href=&quot;#america&quot; &gt;América&lt;/a&lt;/li&gt;<br />
&lt;li id=&quot;europa&quot;&gt;&lt;a href=&quot;#europa&quot; &gt;Europa&lt;/a&lt;/li&gt;<br />
&lt;li id=&quot;asia&quot;&gt;&lt;a href=&quot;#asia&quot; &gt;Ásia&lt;/a&gt;&lt;/li&gt;<br />
&lt;li id=&quot;africa&quot;&gt;&lt;a href=&quot;#africa&quot; &gt;África&lt;/a&gt;&lt;/li&gt;<br />
&lt;li id=&quot;oceania&quot;&gt;&lt;a href=&quot;#oceania&quot; &gt;Oceania&lt;/a&gt;&lt;/li&gt;&nbsp;&nbsp;<br />
<br />
&lt;/ul&gt;<br />
<br />
</code></pre></p>
<p>Desta forma a marcação e as regras CSS ficam simples. </p>
<p><pre><code><br />
<br />
.continentes {<br />
position:relative; <br />
float:left; <br />
height:260px; <br />
width:535px; <br />
margin-left:100px; <br />
background:url(mapa.gif) no-repeat left top;}<br />
<br />
</code></pre></p>
<p>Aqui foi definido o tamanho do mapa e imagem de fundo posicionada no campo superior esquerdo. A posição definida como relativa é importante porque o restante será posicionado em relação a este elemento.</p>
<h2>Os Continentes</h2>
<p>Cada item de lista é um continente, e para cada continente é definido um tamanho e posicionamento em relação à borda do mapa.</p>
<p><pre><code><br />
<br />
.continentes li{<br />
list-style:none; <br />
position:absolute; }<br />
<br />
#africa{<br />
width:120px; <br />
height:140px; <br />
left:208px; <br />
bottom:40px;}<br />
<br />
#america{<br />
width:226px; <br />
height:258px;}<br />
<br />
#asia{<br />
width:214px; <br />
height:164px; <br />
right:40px;}<br />
<br />
#europa{<br />
width:121px; <br />
height:75px; <br />
left:211px; <br />
top:6px;}<br />
<br />
#oceania{<br />
width:103px; <br />
height:89px; <br />
right:0; <br />
bottom:17px;}<br />
<br />
</code></pre></p>
<p>Veja na imagem abaixo como ficam posicionados os blocos. As cores servem apenas para identificar cada bloco e facilitar o posicionamento.</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/06/mapa01.jpg" alt="como ficam posicionados os blocos" title="como ficam posicionados os blocos" width="600" height="269" class="aligncenter size-full wp-image-6291" /></p>
<h2>Os Links</h2>
<p>Os links serão o gatilho para a mudança de estado do mapa. Eles mostrarão a imagem alterada e desencadeiam o estado :hover. Por padrão são elementos de linha (inline), o que é muito pouco espaço para mostrar a imagem. Vamos alterar isso.</p>
<p><pre><code><br />
<br />
.continentes li a{<br />
display:block; <br />
height:100%; <br />
text-indent:-999px;}<br />
<br />
</code></pre></p>
<p>Tornando os links elementos de bloco, podemos definir altura também. Assim, o link ocupa toda a extensão do elemento da lista e por extensão, a imagem que será mostrada. A endentação esta negativa para evitar que o texto do link fique visível</p>
<h2>A Troca Das Imagens</h2>
<p>Até o momento nenhum item de lista possui imagem de fundo. Vamos trabalhar para que as imagens sejam mostradas quando o mouse passar sobre cada um dos continentes.</p>
<p><pre><code><br />
<br />
.continentes li a:hover{background:url(mapa.gif) no-repeat;}<br />
<br />
</code></pre></p>
<p>A imagem utilizada para todos os efeitos :hover é a mesma, então ao invés de declarar para cada um em separado, é feita uma regra que serve para todos que receberem o foco do mouse.</p>
<p><pre><code><br />
<br />
li#america a:hover{background-position:0px -275px;}<br />
<br />
li#africa a:hover {background-position:-227px -381px;}<br />
<br />
li#europa a:hover {background-position:-227px -284px;}<br />
<br />
li#asia a:hover {background-position:-347px -287px;}<br />
<br />
li#oceania a:hover{background-position:-359px -457px;}<br />
<br />
</code></pre></p>
<p>Em seguida basta apenas fazer o trabalho de posicionamento com a propriedade <a href="http://www.w3schools.com/css/pr_background-position.asp" target="_blank">background-position</a>. Partindo do canto superior esquerdo, a imagem de fundo é deslocada para preencher toda a extensão do elemento sobrepondo o mapa cinza.</p>
<p>Para saber de quanto deve ser este deslocamento você pode utilizar o Photoshop. Com a imagem aberta, utilize a ferramenta de seleção e marque o espaço entre a borda da imagem e o início do continente a ser posicionado. Visualize o painel Info (F8) e anote as informações de tamanho da seleção, como na imagem abaixo.</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/06/posicionamento.jpg" alt="trabalho de posicionamento" title="trabalho de posicionamento" width="600" height="554" class="aligncenter size-full wp-image-6292" /></p>
<p>Para mostrar o continente americano, a imagem de fundo será deslocada 274 pixels na vertical.</p>
<p>Este posicionamento intencionalmente não se encaixa perfeitamente com a imagem de baixo. Ele fica dois pixels mais acima do que deveria. Com isso o continente destacado ‘salta’ do mapa e resulta em um efeito bastante interessante.</p>
<p>A troca de imagens esta funcionando e o efeito principal esta feito. Quando você passa o mouse sobre um dos continentes, ele fica destacado.</p>
<p>Mas podemos ir um pouco além, e adicionar uma legenda com os continentes disponíveis que vai destacar o que for clicado.</p>
<h2>:target</h2>
<p>A chave para o funcionamento da legenda é a pseudo-classe :target, uma das novidades do CSS 3.</p>
<p>Uma página pode ser dividida em seções com âncoras. Um texto longo, por exemplo, tem o índice no topo com os links para os títulos. Ao clicar em um destes links você é levado para a parte da página correspondente a ele.</p>
<p>A pseudo-classe :target permite estilizar o destino deste link. Resalva para o não funcionamento desta pseudo-classe no Internet Explorer.</p>
<h2>A Legenda</h2>
<p>Como não poderia ser diferente, a legenda é criada utilizando itens de lista.</p>
<p><pre><code><br />
<br />
&lt;ul class=&quot;legenda&quot;&gt;<br />
&lt;h2&gt;Legenda&lt;/h2&gt;<br />
&lt;li&gt;&lt;a href=&quot;#africa&quot; &gt;&amp;Aacute;frica&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;#america&quot; &gt;Am&amp;eacute;rica&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;#asia&quot;&gt;Asia&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;#europa&quot; &gt;Europa&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;#oceania&quot; &gt;Oceania&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;#&quot; &gt;Nenhum&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;<br />
<br />
</code></pre></p>
<p>Os links da lista estão apontando para âncoras dentro da própria página, por isso a tralha (#) na frente do destino do link. O link ‘nenhum’ como não aponta para destino algum, quando for clicado vai tirar o destaque do mapa, deixando ele no estado inicial.</p>
<p>Volte no código e veja que cada item da lista no mapa tem um id. É para este id que os links da legenda estão apontando.</p>
<p>Vamos posicionar a legenda na lateral direita do mapa. E aplicar alguns estilos básicos.</p>
<p><pre><code><br />
<br />
.legenda{<br />
position:relative; <br />
float:left; <br />
margin:50px; <br />
list-style-type:circle; <br />
list-style-position:inside;&nbsp;&nbsp;<br />
background:#eaeaea; <br />
border:3px solid #c0c0c0; <br />
padding-bottom:10px; <br />
-moz-border-radius:5px; <br />
-webkit-border-radius:5px; <br />
border-radius:5px;}<br />
<br />
.legenda li {<br />
margin:0 10px; <br />
line-height:18px;}<br />
<br />
.legenda a:hover{color:#999;}<br />
<br />
</code></pre></p>
<h2>Destacando O Link Clicado</h2>
<p>Para o funcionamento do :target, o código não vai precisar de muitas alterações. Precisamos apenas adicionar a pseudo-classe nas regras já existentes.</p>
<p><pre><code><br />
<br />
.continentes li a:hover, :target{background:url(mapa.gif) no-repeat;}<br />
<br />
li#america a:hover, #america:target{background-position:0px -275px;}<br />
<br />
li#africa a:hover, #africa:target{background-position:-227px -381px;}<br />
<br />
li#europa a:hover, #europa:target{background-position:-227px -284px;}<br />
<br />
li#asia a:hover, #asia:target{background-position:-347px -287px;}<br />
<br />
li#oceania a:hover, #oceania:target{background-position:-359px -457px;}<br />
<br />
</code></pre></p>
<p>A lógica é a seguinte: o destino do link clicado vai ter como imagem de fundo o ‘mapa.gif’ e esta imagem será deslocada para encaixar no continente respectivo. O mesmo que acontece quando o mouse passa sobre cada item da lista. Tanto, que dividem as mesmas propriedades.</p>
<p>Como cada item da lista do mapa também tem um link apontado para si, ao clicar no continente dentro do mapa, o :target vai agir igualmente.</p>
<h2>Adicionando Dica No Mapa</h2>
<p>Vamos melhorar um pouco mais o nosso mapa adicionando uma dica quando o mouse passar sobre os continentes. Um exemplo é informar a área total do continente.</p>
<p>Para começar adicionamos elementos spans depois de cada link do mapa com a informação da área.</p>
<p><pre><code><br />
&lt;ul class=&quot;continentes&quot;&gt;<br />
<br />
&lt;li id=&quot;america&quot;&gt;&lt;a href=&quot;#america&quot; title=&quot;area da america&quot; &gt;América&lt;/a&gt;&lt;span&gt;Área: 42 189 120 km²&lt;/span&gt;&lt;/li&gt;<br />
&lt;li id=&quot;europa&quot;&gt;&lt;a href=&quot;#europa&quot; &gt;Europa&lt;/a&gt;&lt;span&gt;Área: 10 498 000 km²&lt;/span&gt;&lt;/li&gt;<br />
&lt;li id=&quot;asia&quot;&gt;&lt;a href=&quot;#asia&quot; &gt;Ásia&lt;/a&gt;&lt;span&gt;Área: 43 810 582 km²&lt;/span&gt;&lt;/li&gt;<br />
&lt;li id=&quot;africa&quot;&gt;&lt;a href=&quot;#africa&quot; &gt;África&lt;/a&gt;&lt;span&gt;Área: 30.221.532 km²&lt;/span&gt;&lt;/li&gt;<br />
&lt;li id=&quot;oceania&quot;&gt;&lt;a href=&quot;#oceania&quot; &gt;Oceania&lt;/a&gt;&lt;span&gt;Área: 9.008.458 km²&lt;/span&gt;&lt;/li&gt;&nbsp;&nbsp;<br />
&lt;/ul&gt;<br />
<br />
</code></pre></p>
<p>E por fim duas regras CSS. Uma para esconder e outra para mostrar a informação.</p>
<p><pre><code><br />
 .continentes li span{<br />
 display:none; <br />
 position:absolute; <br />
 top:50px; <br />
 left:50px; <br />
 padding:7px; <br />
 background:#333; <br />
 color:#fff; <br />
 -moz-border-radius:5px; <br />
 -webkit-border-radius:5px; <br />
 border-radius:5px; <br />
 z-index:500; <br />
 width:120px; <br />
 text-align:center;}<br />
<br />
 .continentes li a:hover + span{display:block;}<br />
</code></pre></p>
<p>A dica é posicionada absolutamente em relação ao item da lista. Para ficar em primeiro plano, acima dos outros elementos, informamos um z-index alto. Com a estilização completa, escondemos com o display:none.</p>
<p>A dica será mostrada quando o mouse passar ou pousar sobre o elemento no mapa. O sinal de mais (+) que aparece na regra pode ser traduzido como “após”. Então quando um link da lista ‘continentes’ estiver no estado :hover, o span vizinho será mostrado.</p>
<p>Ao invés de utilizar span, fica o desafio para você criar o mesmo efeito com o :after.</p>
<h2>Conclusão</h2>
<p>Muitas melhorias ainda podem ser feitas na apresentação. Você pode adicionar opacidade na dica e animação. Tudo utilizando CSS. Agora é praticar.</p>
<p>Download do código usado neste tutorial: <a href='http://www.webmaster.pt/wp-content/uploads/2010/06/mapa_css.zip'>Como Criar Um Mapa Interativo Com CSS</a>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.webmaster.pt%2Fmapa-interativo-css-6288.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.webmaster.pt%2Fmapa-interativo-css-6288.html&amp;source=marketocracia&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.webmaster.pt/mapa-interativo-css-6288.html">Como Criar Um Mapa Interativo Com CSS</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>
<p>Related posts:<ol>
<li><a href='http://www.webmaster.pt/como-criar-galeria-jquery-css3-12021.html' rel='bookmark' title='Como Criar Uma SUPER Galeria Com jQuery E CSS3'>Como Criar Uma SUPER Galeria Com jQuery E CSS3</a></li>
<li><a href='http://www.webmaster.pt/css3-como-criar-animacoes-8677.html' rel='bookmark' title='CSS3 &#8211; Como Criar Animações Espectaculares'>CSS3 &#8211; Como Criar Animações Espectaculares</a></li>
<li><a href='http://www.webmaster.pt/como-criar-animacoes-jquery-9097.html' rel='bookmark' title='Como Criar Animações Com jQuery'>Como Criar Animações Com jQuery</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.webmaster.pt/mapa-interativo-css-6288.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Menu Drop Down Com CSS</title>
		<link>http://www.webmaster.pt/menu-drop-down-css-838.html</link>
		<comments>http://www.webmaster.pt/menu-drop-down-css-838.html#comments</comments>
		<pubDate>Thu, 29 Apr 2010 09:40:20 +0000</pubDate>
		<dc:creator>Maicon Sobczak</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.webmaster.pt/?p=838</guid>
		<description><![CDATA[Saiba como fazer um Drop Down Menu em CSS com apenas um pequeno código Javascript para IE6.<p><a href="http://www.webmaster.pt/menu-drop-down-css-838.html">Menu Drop Down Com CSS</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>

Related posts:<ol>
<li><a href='http://www.webmaster.pt/menu-horizontal-segue-scroll-down-jquery-10921.html' rel='bookmark' title='Menu Horizontal Que Segue O Scroll Down &#8211; jQuery'>Menu Horizontal Que Segue O Scroll Down &#8211; jQuery</a></li>
<li><a href='http://www.webmaster.pt/ozh-admin-drop-down-menu-wordpress-plugins-parte16-10829.html' rel='bookmark' title='Ozh&#8217; Admin Drop Down Menu WordPress Plugins Parte16'>Ozh&#8217; Admin Drop Down Menu WordPress Plugins Parte16</a></li>
<li><a href='http://www.webmaster.pt/jmenu-menu-navegacao-subniveis-13060.html' rel='bookmark' title='jMenu: Menu De Navegação Com Subníveis'>jMenu: Menu De Navegação Com Subníveis</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Como um entusiasta do CSS que sou, fico intrigado ao ver tantos plugins javascript para criação de menus drop down. Por mais que eles tenham a boa intenção de tornar os menus compatíveis com todos os navegadores, na maioria das vezes eles apenas complicam. Já que o único que não aceita totalmente os menus com subníveis é o Internet Explorer 6.</p>
<p>Neste tutorial vamos criar um menu drop down totalmente em CSS e acrescentar ao final um pequeno código javascript para dar suporte ao IE6.</p>
<p>Demo do <a href="http://cssmenu.webmaster.pt/" target="_blank">Drop Down Menu Em CSS</a></p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/02/menu_css-e1272533924544.jpg" alt="Drop Down Menu Em CSS" title="Drop Down Menu Em CSS" width="600" height="212" class="aligncenter size-full wp-image-4619" /></p>
<h2>Código HTML</h2>
<p>Formamos o menu utilizando uma  lista não ordenada.</p>
<p><pre><code><br />
&lt;ul class=&quot;menu&quot;&gt;<br />
&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Inicial&quot;&gt;Inicial&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Sobre&quot;&gt;Sobre&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Servi&amp;ccedil;os&quot;&gt;Servi&amp;ccedil;os&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ul&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Web design&quot;&gt;Web Design&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Web master&quot;&gt;Web Master&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;SEO&quot;&gt;SEO&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Design gr&amp;aacute;fico&quot;&gt;Design Gr&amp;aacute;fico&lt;/a&gt;&lt;/li&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<br />
&lt;/li&gt;<br />
&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Porftolio&quot;&gt;Portfolio&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&lt;li&nbsp;&nbsp;class=&quot;border0&quot;&gt;&lt;a href=&quot;#&quot; title=&quot;Contato&quot;&gt;Contato&lt;/a&gt;&lt;/li&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&lt;/ul&gt;<br />
</code></pre></p>
<p>O detalhe fica por conta do terceiro menu, “serviços”. Note que antes de fechar o elemento da lista </li>
<p>, é inserida outra lista entre as tags. É esta lista que será o menu drop down.</p>
<h2>Estilizando O Menu</h2>
<p>Iniciamos retirando os marcadores nativos dos itens da lista. Em seguida posicionamos o grupo, definimos uma borda e flutuamos à esquerda, caso contrário ele não aplica corretamente as bordas. </p>
<p><pre><code><br />
.menu{list-style:none; margin:20px 0 0 350px; border:1px solid #c0c0c0; float:left; }<br />
</code></pre></p>
<p>Partimos para os itens do menu. O adicionamos position:relative para o item da lista, com isso criamos limites para, mais adiante posicionar o submenu.  </p>
<p><pre><code><br />
.menu li{position:relative; float:left; border-right:1px solid #c0c0c0; }<br />
</code></pre></p>
<p>Os links podem ser estilizados livremente, pois não exercem influência no resultado final. Se você utiliza o Firefox, Chrome ou Opera, poderá ver um efeito interessante ao passar o mouse sobre os links. </p>
<p>Utilizei a nova propriedade text-shadow do CSS3 para criar um efeito de brilho além da box-shadow para destacar o elemento</p>
<p><pre><code><br />
.menu li a{font-size:1.3em;&nbsp;&nbsp;color:#333; text-decoration:none; padding:5px 10px; display:block;}<br />
<br />
.menu li a:hover{background:#333; color:#fff; -moz-box-shadow:0 3px 10px 0 #CCC; -webkit-box-shadow:0 3px 10px 0 #ccc; text-shadow:0px 0px 5px #fff; }<br />
</code></pre></p>
<h2>Submenu</h2>
<p>Definimos a posição do submenu como absoluta por dois motivos. Primeiro para que sua posição fique limitada ao menu “serviços” que esta posicionado como relativo. Segundo, para que o submenu não interfira no fluxo dos elementos do menu. </p>
<p>Além de posicionar e definir a cor do plano de fundo, adicionamos o display:none, que esconde o submenu.</p>
<p><pre><code><br />
.menu li&nbsp;&nbsp; ul{position:absolute; top:23px; left:-20px; background-color:#fff; display:none; }<br />
</code></pre></p>
<p>Teste o código no navegador e veja que eles esta quase onde queremos. Só falta mostrar o submenu.</p>
<p>Quando o mouse passar sobre (:hover) um item do menu, a lista descendente será mostrada. </p>
<p><pre><code><br />
.menu li:hover ul, .menu li.over ul{display:block;}<br />
</code></pre></p>
<p>Como aplicamos as relações de descendência dos elementos, é possível criar submenu para todos os links do menu principal e eles funcionarão perfeitamente sem necessidade de novas declarações CSS.</p>
<p>O efeito esta pronto!</p>
<p>Vamos adicionar mais alguns estilos para que tudo fique ajeitado.</p>
<p><pre><code><br />
.menu li ul li{border:1px solid #c0c0c0; display:block; width:110px;}<br />
<br />
li.border0{border:0;}<br />
</code></pre></p>
<h2>Suporte Ao IE6</h2>
<p>Nosso menu drop down esta funcionando perfeitamente nos browsers modernos. Mas o Internet Explorer 6, somente suporta o estado hover para links, não para elementos li, que é o que precisamos.</p>
<p>Para resolvermos o problema, basta copiar este código do Peter Nederlof (http://www.xs4all.nl/~peterned):</p>
<p><pre><code><br />
&lt;public:attach event=&quot;ondocumentready&quot; onevent=&quot;CSSHover()&quot; /&gt;<br />
&lt;script&gt;<br />
/**<br />
 * Whatever:hover - V3.11<br />
 * http://www.xs4all.nl/~peterned/<br />
 *&nbsp;&nbsp;<br />
 * Copyright (c) 2009 Peter Nederlof<br />
 * Licensed under the LGPL license<br />
 * http://creativecommons.org/licenses/LGPL/2.1<br />
 */<br />
window.CSSHover=(function(){var m=/(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i;var n=/(.*?)\:(hover|active|focus)/i;var o=/[^:]+:([a-z\-]+).*/i;var p=/(\.([a-z0-9_\-]+):[a-z]+)|(:[a-z]+)/gi;var q=/\.([a-z0-9_\-]*on(hover|active|focus))/i;var s=/msie (5|6|7)/i;var t=/backcompat/i;var u={index:0,list:[&#039;text-kashida&#039;,&#039;text-kashida-space&#039;,&#039;text-justify&#039;],get:function(){return this.list[(this.index++)%this.list.length]}};var v=function(c){return c.replace(/-(.)/mg,function(a,b){return b.toUpperCase()})};var w={elements:[],callbacks:{},init:function(){if(!s.test(navigator.userAgent)&amp;&amp;!t.test(window.document.compatMode)){return}var a=window.document.styleSheets,l=a.length;for(var i=0;i&lt;l;i++){this.parseStylesheet(a[i])}},parseStylesheet:function(a){if(a.imports){try{var b=a.imports;var l=b.length;for(var i=0;i&lt;l;i++){this.parseStylesheet(a.imports[i])}}catch(securityException){}}try{var c=a.rules;var r=c.length;for(var j=0;j&lt;r;j++){this.parseCSSRule(c[j],a)}}catch(someException){}},parseCSSRule:function(a,b){var c=a.selectorText;if(m.test(c)){var d=a.style.cssText;var e=n.exec(c)[1];var f=c.replace(o,&#039;on$1&#039;);var g=c.replace(p,&#039;.$2&#039;+f);var h=q.exec(g)[1];var i=e+h;if(!this.callbacks[i]){var j=u.get();var k=v(j);b.addRule(e,j+&#039;:expression(CSSHover(this, &quot;&#039;+f+&#039;&quot;, &quot;&#039;+h+&#039;&quot;, &quot;&#039;+k+&#039;&quot;))&#039;);this.callbacks[i]=true}b.addRule(g,d)}},patch:function(a,b,c,d){try{var f=a.parentNode.currentStyle[d];a.style[d]=f}catch(e){a.runtimeStyle[d]=&#039;&#039;}if(!a.csshover){a.csshover=[]}if(!a.csshover[c]){a.csshover[c]=true;var g=new CSSHoverElement(a,b,c);this.elements.push(g)}return b},unload:function(){try{var l=this.elements.length;for(var i=0;i&lt;l;i++){this.elements[i].unload()}this.elements=[];this.callbacks={}}catch(e){}}};var x={onhover:{activator:&#039;onmouseenter&#039;,deactivator:&#039;onmouseleave&#039;},onactive:{activator:&#039;onmousedown&#039;,deactivator:&#039;onmouseup&#039;},onfocus:{activator:&#039;onfocus&#039;,deactivator:&#039;onblur&#039;}};function CSSHoverElement(a,b,c){this.node=a;this.type=b;var d=new RegExp(&#039;(^|\\s)&#039;+c+&#039;(\\s|$)&#039;,&#039;g&#039;);this.activator=function(){a.className+=&#039; &#039;+c};this.deactivator=function(){a.className=a.className.replace(d,&#039; &#039;)};a.attachEvent(x[b].activator,this.activator);a.attachEvent(x[b].deactivator,this.deactivator)}CSSHoverElement.prototype={unload:function(){this.node.detachEvent(x[this.type].activator,this.activator);this.node.detachEvent(x[this.type].deactivator,this.deactivator);this.activator=null;this.deactivator=null;this.node=null;this.type=null}};window.attachEvent(&#039;onbeforeunload&#039;,function(){w.unload()});return function(a,b,c,d){if(a){return w.patch(a,b,c,d)}else{w.init()}}})();<br />
&lt;/script&gt;<br />
</code></pre></p>
<p>e adicionar a linha abaixo no arquivo CSS.</p>
<p><pre><code><br />
body {behavior:url(csshover.htc); }<br />
</code></pre></p>
<h2>Subníveis</h2>
<p>Vamos agora expandir os horizontes e fazer um submenu para o submenu. O código HTML completo fica assim:</p>
<p><pre><code><br />
&lt;ul class=&quot;menu&quot;&gt;<br />
&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Inicial&quot;&gt;Inicial&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Sobre&quot;&gt;Sobre&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Servi&amp;ccedil;os&quot;&gt;Servi&amp;ccedil;os&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Web design&quot;&gt;Web Design&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;CSS&quot;&gt;CSS&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;XHTML&quot;&gt;XHTML&lt;/a&gt;&lt;/li&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Web master&quot;&gt;Web Master&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;SEO&quot;&gt;SEO&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Design gr&amp;aacute;fico&quot;&gt;Design Gr&amp;aacute;fico&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/li&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/li&gt;<br />
&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot; title=&quot;Porftolio&quot;&gt;Portfolio&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&lt;li&nbsp;&nbsp;class=&quot;border0&quot;&gt;&lt;a href=&quot;#&quot; title=&quot;Contato&quot;&gt;Contato&lt;/a&gt;&lt;/li&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</code></pre></p>
<p>Como você pode ver o submenu “Web Design” agora tem seu próprio submenu.</p>
<p>No código do arquivo CSS, são adicionadas as seguintes linhas:</p>
<p><pre><code><br />
.menu li:hover ul ul{display:none;}<br />
.menu li ul li ul{z-index:900; top:0; left:110px; background:#eaeaea;}<br />
</code></pre></p>
<p>Na primeira linha, declaramos que será escondida toda a lista aninhada em uma lista e esta for descendente de um elemento
<li> quando o mouse passar sobre este.</p>
<p>Na segunda linha, definimos um z-index alto para que o sub-submenu se sobreponha sobre todos os outros. Também o deslocamos 110px para a direita, que é a largura do submenu “Web Design”. </p>
<p>Alteramos a seguinte linha para suportar o novo submenu:</p>
<p><pre><code><br />
.menu li:hover ul, .menu li ul li:hover ul, .menu li.over ul, .menu li ul li.over ul{display:block;}<br />
</code></pre></p>
<p>O CSS completo fica assim:</p>
<p><pre><code><br />
h1{font:bold 5em Arial, Helvetica, sans-serif; text-align:center; margin:30px 0 0 0; background:#333; color:#fff; padding:10px; letter-spacing:-0.07em; text-shadow:0px 0px 5px #eaeaea; }<br />
<br />
.menu{list-style:none; margin:20px 0 0 350px; border:1px solid #c0c0c0; float:left; }<br />
<br />
.menu li{position:relative; float:left; border-right:1px solid #c0c0c0;}<br />
<br />
.menu li a{font-size:1.3em;&nbsp;&nbsp;color:#333; text-decoration:none; padding:5px 10px; display:block;}<br />
<br />
.menu li a:hover{background:#333; color:#fff; -moz-box-shadow:0 3px 10px 0 #CCC; -webkit-box-shadow:0 3px 10px 0 #ccc; text-shadow:0px 0px 5px #fff; }<br />
<br />
.menu li ul{position:absolute; top:23px; left:-20px; background-color:#fff; display:none; }<br />
<br />
.menu li:hover ul ul{display:none;}<br />
<br />
.menu li:hover ul, .menu li ul li:hover ul, .menu li.over ul, .menu li ul li.over ul{display:block;}<br />
<br />
.menu li ul li{border:1px solid #c0c0c0; display:block; width:110px;}<br />
<br />
li.border0{border:0;}<br />
<br />
.menu li ul li ul{z-index:900; top:0; left:110px; background:#eaeaea;}<br />
<br />
body {behavior:url(csshover.htc); } <br />
<br />
/*Fix IE. Hide from IE Mac\*/<br />
* html .menu {margin-left:175px; }<br />
/*End*/<br />
</code></pre></p>
<h2>Conclusão</h2>
<p>Em resumo, para criar um submenu você faz o seguinte:</p>
<p><code>&lt;li&gt;</code> &#8211; Posiciona relativamente (position:relative) e flutua à esquerda (float:left).</p>
<p><code>&lt;li&gt; &lt;ul&gt;</code> &#8211; Esconda (display:none) e posicione absolutamente (position:absolute). </p>
<p>E quando o mouse passar sobre o <code>&lt;li&gt;</code> o submenu é mostrado (display:block).</p>
<p>Entenda isso e você vai conseguir criar menus drop down com muita facilidade.</p>
<p><strong>DOWNLOAD:</strong> Descarregue o código utilizado neste tutorial: <a href='http://www.webmaster.pt/menu-drop-down-css-838.html/menu_drop_down' rel='attachment wp-att-887'>Menu Drop Down Com CSS</a>, em formato .zip.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.webmaster.pt%2Fmenu-drop-down-css-838.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.webmaster.pt%2Fmenu-drop-down-css-838.html&amp;source=marketocracia&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.webmaster.pt/menu-drop-down-css-838.html">Menu Drop Down Com CSS</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>
<p>Related posts:<ol>
<li><a href='http://www.webmaster.pt/menu-horizontal-segue-scroll-down-jquery-10921.html' rel='bookmark' title='Menu Horizontal Que Segue O Scroll Down &#8211; jQuery'>Menu Horizontal Que Segue O Scroll Down &#8211; jQuery</a></li>
<li><a href='http://www.webmaster.pt/ozh-admin-drop-down-menu-wordpress-plugins-parte16-10829.html' rel='bookmark' title='Ozh&#8217; Admin Drop Down Menu WordPress Plugins Parte16'>Ozh&#8217; Admin Drop Down Menu WordPress Plugins Parte16</a></li>
<li><a href='http://www.webmaster.pt/jmenu-menu-navegacao-subniveis-13060.html' rel='bookmark' title='jMenu: Menu De Navegação Com Subníveis'>jMenu: Menu De Navegação Com Subníveis</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.webmaster.pt/menu-drop-down-css-838.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>CSS &#8211; Melhores Práticas</title>
		<link>http://www.webmaster.pt/css-melhores-praticas-949.html</link>
		<comments>http://www.webmaster.pt/css-melhores-praticas-949.html#comments</comments>
		<pubDate>Wed, 31 Mar 2010 10:10:26 +0000</pubDate>
		<dc:creator>Maicon Sobczak</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.webmaster.pt/?p=949</guid>
		<description><![CDATA[Este é o último artigo da série Aprende CSS Com Maicon Sobczak. O artigo trata de quais são as melhores práticas no CSS. Recomendo está série de tutoriais.<p><a href="http://www.webmaster.pt/css-melhores-praticas-949.html">CSS &#8211; Melhores Práticas</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>

Related posts:<ol>
<li><a href='http://www.webmaster.pt/melhores-praticas-formularios-1917.html' rel='bookmark' title='Melhores Práticas Na Criação De Formulários'>Melhores Práticas Na Criação De Formulários</a></li>
<li><a href='http://www.webmaster.pt/newsletters-27.html' rel='bookmark' title='Newsletters &#8211; Definição e Boas Práticas'>Newsletters &#8211; Definição e Boas Práticas</a></li>
<li><a href='http://www.webmaster.pt/menu-drop-down-css-838.html' rel='bookmark' title='Menu Drop Down Com CSS'>Menu Drop Down Com CSS</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Tutorial Anterior Da Série <a href="http://www.webmaster.pt/tutoriais-programacao-webdesign/aprende-css">Aprende CSS Com Maicon Sobczak</a> <strong>&gt; <a href="http://www.webmaster.pt/especial-css3-layout-1909.html">Especial! CSS3 &#8211; Layout</a></strong></p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/03/yes.jpg" alt="Imagem SIM" title="Imagem SIM" width="400" height="300" class="aligncenter size-full wp-image-3737" /></p>
<p>Melhores práticas na utilização de uma linguagem.. Bem, em última instância, a melhor prática é a que melhor funciona para cada um. </p>
<p>Mas vou sair um pouco dos extremos para apresentar algumas práticas na criação de folhas de estilo que são unanimidade entre os web designers. Também farei algumas observações a respeito de outras que dividem opiniões.</p>
<p>E qual a importância de padronizar a forma como são escritas as regras CSS? Para ficar nas duas principais: menor peso do arquivo e facilidade na manutenção.</p>
<p>É importante ressaltar que não importa a versão do CSS, o ganho será o mesmo.</p>
<h2>Framework</h2>
<p>Inicio já com uma questão polêmica. Os frameworks CSS. A proposta é agilizar o desenvolvimento resolvendo as discrepâncias entre os navegadores, criando classes genéricas e arquivos para mídias específicas. Tem até módulos para estilizar formulários e cuidar da tipografia.</p>
<p>Frameworks de outras linguagens já provaram que vale a pena utilizá-los. Dizem que você não precisa reinventar a roda. O conselho é de que você somente comece a usar quando dominar completamente o CSS para que saiba o porque de determinadas regras e com isso possa aumentar realmente a produtividade.</p>
<h2>Resetar Os Valores</h2>
<p>Assim como em uma guerra, quem sofre mesmo não são as partes que lutam, mas quem esta entre eles, os civis, na guerra dos browsers, os maiores prejudicados são os desenvolvedores.</p>
<p>Apesar de caminharmos para uma padronização ainda existem muitas versões dos navegadores no mercado e cada uma possui um valor padrão diferente para um mesmo elemento.</p>
<p>Para evitar dores de cabeça, a solução é resetar os valores padrões. Existem diversas abordagens, algumas tentam englobar todos os elementos, outras fazem somente o básico. Testando você encontrará uma que melhor se encaixe à sua forma de desenvolver. </p>
<p>O exemplo abaixo é um dos mais conhecidos e foi desenvolvido por Eric Meyer (http://meyerweb.com/eric/tools/css/reset/index.html).</p>
<p><pre><code><br />
html, body, div, span, applet, object, iframe,<br />
h1, h2, h3, h4, h5, h6, p, blockquote, pre,<br />
a, abbr, acronym, address, big, cite, code,<br />
del, dfn, em, font, img, ins, kbd, q, s, samp,<br />
small, strike, strong, sub, sup, tt, var,<br />
b, u, i, center,<br />
dl, dt, dd, ol, ul, li,<br />
fieldset, form, label, legend,<br />
table, caption, tbody, tfoot, thead, tr, th, td {<br />
&nbsp;&nbsp;margin: 0;<br />
&nbsp;&nbsp;padding: 0;<br />
&nbsp;&nbsp;border: 0;<br />
&nbsp;&nbsp;outline: 0;<br />
&nbsp;&nbsp;font-size: 100%;<br />
&nbsp;&nbsp;vertical-align: baseline;<br />
&nbsp;&nbsp;background: transparent;<br />
}<br />
body {<br />
&nbsp;&nbsp;line-height: 1;<br />
}<br />
ol, ul {<br />
&nbsp;&nbsp;list-style: none;<br />
}<br />
blockquote, q {<br />
&nbsp;&nbsp;quotes: none;<br />
}<br />
blockquote:before, blockquote:after,<br />
q:before, q:after {<br />
&nbsp;&nbsp;content: &#039;&#039;;<br />
&nbsp;&nbsp;content: none;<br />
}<br />
<br />
/* remember to define focus styles! */<br />
:focus {<br />
&nbsp;&nbsp;outline: 0;<br />
}<br />
<br />
/* remember to highlight inserts somehow! */<br />
ins {<br />
&nbsp;&nbsp;text-decoration: none;<br />
}<br />
del {<br />
&nbsp;&nbsp;text-decoration: line-through;<br />
}<br />
<br />
/* tables still need &#039;cellspacing=&quot;0&quot;&#039; in the markup */<br />
table {<br />
&nbsp;&nbsp;border-collapse: collapse;<br />
&nbsp;&nbsp;border-spacing: 0;<br />
}<br />
</code></pre></p>
<h2>Ordem</h2>
<p>Crie uma ordem para declarar as regras. Seja alfabética ou de estrutura. O importante é que se você precisar alterar o código daqui um ano, você rapidamente encontre a regra a ser modificada.</p>
<p>Eu por exemplo, divido as regras para divs, textos, formulários, links, listas e classes genéricas. Em seguida as classes e elementos são organizados por ordem alfabética. Tudo deve ser comentado.</p>
<p>Tenha cuidado com o efeito cascata e a especificidade. Regra declarada por último ou mais específica tem predominância.</p>
<h2>Nomenclatura</h2>
<p>O nome das classes deve seguir uma nomenclatura padronizada que facilite a leitura. Lembre-se que você pode reutilizar partes de um código CSS em outros projetos ou precisar voltar para manutenção. </p>
<p>Ao invés de underline ( _ ) em nomes compostos, use traço ( &#8211; ). Escreva tudo em minúsculas e não comece o nome das classes com números.</p>
<p>Evite utilizar ids. Deixe-as para manipulação com javascript.</p>
<h2>Agrupar seletores</h2>
<p>Quando diversos elementos possuem o mesmo valor para uma propriedade, ao invés de escrevê-la diversas vezes, agrupe os seletores em torno dela.</p>
<p>Um uso comum é com divs. Diversas precisam ser posicionadas à esquerda do conteúdo. Então ao invés de escrever repetidamente “position:relative; float:left;” você agrupa os seletores:</p>
<p><pre><code><br />
.menu-div, .conteudo-esq {position:relative; float:left}<br />
</code></pre></p>
<h2>Combinar Propriedades</h2>
<p>Algumas propriedades podem ser agrupadas em uma única declaração. Um exemplo é a borda. É possível estilizar a grossura, o tipo e a cor. Uma declaração comum é:</p>
<p><pre><code><br />
.caixa{ <br />
border-width:3px; <br />
border-style:dotted;<br />
border-color:#000;}<br />
</code></pre></p>
<p>Mesmo que seja posto tudo em uma linha, ainda existem declarações desnecessárias. Acostume-se a escrever assim:</p>
<p><pre><code><br />
.caixa{border: 3px dotted #000;}<br />
</code></pre></p>
<p>A leitura das declarações será facilitada.</p>
<p>Dentre as propriedades que podemos utilizar as abreviações esta á font, margin e padding. Contudo, é necessário seguir regras nas declarações. Na margin e padding você precisa declarar os valores em sentido horário, topo, direita, base e esquerda. Se mesmo assim não lembrar da ordem tente “TRouBLEd”, em inglês Top, Right, Bottom, LEft.</p>
<h2>Classes Genéricas</h2>
<p>Muitas vezes você precisa definir apenas uma propriedade para o elemento. Digamos uma imagem que precisa ser flutuada à esquerda do texto. Ao invés de criar uma classe específica para aquela imagem, utilize um nome genérico e intuitivo que possa ser usado em outros elementos.</p>
<p>Ao invés de :</p>
<p><pre><code><br />
.imagemtexto{float:left;}<br />
</code></pre></p>
<p>Escreva:</p>
<p><pre><code><br />
.esquerda{float:left;} // ou .left<br />
</code></pre></p>
<p>Assim, se você precisar flutuar uma div à esquerda e que tenha borda, vai precisar apenas declarar a borda economizando código. </p>
<p><pre><code><br />
&lt;div class=”left borda1”&gt;&lt;/div&gt;<br />
</code></pre></p>
<p>Utilize com parcimônia, pois caso contrário ao invés de enxugar o código você terá uma extensa lista de simples declarações. Reserve apenas para declarações mais comuns. </p>
<h2>Menos Classes</h2>
<p>Antes de criar uma classe, analise outras possibilidades. Veja se é possível aproveitar um elemento HTML, a descendência, valor dos atributos ou se já não existe outra classe com a mesma declaração.</p>
<p><pre><code><br />
&lt;div class=”texto”&gt;<br />
<br />
&lt;p&gt;Lorem ipsum amet &lt;img src=”imagem.jpg” alt=”imagem”&gt;&lt;/p&gt;<br />
<br />
&lt;/div&gt;<br />
</code></pre></p>
<p>Para adicionar uma borda à imagem acima, ao invés de criar uma classe para ela, vamos aproveitar a descendência:</p>
<p><pre><code><br />
.texto img{border:1px solid #000;}<br />
/* ou */<br />
img[alt=imagem]{border: 1px solid #000;}<br />
</code></pre></p>
<p>O código HTML fica limpo, assim como o arquivo da folha de estilo.</p>
<p>Saber a diferença entre elementos nível de bloco e inline ajuda a evitar a criação de divs desnecessárias. O elemento ul utilizado na criação de listas desordenadas, comuns na estruturação dos menus é um elemento nível de bloco. Então não precisa criar uma div somente  para posicionar o menu. </p>
<h2>Mínimo De Hacks E Nada De Behavior E Filter</h2>
<p>A quase totalidade dos hacks necessários é para minimizar as diferenças em relação ao IE6-7. O velhinho ali já esta caindo fora, mas os hacks estarão por aí por um longo tempo ainda. Isso porque não existe cuidado na programação.</p>
<p>Entender como os navegadores interpretam as regras CSS ajuda a evitar inconsistência na apresentação do conteúdo entre eles. </p>
<p>O Internet Explorer disponibiliza a interpretação dos behaviors e filters inseridos nas folhas de estilo. São basicamente códigos javascript para gerar alguns efeitos. E por isso mesmo não deve estar em um arquivo CSS. Javascript é para arquivo javascript!</p>
<h2>Medidas</h2>
<p>Existe muito debate em torno de qual medida é a melhor para definir o tamanho dos textos. Enquanto o pixel depende da resolução do monitor, o em é relativo ao documento.</p>
<p>Para usar em você precisa entender a relação entre os elementos. Enquanto o pixel é bastante depende da resolução.</p>
<p>A dica é conhecer a audiência do website. Acessam através do computador ou celular? Preferem textos grandes ou um tamanho menor esta ok?</p>
<h2>Acessibilidade</h2>
<p>Existem tantos dispositivos e navegadores para acessar o conteúdo online que não há como garantir que todos conseguirão ver a mesma formatação da página. Mesmo assim devemos deixar o conteúdo apresentável em todas.</p>
<p>Com o CSS3 ainda sendo implementado é imprudência formatar um elemento utilizando somente as declarações desta versão. </p>
<p>Existe uma vertente de desenvolvedores que diz para você desenvolver testando antes nos navegadores atuais e depois nas versões anteriores. Fazendo o graceful degradation. Outra postula que é prioritário garantir o funcionamento nos navegadores antigos e só depois partir para recursos mais sofisticados visíveis apenas nos browsers atuais. São do progressive enhancement.</p>
<p>Tendo em vista que o usuário médio demora muito para atualizar o navegador e existe tanto IE6 por aí, é mais sensato pensar como os últimos. Em suma, o website não deve depender da versão do navegador para funcionar 100%. A funcionalidade vem antes da aparência. </p>
<p>Index Da <strong> > <a href="http://www.webmaster.pt/tutoriais-programacao-webdesign/aprende-css">Série Aprende CSS Com Maicon Sobczak</strong></a>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.webmaster.pt%2Fcss-melhores-praticas-949.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.webmaster.pt%2Fcss-melhores-praticas-949.html&amp;source=marketocracia&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.webmaster.pt/css-melhores-praticas-949.html">CSS &#8211; Melhores Práticas</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>
<p>Related posts:<ol>
<li><a href='http://www.webmaster.pt/melhores-praticas-formularios-1917.html' rel='bookmark' title='Melhores Práticas Na Criação De Formulários'>Melhores Práticas Na Criação De Formulários</a></li>
<li><a href='http://www.webmaster.pt/newsletters-27.html' rel='bookmark' title='Newsletters &#8211; Definição e Boas Práticas'>Newsletters &#8211; Definição e Boas Práticas</a></li>
<li><a href='http://www.webmaster.pt/menu-drop-down-css-838.html' rel='bookmark' title='Menu Drop Down Com CSS'>Menu Drop Down Com CSS</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.webmaster.pt/css-melhores-praticas-949.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Especial! CSS3 &#8211; Layout</title>
		<link>http://www.webmaster.pt/especial-css3-layout-1909.html</link>
		<comments>http://www.webmaster.pt/especial-css3-layout-1909.html#comments</comments>
		<pubDate>Mon, 29 Mar 2010 09:39:19 +0000</pubDate>
		<dc:creator>Maicon Sobczak</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://www.webmaster.pt/?p=1909</guid>
		<description><![CDATA[Conheça as novas propriedades do CSS3 referente à criação do Layout. Artigo especial da Série Aprende CSS Com Maicon Sobczak.<p><a href="http://www.webmaster.pt/especial-css3-layout-1909.html">Especial! CSS3 &#8211; Layout</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>

Related posts:<ol>
<li><a href='http://www.webmaster.pt/especial-layout-de-revista-com-html5-e-css3-6582.html' rel='bookmark' title='ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3'>ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3</a></li>
<li><a href='http://www.webmaster.pt/css3-selectores-940.html' rel='bookmark' title='Especial! CSS3 &#8211; Selectores'>Especial! CSS3 &#8211; Selectores</a></li>
<li><a href='http://www.webmaster.pt/css3-efeitos-textos-1907.html' rel='bookmark' title='Especial! CSS3 &#8211; Efeitos Em Textos'>Especial! CSS3 &#8211; Efeitos Em Textos</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Tutorial Anterior Da Série <a href="http://www.webmaster.pt/tutoriais-programacao-webdesign/aprende-css">Aprende CSS Com Maicon Sobczak</a> <strong>&gt; <a href="http://www.webmaster.pt/css3-efeitos-textos-1907.html">Especial! CSS3 &#8211; Efeitos Em Textos</a></strong></p>
<p>O design das páginas web 2.0 é marcado por gradientes sutis, sombras na medida e cantos arredondados. O problema é que para atingir esta aparência é necessário cortar imagens e adicionar marcação extra. Ou em alguns casos usar código javascript.</p>
<p>Com as novas especificações do CSS3, transpor o design do programa gráfico para a realidade dos browsers tornou-se um processo mais produtivo e rápido. </p>
<p>Neste último tutorial sobre as novas propriedades CSS3 veremos as que tratam sobre a criação do layout. São elas:</p>
<ul>
<li>box-sizing</li>
<li>background,  background-size e background-origin</li>
<li>border-radius</li>
<li>border-colors</li>
<li>border-image</li>
<li>box shadow</li>
<li>opacity</li>
<li>gradients</li>
<li>rgba</li>
<li>hsl</li>
<li>resize</li>
<li>transform e transition</li>
</ul>
<p>Muitas dessas propriedades já foram implementadas há tempos nos browser modernos, outras, no entanto, funcionam apenas em um ou dois. Só uma coisa é certa: no IE8 o suporte é praticamente nulo. </p>
<p>Neste tutorial não vou abordar nenhum filter ou mostrar as soluções javascript para que alguma das propriedades funcione no IE. O foco é somente CSS.</p>
<h2>box-sizing</h2>
<p>Em uma definição simples, o box model especifica quais propriedades da folha de estilo são somadas para definir o tamanho do elemento. Em uma div, por exemplo, por padrão a largura não é somente a que foi definida no width, mas também a soma da borda, e do espaçamento.</p>
<p><pre><code><br />
.caixa{<br />
-moz-box-sizing: padding-box; /* Firefox */<br />
-webkit-box-sizing: padding -box; /* Chrome */<br />
box-sizing: padding -box; /* IE8 e Opera */<br />
<br />
-moz-box-sizing: border-box; /* Firefox */<br />
-webkit-box-sizing: border-box; /* Chrome */<br />
box-sizing: border-box; /* IE8 e Opera */<br />
<br />
}<br />
</code></pre></p>
<p>Usando o box-sizing, ao invés do padding ser aplicado a partir do tamanho definido em width, e com isso alargar mais a div, ele é aplicado para dentro, deixando menos espaço para o conteúdo. A mesma coisa acontece com o border. Ao invés de somarem com a largura, elas subtraem.</p>
<p>Esta propriedade interfere diretamente no arranjo do layout, e como somente as últimas versões dos navegadores aceitam, vamos ter que esperar mais um tempo para começar a usar.</p>
<h2>background, background-size e background-origin</h2>
<p>Com o CSS3 podemos adicionar diversas imagens de fundo em um sistema de camadas. Cada imagem pode ser posicionada independentemente possibilitando resultados incríveis. E o melhor é que é utilizada a mesma propriedade background do CSS2.</p>
<p><pre><code><br />
.caixa{<br />
background:url(imagem01.jpg) no-repeat top left; <br />
background: url(imagem01.jpg) no-repeat top left, url(imagem02.jpg) no-repeat bottom right;<br />
}<br />
<br />
</code></pre></p>
<p>Primeiro é declarado o background normalmente para os browsers que não implementaram múltiplos backgrounds. Em segunda é declarada novamente a propriedade e são listadas as imagens utilizadas. Uma na parte superior esquerda e outra na inferior direita.</p>
<p>Adicionando a propriedade background-size é possível criar mosaicos e redimensionar a imagem de fundo conforte o tamanho do elemento. Aceita medidas em porcentagem, pixels e em.</p>
<p> <pre><code><br />
.caixa{<br />
background:url(imagem01.jpg) no-repeat top left; background: url(imagem01.jpg) no-repeat top left, url(imagem02.jpg) no-repeat bottom right; <br />
background-size:60% 50%;<br />
}<br />
</code></pre></p>
<p>Somente o Safari, Konqueror e Chrome implementaram esta função e parece que o Firefox 3.6 então nem adianta adicionar o prefixo do navegador.</p>
<p>Por padrão a imagem de fundo começa na extremidade do elemento, se ele tiver borda esta ficara sobre a imagem. Com o background-origin você escolhe se começa a partir da borda, do espaçamento ou do conteúdo.</p>
<p><pre><code><br />
.caixa{<br />
background-origin: border-box; /* A partir da borda */<br />
background-origin: content-box; /* A partir do início do conteúdo*/<br />
background-origin: padding-box; /* A partir do espaçamento */<br />
<br />
}<br />
</code></pre><br />
sistema gestão banners<br />
script banner<br />
gestoa banners</p>
<h2>border-radius</h2>
<p>Lembra do trabalho cansativo que era criar cantos arredondados? Pois os seus problemas acabaram! Basta adicionar border-radius na declaração e tudo esta resolvido.</p>
<p><pre><code><br />
.caixa{<br />
border-radius:10px; /* Chrome */<br />
-moz-border-radius: 10px;} /* Firefox */<br />
</code></pre></p>
<p>Se você quer apenas um dos cantos arredondados basta informar:</p>
<p><pre><code><br />
border-top-left-radius:10px; <br />
border-bottom-right-radius:10px; <br />
-moz-border-radius-topleft: 10px;<br />
-moz-border-radius-bottomright: 10px;<br />
</code></pre></p>
<p>Como você pode ver o Firefox interpreta bem ao seu jeito. E além dele somente o Chrome, que interpreta a especificação CSS3 possibilitam esta funcionalidade.</p>
<h2>border-image</h2>
<p>Chega de borda pontilhada ou sólida. Com o border-image você pode criar bordas com a aparência que quiser. Informe o endereço da imagem como ela deve ser cortada e o padrão de repetição. Para que ela funcione é necessário que a largura da borda seja definida com o border-width. </p>
<p><pre><code><br />
<br />
.caixa{<br />
border-width: 10px;<br />
border-image: url(“borda.png”) 20 10 20 10 round;<br />
-webkit-border-image: url(“borda.png”) 20 10 20 10 round;<br />
-moz-border-image: url(“borda.png”) 20 10 20 10 round;<br />
<br />
</code></pre></p>
<p>Esta propriedade basicamente corta a imagem em 9 partes e os quatro valores são para informar a porcentagem do corte. Conforme a largura da borda a imagem é ajustada.</p>
<p>Somente Chrome, Safari e Firefox implementaram.</p>
<h2>border-colors</h2>
<p>Com a melhora do border-color é possível definir tantas cores quanto a espessura da borda. Se a borda tem 5px, cada pixel pode ser de uma cor.</p>
<p><pre><code><br />
<br />
.caixa {border:10px solid #0C0; <br />
-moz-border-left-colors: #060 #333 #333 #333 #903 #CF9 #09F;}<br />
<br />
</code></pre></p>
<p>É feita a declaração normal da borda para os browsers que não implementaram esta funcionalidade e em seguida usamos a border-colors. O único navegador que interpreta esta proprieadade é o Firefox, por isso o prefixo –moz-. </p>
<p>É preciso definir as cores de cada um dos cantos, no exemplo foi apenas a esquerda (left), em seguida poderia ser posta a direita (right), base (bottom) e topo (top). Como a borda tem 10 pixels, mas apenas 7 cores foram definidas, a última se repete até fechar a conta.</p>
<h2>box-shadow</h2>
<p>Formando dupla com as bordas arredondas, o efeito de sombra em uma div é um dos efeitos mais comuns e interessantes. E também exigia bastante trabalho e marcação extra. Com o box-shadow tudo é feito em segundos.</p>
<p><pre><code><br />
<br />
.caixa{<br />
box-shadow:5px 5px 5px #333; <br />
-moz-box-shadow:5px 5px 5px #333; <br />
-webkit-box-shadow:5px 5px 5px #333;}<br />
<br />
</code></pre></p>
<p>Os quatro parâmetros são: deslocamento horizontal, vertical, desfoque e cor. Valores negativos para o deslocamento aplicam a sombra para a esquerda e para o topo. É possível aplicar mais de uma sombra para o mesmo elemento, basta separar as declarações com uma virgula.</p>
<p><pre><code><br />
<br />
.caixa{<br />
<br />
box-shadow:5px 5px 5px #333, -10px -5px 3px #0ff; <br />
-moz-box-shadow:5px 5px 5px #333, -10px -5px 3px #0ff;<br />
-webkit-box-shadow:5px 5px 5px #333, -10px -5px 3px #0ff ;}<br />
<br />
</code></pre></p>
<p>Pelos prefixos você já deve ter entendido em quais browsers esta propriedade funciona.</p>
<h2>opacity</h2>
<p>Uma das propriedades do CSS3 mais implementada entre o browsers é a opacidade. O IE suporta somente com filtro. </p>
<p><pre><code><br />
<br />
.caixa{opacity: 0.7;}<br />
<br />
</code></pre></p>
<p>Absurdamente fácil, não? Os browsers modernos nem precisam do prefixo para funcionar! Os valores vão do 0, que deixa transparente ao 1, opaco que é o valor padrão. No exemplo a opacidade é de 70%.</p>
<h2>gradient</h2>
<p>Quando esta propriedade estiver totalmente implementada, você não vai precisar fatiar as imagens para criar depois no navegador. As possibilidades de customização são muitas, assim como a aplicação. Cor de fundo, bordas e marcadores de lista são alguns.</p>
<p><pre><code><br />
<br />
.caixa{<br />
<br />
background: -webkit-gradient(linear, left bottom, right top, from(#f00), color-stop(0.5, #000));}<br />
<br />
background: -moz-linear-gradiente(45deg, red, black); /* FF 3.6*/<br />
<br />
</code></pre></p>
<p>Se você usar o Chrome ou Safari poderá ver o resultado do código acima. Foi definido um gradiente linear, que começa da base esquerda em direção ao topo direito, indo do vermelho para o preto com a transição acontecendo no ponto médio (0.5).</p>
<p>É possível somar as declarações criando gradientes realmente complexos e também radiais. O valor da cor pode ser escrito também com a propriedade rgba, assim como a transição pode ser em percentagem. Muito que experimentar.</p>
<p><pre><code><br />
<br />
.caixa{ background: -webkit-gradient(linear, left bottom, left top, from(#f00), to(rgba(288,199,0,0)), color-stop(0.3, #000), color-stop(70%, #0C3));}<br />
<br />
</code></pre></p>
<h2>rgba</h2>
<p>As cores apresentadas no monitor são formadas definindo valores diferentes para o vermelho, verde e azul. O 0 é ausência de cor e o 255 é a cor. Pelo sistema RGB o azul é</p>
<p>0 0 255</p>
<p>No rgba assim é que são formadas as cores. Decorar as cores no hexadecimal é muito mais fácil que isso, então qual a vantagem? A possibilidae de definir transparência, graças ao canal alfa que é a letra “a” no nome da propriedade. Um azul 30% de opacidade fica:</p>
<p><pre><code><br />
<br />
h1{color:rgba(0,0,255,0.3);}<br />
<br />
</code></pre></p>
<p>A propriedade também aceita valores em porcentagem. Não precisa do prefixo do navegador para funcionar.</p>
<h2>hsl e hsla</h2>
<p>Outra alternativa para criar cores é usando o hsl, que usa um sistema diferente. O primeiro parâmetro é a posição da cor no círculo cromático, o segundo a saturação que é a adição de cinza na cor e por último a luminosidade. Uma variante é a hsla que aceita transparência.</p>
<p><pre><code><br />
<br />
h1{color:hsl(180,50%,50%);}}<br />
h1{color:hsla(180,50%,50%, 0.8);}}<br />
<br />
</code></pre></p>
<p>Adivinha qual o único navegador que não interpreta.</p>
<h2>resize</h2>
<p>Uma propriedade especial para textareas. Permite ao usuário redimensionar a caixa à vontade. Para limitar a direção do redimensionamento os valores disponíveis são horizontal e vertical. Para liberdade total use both.</p>
<p><pre><code><br />
<br />
textarea{resize:both;}<br />
<br />
</code></pre></p>
<p>No momento apenas Chrome  e Safari implementaram. Mas devido a grande utilidade em pouco tempo os outros browsers tomarão uma atitude.</p>
<h2>transform e transition</h2>
<p>Criar animações usando CSS.. Só o que faltava. Agora não falta mais! Esta é a novidade mais insana e legal do CSS3. Animações simples que vão levar a interação do usuário com o website ao extremo.</p>
<p>Dentre as possibilidades está rotacionar, esticar, redimensionar e deslizar. Que podem ser somadas e não alteram o layout.</p>
<p><pre><code><br />
<br />
img{transition: all 1s ease-in-out; <br />
-webkit-transition: all 1s ease-in-out; <br />
-moz-transition: all 1s ease-in-out;}<br />
<br />
img:hover{transform: rotate(360deg) scale(3); <br />
-webkit-transform: rotate(360deg) scale(3); <br />
-moz-transform: rotate(360deg) scale(3);}<br />
<br />
</code></pre></p>
<p>Quando a seta do mouse parar  obre uma imagem ela ficará 3 vezes maiores depois de uma rotação de 360 graus. No Firefox a animação não é muito boa, então teste no Chrome ou Safári.</p>
<p><a href="http://www.dailymotion.com/video/x9w30t_webkit-css3-transforms-animations-a_tech">Veja neste vídeo o que esta por vir</a>.</p>
<h2>Conclusão</h2>
<p>Como explicado durante a apresentação das propriedades, a maioria ainda não está ganhando suporte. Não depender delas para que o site funcione é uma decisão inteligente.</p>
<p>Leia também o nosso artigo <a href="http://www.webmaster.pt/css-criacao-layout-912.html ">CSS – Criação de Layout</a></p>
<p><a href="http://www.webmaster.pt/css-criacao-layout-912.html "><img src="http://www.webmaster.pt/wp-content/uploads/2010/03/layout.jpg" alt="CSS Layout" title="CSS Layout" width="600" height="498" class="aligncenter size-full wp-image-3635" /></a></p>
<p>Tutorial Seguinte Da Série <a href="http://www.webmaster.pt/tutoriais-programacao-webdesign/aprende-css">Aprende CSS Com Maicon Sobczak</a><strong> &gt; <a href="http://www.webmaster.pt/css-melhores-praticas-949.html">CSS &#8211; Melhores Práticas</a></strong>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.webmaster.pt%2Fespecial-css3-layout-1909.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.webmaster.pt%2Fespecial-css3-layout-1909.html&amp;source=marketocracia&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.webmaster.pt/especial-css3-layout-1909.html">Especial! CSS3 &#8211; Layout</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>
<p>Related posts:<ol>
<li><a href='http://www.webmaster.pt/especial-layout-de-revista-com-html5-e-css3-6582.html' rel='bookmark' title='ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3'>ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3</a></li>
<li><a href='http://www.webmaster.pt/css3-selectores-940.html' rel='bookmark' title='Especial! CSS3 &#8211; Selectores'>Especial! CSS3 &#8211; Selectores</a></li>
<li><a href='http://www.webmaster.pt/css3-efeitos-textos-1907.html' rel='bookmark' title='Especial! CSS3 &#8211; Efeitos Em Textos'>Especial! CSS3 &#8211; Efeitos Em Textos</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.webmaster.pt/especial-css3-layout-1909.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Especial! CSS3 &#8211; Efeitos Em Textos</title>
		<link>http://www.webmaster.pt/css3-efeitos-textos-1907.html</link>
		<comments>http://www.webmaster.pt/css3-efeitos-textos-1907.html#comments</comments>
		<pubDate>Wed, 24 Mar 2010 12:06:56 +0000</pubDate>
		<dc:creator>Maicon Sobczak</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://www.webmaster.pt/?p=1907</guid>
		<description><![CDATA[O Maicon Sobczak explica as alterações no CSS nos efeitos em textos: @font-face, word-wrap, column, text-shadow<p><a href="http://www.webmaster.pt/css3-efeitos-textos-1907.html">Especial! CSS3 &#8211; Efeitos Em Textos</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>

Related posts:<ol>
<li><a href='http://www.webmaster.pt/especial-layout-de-revista-com-html5-e-css3-6582.html' rel='bookmark' title='ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3'>ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3</a></li>
<li><a href='http://www.webmaster.pt/especial-css3-layout-1909.html' rel='bookmark' title='Especial! CSS3 &#8211; Layout'>Especial! CSS3 &#8211; Layout</a></li>
<li><a href='http://www.webmaster.pt/css3-selectores-940.html' rel='bookmark' title='Especial! CSS3 &#8211; Selectores'>Especial! CSS3 &#8211; Selectores</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Tutorial Anterior Da Série <a href="http://www.webmaster.pt/tutoriais-programacao-webdesign/aprende-css">Aprende CSS Com Maicon Sobczak</a> <strong>&gt; <a href="http://www.webmaster.pt/css3-selectores-940.html">Especial! CSS3 &#8211; Selectores</a></strong></p>
<p>O excitamento dos desenvolvedores com o CSS3 é quase infantil (no bom sentido). É um novo brinquedo que facilita a criação dos layouts e permite aplicar efeitos que outrora exigiam o fatiamento de diversas imagens somadas a dezenas de linhas de código.</p>
<p>Isso significa menos arquivos e requisições http resultando em páginas que carregam mais rápido. É possível até criar pequenas animações. E tudo com muito pouco código!</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/03/textos-e1269432383944.jpg" alt="CSS3 - Efeitos Em Textos" title="CSS3 - Efeitos Em Textos" width="600" height="403" class="aligncenter size-full wp-image-3569" /></p>
<p>Saindo do mundo das maravilhas e entrando no mundo real, é importante saber que o suporte ao CSS3 ainda é precário. Os navegadores vem implementando essa geração do CSS já algum tempo, mas ao seu modo. Eles precisam que você adicione um prefixo na frente da propriedade para que possam interpretá-la. </p>
<p>Você verá nos exemplos o prefixo –webkit- para que funcione no Safari e Chrome, o –moz- para o Firefox, -khtml- para Konqueror, -o- para Opera e –ms- para Internet Explorer.</p>
<p>Este último será raro já que o Internet Explorer 8 não oferece suporte praticamente a nenhuma das novidades do CSS3. E já adianto que não serão mostrados os famosos filtros para o IE. Estamos falando aqui de propriedades CSS e não códigos para rodar nas folhas de estilo.</p>
<p>Este tutorial faz parte da Série Especial sobre CSS3 e vai abordar os efeitos em textos. São eles:</p>
<ul>
<li>@font-face</li>
<li>word-wrap</li>
<li>column</li>
<li>text-shadow</li>
</ul>
<p>A princípio o Firefox 3.5+, Opera 10+ e Safari 3.1+ interpretam as propriedades apresentadas. </p>
<h2>@font-face</h2>
<p>Todo web designer em algum site já quis utilizar outras fontes que não Arial, Verdana, Courier ou Times New Roman. Para isso as soluções mais comuns ainda são em javascript com Cufón ou flash no sIFR. </p>
<p>A @font-face permite incorporar fontes com regras na folha de estilo sem que elas estejam instaladas no computador do usuário. Isso não chega a ser uma novidade para os veteranos, já que o @font-face já existia na versão CSS2. E o único que implantou foi o Internet Explorer (!) para fontes Open Type somente.</p>
<p>No CSS3 esta propriedade vem com mais força graças aos esforços para criar licenças de utilização que beneficiem não somente os desenvolvedores, mas também as empresas que criam as fontes.</p>
<p>Os formatos de fonte aceitos são TrueType(.ttf) e Opentype(.otf). Para utilizar a fonte, primeiro precisamos apontar o caminho do arquivo da fonte, escolher o nome que usaremos para referenciá-la e em seguida usar normalmente.</p>
<p><pre><code><br />
@font-face(font-family:’aller’ src: url(‘aller.ttf’);}<br />
p(font-family:’aller’);<br />
</code></pre></p>
<p>Você olha essas duas linhas e lembra o quanto já sofreu para poder usar uma fonte não padrão e fica com a certeza de que um mundo melhor é possível. O mais incrível é que até o IE8 aceita na boa! E renderiza a fonte melhor que todos os outros navegadores!</p>
<p>É facultativa a utilização do format na declaração para informar o tipo da fonte, se é ‘truetype’ ou ‘opentype’. Uma boa prática é utilizar o local na declaração para que  antes de baixar a fonte do servidor, o navegador verifique se ela já não existe no computador do usuário.</p>
<p><pre><code><br />
@font-face{font-family:’aller’ src: local(‘Aller’), url(‘aller.ttf’) format(‘truetype’);}<br />
</code></pre></p>
<p>Da forma como foi declarada, a fonte só pode ser usada regularmente. Para aplicar negrito e itálico é preciso incluir o arquivo da fonte bold.</p>
<p><pre><code><br />
@font-face{font-family:’aller’ src: local(‘Aller’), url(‘aller.ttf’) format(‘truetype’);}<br />
@font-face{font-family: ‘aller’; font-weight:bold; src: url(‘aller-bold.ttf’);}<br />
</code></pre></p>
<p>Dependendo do tamanho dos arquivos, e observando somente isso, pode ser menos vantajoso usar esta propriedade do que as soluções já existentes em javascript e flash.</p>
<p>Um cuidado importante ao usar uma fonte incorporada pelo @font-face é listar outras alternativas caso haja algum problema no download da fonte.</p>
<p><pre><code><br />
@font-face(font-family:’aller’ src: url(‘aller.ttf’);}<br />
p{font-family:&#039;aller&#039;, Arial, sans-serif;}<br />
</code></pre></p>
<h2>word-wrap</h2>
<p>Ao colocar o endereço inteiro de um link no texto, por não admitir espaços, às vezes ocorre de a palavra ultrapassar os limites do contêiner. Com esta propriedade, se a palavra chegar ao limite da largura da div, por exemplo, e ainda tiver mais algumas letras, a palavra é quebrada e a parte que ficaria fora é posta na linha de baixo.</p>
<p><pre><code><br />
a{word-wrap:break-word;}<br />
</code></pre></p>
<p>Com a linha acima, todos os endereços de link que forem mais largos que o espaço disponível serão separados e  continuarão na linha de baixo.</p>
<p>Os únicos navegadores que interpretam corretamente esta propriedade são o Firefox 5+, Safari e Chrome.</p>
<h2>column</h2>
<p>Disponibilizar o texto em colunas sempre exigiu muito trabalho com divs. No CSS3 temos à disposição uma propriedade especial para organizar o texto em colunas. O, porém é que os navegadores implementaram ao seu modo. Então para funcionar em alguns, é preciso adicionar o prefixo do navegador.</p>
<p>Antes de criar o código vejamos as opções:</p>
<ul>
<li>column-count – Número de colunas criadas ;</li>
<li>column-gap- Distancia entre as colunas;</li>
<li>column-rule – Separador entre as colunas:
<ol>
<li>column-width – Largura do separador;</li>
<li>column-style &#8211;  Estilo do separador;</li>
<li>column-color – Cor do separador.</li>
</ol>
</li>
<li>column-width – Determina a largura das colunas;</li>
</ul>
<p>Outras propriedades para trabalhar com colunas, mas que não foram implantadas por nenhum navegador podem ser conferidas na<a href="http://www.w3.org/TR/css3-multicol/"> documentação do W3C</a>.</p>
<p>Para criar 3 colunas com o conteúdo da div “.coluna” com espaçamento de 20 pixels e uma linha entre elas escrevemos:</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/03/code.gif" alt="Código CSS" title="Código CSS" width="600" height="100" class="alignnone size-full wp-image-3567" /></p>
<p>O prefixo –moz- para funcionar no Firefox e o –webkit- para funcionar no Chrome e Safari. |Nos navegadores que não entendem a regra  o texto será mostrado normalmente.</p>
<p>Não definindo o column-count, o Firefox faz os cálculos e divide em quantas colunas puder para que o conteúdo fique ajustado e alinhado na base. Já no Chrome as colunas não são criadas.</p>
<p>O column-width foi implementado por Safari e Chrome.</p>
<h2>text-shadow</h2>
<p>O text-shadow aliado ao @font-face vão elevar o design web baseado na tipografia ao nível mais elevado. O text-shadow permite aplicar sombras, não apenas a clássica borrada, mas somar diversas e criar efeitos fantásticos.</p>
<p>Os quatro argumentos para esta propriedade na ordem são: o deslocamento horizontal, o vertical, o nível do desfoque e a cor da sombra. Os dois primeiros valores quando positivos, deslocam para a direita e para baixo, quando negativos, para a esquerda e acima.</p>
<p><pre><code><br />
h1{text-shadow:2px 2px 4px #0ff;}<br />
</code></pre></p>
<p>No código acima definimos que a sombra se desloca dois pixels para a direita e para baixo, com desfoque de quarto pixels e da cor azul.</p>
<p>Diversas sombras podem ser aplicadas a um mesmo texto, basta separar os valores por vírgula.</p>
<p><pre><code><br />
h1{text-shadow:2px 2px 4px #0ff, -2px -2px 4px #0f0;}<br />
</code></pre></p>
<p>Adicionando cores claras e desfoque maior é possível também criar efeitos luminosos. É possível definir a cor utilizando a propriedade rgba, de possibilita definir além da cor a opacidade.</p>
<p>O de personalização e combinações é tão grande que todo dia aparece alguém apresentando um <a href="http://www.zachstronaut.com/posts/2009/06/22/css-text-shadow-lighting-demo.html">efeito fora de série utilizando esta propriedade</a>.</p>
<h2>Conclusão</h2>
<p>Em tratando-se de texto e como o navegador mais popular do mercado não dá suporte a maioria das novas propriedades, é preciso ter cuidado e não depender do suporte a elas para que eles fiquem legíveis.</p>
<p>Tutorial Seguinte Da Série <a href="http://www.webmaster.pt/tutoriais-programacao-webdesign/aprende-css">Aprende CSS Com Maicon Sobczak</a><strong> &gt;<a href="http://www.webmaster.pt/css3-layout-1909.html"> Especial! CSS3 &#8211; Layout</a></strong>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.webmaster.pt%2Fcss3-efeitos-textos-1907.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.webmaster.pt%2Fcss3-efeitos-textos-1907.html&amp;source=marketocracia&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.webmaster.pt/css3-efeitos-textos-1907.html">Especial! CSS3 &#8211; Efeitos Em Textos</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>
<p>Related posts:<ol>
<li><a href='http://www.webmaster.pt/especial-layout-de-revista-com-html5-e-css3-6582.html' rel='bookmark' title='ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3'>ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3</a></li>
<li><a href='http://www.webmaster.pt/especial-css3-layout-1909.html' rel='bookmark' title='Especial! CSS3 &#8211; Layout'>Especial! CSS3 &#8211; Layout</a></li>
<li><a href='http://www.webmaster.pt/css3-selectores-940.html' rel='bookmark' title='Especial! CSS3 &#8211; Selectores'>Especial! CSS3 &#8211; Selectores</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.webmaster.pt/css3-efeitos-textos-1907.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Especial! CSS3 &#8211; Selectores</title>
		<link>http://www.webmaster.pt/css3-selectores-940.html</link>
		<comments>http://www.webmaster.pt/css3-selectores-940.html#comments</comments>
		<pubDate>Mon, 22 Mar 2010 01:50:24 +0000</pubDate>
		<dc:creator>Maicon Sobczak</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.webmaster.pt/?p=940</guid>
		<description><![CDATA[O Maicon Sobczak  apresenta os Selectores que foram introduzidos no CSS3. Pseudo-classes. Pseudo Elementos.<p><a href="http://www.webmaster.pt/css3-selectores-940.html">Especial! CSS3 &#8211; Selectores</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>

Related posts:<ol>
<li><a href='http://www.webmaster.pt/especial-css3-layout-1909.html' rel='bookmark' title='Especial! CSS3 &#8211; Layout'>Especial! CSS3 &#8211; Layout</a></li>
<li><a href='http://www.webmaster.pt/especial-layout-de-revista-com-html5-e-css3-6582.html' rel='bookmark' title='ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3'>ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3</a></li>
<li><a href='http://www.webmaster.pt/css3-efeitos-textos-1907.html' rel='bookmark' title='Especial! CSS3 &#8211; Efeitos Em Textos'>Especial! CSS3 &#8211; Efeitos Em Textos</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Tutorial Anterior Da Série <a href="http://www.webmaster.pt/tutoriais-programacao-webdesign/aprende-css">Aprende CSS Com Maicon Sobczak</a> <strong>&gt; <a href="http://www.webmaster.pt/css-impressao-917.html">CSS &#8211; Diferença Entre Browsers</a></strong></p>
<p>Entraram nas especificaçõe do CSS3 importantes seletores. Alguns já eram usados, mas sem uma padronização.</p>
<p>Agora o controle sobre a estilização fica mais refinado e enxuto. É possível até criar pequenas formulas para selecionar elementos muito específicos.</p>
<p>Veremos neste tutorial como selecionar elementos baseados em atributos, localização na árvore da página, que com certeza é o que mais oferece opções, estilização de formulário, um grande avanço entre outros.</p>
<p>Mas o navegador da Microsoft oferece suporte apenas para seletores de atributo. Quanto aos outros navegadores modernos, todos oferecem suporte total em suas últimas versões.</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/03/browsers.jpg" alt="Navegadores" title="Navegadores" width="500" height="500" class="aligncenter size-full wp-image-3462" /></p>
<h2>Seletores</h2>
<p>Os seletores servem para que você possa alterar a aparência dos elementos referenciando a representação da realidade HTML dele, como h1, ou através dos atributos e valores destes.</p>
<p>Nem todos são novidade, mas agora finalmente fazem parte das especificações do CSS3.</p>
<p><strong>Por atributo</strong></p>
<p>Estes selecionam baseados no valor do atributo:</p>
<p>[att^=”valor”] &#8211; O valor do atributo inicia com “valor”.</p>
<p><pre><code><br />
a[title^=”noticia”] <br />
</code></pre></p>
<p>[att$=”valor”] – O valor atribuído termina com “valor”. Pode ser apenas um fragmento da palavra.</p>
<p><pre><code><br />
a[title$=”cia”]<br />
</code></pre></p>
<p>[att*=”valor”] – O valor atribuído contém o fragmento.</p>
<p><pre><code><br />
a[title$=” ici”]<br />
</code></pre></p>
<p>O valor do atributo diferencia maiúsculas e minúsculas. Inclusive o IE7 e 8 aceitam esta forma de seleção.</p>
<p><strong>Seletores combinados</strong></p>
<p>Para aplicar borda em todas as imagens que dividam o mesmo elemento pai que uma div com a classe .fotos agora basta usar:</p>
<p><pre><code><br />
.fotos~img{border:1px solid #00ff00;}<br />
</code></pre></p>
<p>Para os desatentos, o truque é o til (~). Ele conecta os irmãos.</p>
<h2>Pseudo-classes</h2>
<p>Selecionar elementos baseado na localização ou estado destes tornou-se mais fácil com novas pseudo classes.</p>
<p><strong>nth-child</strong></p>
<p>Algumas são complexas, como a nth-child, que permite estilizar um elemento em determinada posição, podendo-se usar para encontrar a localização, até uma fórmula. Um exemplo? Claro, vários.</p>
<p><pre><code><br />
ul li:nth-child(2){color:#00ff00;} /* Seleciona o segundo item da lista */<br />
ul li:nth-child(-n+3){color:#00ff00;} /* Seleciona os três primeiros itens */<br />
ul li:nth-child(4n+1){color:#00ff00;}/* A cada três itens o quarto tem a cor do texto verde */<br />
</code></pre></p>
<p>Para criar tabelas listradas, adicione even e odd entre os parênteses. </p>
<p><pre><code><br />
tr:nth-child(odd){background-color:#00ff00;}<br />
tr:nth-child(even){background-color:#ff0000;}<br />
</code></pre></p>
<p><strong>nth-last-child</strong></p>
<p>Com o nth-last-child a contagem começa de trás para frente. Para estilizar os três últimos parágrafos existentes na div, o código fica:</p>
<p><pre><code><br />
div p:nth-last-child(-n+3){background:#060;}<br />
div p:nth-last-child(3){background:#060;} /* Somente o terceiro de baixo para cima */<br />
</code></pre></p>
<p><strong>nth-of-type</strong></p>
<p>O nth-of-type encontra elementos do mesmo tipo descendentes do mesmo pai. Como diversos parágrafos dentro de uma div.</p>
<p><pre><code><br />
.textos&gt;p:nth-of-type(3n+1){background:#96C;}<br />
</code></pre></p>
<p>A cada dois parágrafos, o terceiro tem o fundo lilás. Enquanto o nth-child faz uma contagem corrida dos elementos, este procura por específicos. Somente do tipo (of-type). Se entre os parágrafos houver tabelas, ela não entra na contagem, somente parágrafos.</p>
<p><strong>first-of-type e last-of-type</strong></p>
<p>Com o first-of-type é estilizado apenas o primeiro elemento filho do tipo. O last-of-type seleciona o último do tipo. Para que a primeira imagem da div tenha borda vermelha e a última borda preta escrevemos:</p>
<p><pre><code><br />
div img:first-of-type{border:10px solid #F00;}<br />
div img:last-of-type{border:10px solid #000;}<br />
</code></pre></p>
<p>O nth-last-of-type faz o mesmo trabalho que o nth-last-child, mas antes procura elementos específicos. As últimas três do texto com borda vermelha:</p>
<p><pre><code><br />
div img:nth-last-of-type(-n+3){border:10px solid #F00;}<br />
</code></pre></p>
<p><strong>only-of-type</strong></p>
<p>A pseudo-classe only-of-type seleciona o elemento que é o único filho do tipo. Se você tem um layout que apresenta no conteúdo número variável de imagens e deseja estilizar de maneira diferente quando houver apenas uma imagem pode fazer assim:</p>
<p><pre><code><br />
.texto img:only-of-type{border:2px solid #F00;}<br />
</code></pre></p>
<p>Se houver mais de uma imagem na div “texto” não será aplicada a borda vermelha.</p>
<p>Para não restar dúvidas: o nth-child, nth-last-child aplicam o estilo baseados na posição não importando quais elementos estão incluídos na contagem. Já os seletores que tem o of-type, contam apenas os elementos do tipo especificado.</p>
<p><strong>last-child</strong></p>
<p>O last-child seleciona o último elemento. Uma alternativa a ele é usar o :nth-last-child(1).</p>
<p>Para estilizar elementos do formulário como checkboxes ao serem selecionadas chegou a :checked. Ela altera a aparência do quadrado ou círculo. Um fundo azul quando for selecionado: </p>
<p><pre><code><br />
input[name=elemento]:checked{background:#00F;}<br />
</code></pre></p>
<p><strong>empty</strong></p>
<p>O :empty estiliza um elemento que não tenha filhos ou esteja vazio. Infelizmente não pode ser usado em elementos que recebem conteúdo dinamicamente porque, no Firefox a estilização será como se o elemento ainda estivesse vazio.</p>
<p><strong>enabled, disabled e not</strong></p>
<p>Elementos habilitados são os que podem ser selecionados, receber textos, caso dos campos de um formulário, receber o foco ou ser clicado. O :enable estiliza o elemento que pode receber as ações listadas acima. Útil principalmente em formulários.</p>
<p><pre><code><br />
input:enabled{border:1px solid #F00;}<br />
</code></pre></p>
<p>Todos os inputs do formulário terão borda vermelha e no Opera 10 até o checkbox entra na dança. O :enable também seleciona os submits. O que não é bom se você deseja criar um botão com aparência diferente dos outros itens do formulário. Mas não precisa criar uma classe ou outra declaração para o submit, basta usar a pseudo-classe :not.</p>
<p><pre><code><br />
input:enabled:not([type=&quot;submit&quot;]){border:1px solid #F00;}<br />
</code></pre></p>
<p>Todos os inputs terão borda vermelha menos o do tipo submit. Uma expressão refinada e de incrível utilidade! O :not aceita outros seletores como tabelas, parágrafos e até mesmo classes. </p>
<p>Para que o :not funcione corretamente cuide para utilizar colchetes quando o seletor tiver aspas no caso de type=”submit”. Se for classe ou elemento, bastam os parênteses.</p>
<p>Para selecionar os campos do formulário que estão desabilitados use :disabled.</p>
<p><strong>target</strong></p>
<p>Para navegar dentro de uma mesma página criamos as ancoras e atribuímos nome a elas. Desta forma para um link levar à determinada seção da página incluímos a tralha (#) e o nome da seção.</p>
<p>O :target permite estilizar a seção da página para a qual o link clicado leva. </p>
<p><pre><code><br />
&lt;style type=”css”&gt;<br />
<br />
:target{background:#0FF;}<br />
<br />
&lt;/style&gt;<br />
<br />
&lt;div id=”destino”&gt;Texto&lt;/div&gt;<br />
&lt;div id=”outra”&gt;Outra div&lt;/div&gt;<br />
<br />
&lt;a href=”#destino”&gt;Link para div&lt;/a&gt;<br />
&lt;a href=”#outra”&gt;Link para outra&lt;/a&gt;<br />
</code></pre></p>
<p>Ao clicar no link que leva à div “destino”, esta ficará com a cor do fundo azul. Se o link de baixo for clicado, a div “outra” é que ficará com o fundo azul.</p>
<h2>Pseudo Elementos</h2>
<p>Ao selecionar um texto clicando e arrastando a seta do mouse o fundo fica azul ou no caso do IE8 preto. O único pseudo elemento oferecido pelo CSS3 permite alterar o fundo e a cor dos textos selecionados. O que possibilita maior controle e unidade do design.</p>
<p>O responsável por isso é o ::selection. Para que funcione no Firefox, é necessário adicionar o prefixo –moz-:</p>
<p><pre><code><br />
p::selection {background:#F93; color: #FFF;}<br />
p::-moz-selection {background:#F93; color: #FFF;}<br />
</code></pre></p>
<p>Os textos de parágrafo selecionados terão fundo alaranjado e texto branco. Se você quer que inclusive links e cabeçalhos sejam estilizados, adicione o asterisco na frente.</p>
<p><pre><code><br />
h1, a, p::selection {background:#F93; color: #FFF;}<br />
*::-moz-selection {background:#F93; color: #FFF;}<br />
</code></pre></p>
<p>Os elementos do formulário não são afetados por este pseudo elemento.</p>
<h2>Conclusão</h2>
<p>Como dito no início do tutorial, somente os navegadores mais avançados oferecem suporte ao CSS3, exceto IE8. Então é importante não depender disso para que a página funciona, já que é uma parcela pequena dos usuários que mantém os navegadores atualizados.</p>
<p>Em contra partida, quem tem navegador atualizado pode ser presenteado com um design único. Até porque você já pode usar todos os seletores pensando no suporte futuro.</p>
<p>Tutorial Seguinte Da Série <a href="http://www.webmaster.pt/tutoriais-programacao-webdesign/aprende-css">Aprende CSS Com Maicon Sobczak</a><strong> &gt; <a href="http://www.webmaster.pt/css3-efeitos-textos-1907.html">Especial! CSS3 &#8211; Efeitos Em Textos</a></strong>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.webmaster.pt%2Fcss3-selectores-940.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.webmaster.pt%2Fcss3-selectores-940.html&amp;source=marketocracia&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.webmaster.pt/css3-selectores-940.html">Especial! CSS3 &#8211; Selectores</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>
<p>Related posts:<ol>
<li><a href='http://www.webmaster.pt/especial-css3-layout-1909.html' rel='bookmark' title='Especial! CSS3 &#8211; Layout'>Especial! CSS3 &#8211; Layout</a></li>
<li><a href='http://www.webmaster.pt/especial-layout-de-revista-com-html5-e-css3-6582.html' rel='bookmark' title='ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3'>ESPECIAL! &#8211; Layout De Revista Com HTML5 E CSS3</a></li>
<li><a href='http://www.webmaster.pt/css3-efeitos-textos-1907.html' rel='bookmark' title='Especial! CSS3 &#8211; Efeitos Em Textos'>Especial! CSS3 &#8211; Efeitos Em Textos</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.webmaster.pt/css3-selectores-940.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS &#8211; Diferença Entre Browsers</title>
		<link>http://www.webmaster.pt/css-diferenca-entre-browsers-932.html</link>
		<comments>http://www.webmaster.pt/css-diferenca-entre-browsers-932.html#comments</comments>
		<pubDate>Tue, 16 Mar 2010 21:08:39 +0000</pubDate>
		<dc:creator>Maicon Sobczak</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.webmaster.pt/?p=932</guid>
		<description><![CDATA[Soluções CSS Para IE6. Resetar O CSS. Dominando O Box Model. Posicionamento Dos Elementos. Altura E Largura Mínima E Máxima. Altura 100%. Menu Horizontal E Vertical. Hacks. Comentários Condicionais. Soluções Javascript.<p><a href="http://www.webmaster.pt/css-diferenca-entre-browsers-932.html">CSS &#8211; Diferença Entre Browsers</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>

Related posts:<ol>
<li><a href='http://www.webmaster.pt/a-guerra-dos-browsers-35.html' rel='bookmark' title='A Guerra Dos Browsers'>A Guerra Dos Browsers</a></li>
<li><a href='http://www.webmaster.pt/diferencas-php4-php5-10786.html' rel='bookmark' title='Algumas Diferenças Entre O PHP 4.x E O PHP 5.x'>Algumas Diferenças Entre O PHP 4.x E O PHP 5.x</a></li>
<li><a href='http://www.webmaster.pt/descubra-as-diferencas-entre-wordpress-com-e-wordpress-org-6216.html' rel='bookmark' title='Descubra As Diferenças Entre WordPress.COM E WordPress.ORG'>Descubra As Diferenças Entre WordPress.COM E WordPress.ORG</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Tutorial Anterior Da Série <a href="http://www.webmaster.pt/tutoriais-programacao-webdesign/aprende-css">Aprende CSS Com Maicon Sobczak</a> <strong>&gt; <a href="http://www.webmaster.pt/css-impressao-917.html">CSS &#8211; Impressão</a></strong></p>
<h2>Soluções CSS Para Problemas Com IE6</h2>
<p>Escrever folhas de estilo compatíveis com todos os navegadores do mercado, muitas vezes torna-se um pesadelo. São mais de dez tipos de navegadores e cada um conta com outras tantas versões. E muitos decidiram reservar-se o direito de interpretar as regras de estilo de uma maneira bem particular.  E para nós restou descobrir formas de contornar estas diferenças.</p>
<p>Um conhecido causador de problemas é o Internet Explorer, principalmente na versão 6. Ele foi lançando em 2001, uma época pré-histórica em termos de padrões web, usabilidade e afins. Mas para aquele momento ele servida muito bem.</p>
<p>O tempo passou, a internet evolui e foram lançadas outras versões do Internet Explorer para seguir os padrões (tardiamente, mas foram). Só que aquela versão 6 estava tão enraizada, que ainda corresponde, em alguns casos, por pelo menos um terço do mercado de navegadores.</p>
<p>Campanhas são feitas com o intuito de extinguí-lo e alguns desenvolvedores já alardeiam que não irão mais dar suporte ao IE6 em seus códigos.</p>
<p>Eu já investi horas estressantes tentando fazer com que o layout das páginas fosse apresentado igualmente independente do navegador. Já decidi não dar suporte ao IE6. Depois tive que voltar atrás porque o número de usuários com esta versão ainda era muito grande.</p>
<p>E finalmente compreendi que grande parte dos problemas que encontramos são criados por códigos mal estruturados.</p>
<p>Atualmente existem soluções javascript para emular o comportamento dos navegadores modernos nos antigos, e foram desenvolvidas técnicas no próprio CSS para minimizar as diferenças entre eles.</p>
<p>Antes de apresentá-las vou deixar algumas dicas que vão ajudar a diminuir a necessidade de utilização dos hacks:</p>
<p>Estruture a página com <a href="http://validator.w3.org/">código válido pelo W3C</a>. Isso inclui definir o doctype da página corretamente para evitar que o navegador entre em <em>quirks mode</em> e use uma maneira própria para interpretar as propriedades da folha de estilo.</p>
<p>Entenda a relação de herança que existe entre os elementos da página. Isso possibilita que o desenvolvimento siga uma lógica e facilita na hora de encontrar os erros.</p>
<p>Vamos ver então algumas soluções CSS para alguns dos problemas mais comuns encontrados no dia-a-dia dos webdesigners.</p>
<h2>Resetar O CSS</h2>
<p>Os valores padrão para os elementos HTML diferem entre navegadores. Para compensar essas divergências, inserimos algumas linhas no início do arquivo de folha de estilo definindo os valores que serão utilizados por todos os navegadores, sobrescrevendo os nativos.</p>
<p>Um dos mais abrangentes é este:</p>
<p><pre><code><br />
html, body, div, span, applet, object, iframe,<br />
h1, h2, h3, h4, h5, h6, p, blockquote, pre,<br />
a, abbr, acronym, address, big, cite, code,<br />
del, dfn, em, font, img, ins, kbd, q, s, samp,<br />
small, strike, strong, sub, sup, tt, var,<br />
dl, dt, dd, ol, ul, li,<br />
fieldset, form, label, legend,<br />
table, caption, tbody, tfoot, thead, tr, th, td {<br />
margin: 0;<br />
padding: 0;<br />
border: 0;<br />
outline: 0;<br />
font-weight: inherit;<br />
font-style: inherit;<br />
font-size: 100%;<br />
font-family: inherit;<br />
vertical-align: baseline;<br />
}<br />
:focus {<br />
outline: 0;<br />
}<br />
body {<br />
line-height: 1;<br />
color: black;<br />
background: white;<br />
}<br />
ol, ul {<br />
list-style: none;<br />
}<br />
<br />
table {<br />
border-collapse: separate;<br />
border-spacing: 0;<br />
}<br />
caption, th, td {<br />
text-align: left;<br />
font-weight: normal;<br />
}<br />
blockquote:before, blockquote:after,<br />
q:before, q:after {<br />
content: &quot;&quot;;<br />
}<br />
blockquote, q {<br />
quotes: &quot;&quot; &quot;&quot;;<br />
}<br />
</code></pre></p>
<p>Você pode torná-lo ainda maior ou enxugar para ajustar-se às suas necessidades.</p>
<h2>Dominando O Box Model</h2>
<p>O tamanho de um elemento não é somente o que foi definido com as propriedades <em>width</em> ou <em>height</em> do CSS. Estas propriedades definem apenas o espaço que pode receber conteúdo. Se você aplicar margem (margin), espaçamento (padding) ou borda (border) ao elemento, tudo isso entra na conta final para definir a largura ou altura do elemento.</p>
<p><pre><code><br />
.elemento {width: 300px; height:100px; padding-left: 20px; border:3px solid #000;}<br />
</code></pre></p>
<p>No navegador, esta div terá a largura total de 326px (300 + 20 + 6). Por isso que duas divs de 500px e borda de 1px não ficam lado a lado em um espaço de 1000px, mesmo flutuando(float) as duas à esquerda.</p>
<p>E o <strong>box model</strong> nisso? O nome, que significa “modelo de caixa” é porque a borda se encaixa na largura e altura e são encaixadas na margem. Um retângulo/quadrado dentro do outro. Somando tudo temos o tamanho do elemento.</p>
<p><img class="aligncenter size-full wp-image-933" src="http://www.webmaster.pt/wp-content/uploads/2010/02/box-model.jpg" alt="Box Model" width="400" height="400" /></p>
<p>Todos os layouts são baseados neste modelo. Entendendo isso você evita muito soco no monitor.</p>
<h2>Posicionamento Dos Elementos</h2>
<p>Seguindo o que vimos sobre o <strong>box model </strong>, tendo um elemento com largura de 300px e aplicando uma margem esquerda de 20px, no final a largura dele é de 320px. O problema é que o Internet Explorer 6 duplica a margem dos elementos flutuados para o mesmo lado em que a margem é aplicada. No caso o tamanho final do elemento no IE6 será de 340px.</p>
<p>Para solucionar este problema, basta aplicar <em>display:inline</em> na declaração do elemento. Somente o Internet Explorer 6 será afetado.</p>
<p><pre><code><br />
/* Resulta em width: 340px no IE6 */<br />
.elemento{float:left; width:300px; margin-left:20px;}<br />
<br />
/* Problema resolvido com display:inline*/<br />
.elemento{float:left; width:300px; margin-left:20px; display:inline}<br />
</code></pre></p>
<h2>Altura E Largura Mínima E Máxima</h2>
<p>Fazer um layout flexível que se ajuste a diversas resoluções e conteúdos é uma maneira de tornar a apresentação dos dados mais eficiente. Podemos facilmente conseguir isso utilizando as propriedades <strong>max-width, min-width, max-height e min-height </strong>. Com elas, podemos definir qual a largura e altura máxima e mínima.</p>
<p>Mais uma vez o Internet Explorer 6 não vai interpretar corretamente estas propriedades.</p>
<p>Ele considera a altura definida (height) como a altura mínima. O truque é usar a declaração  <strong>!important </strong>, que não interfere em outros navegadores.</p>
<p><pre><code><br />
.elemento{min-height:300px; height:auto !important; height:300px;}<br />
</code></pre></p>
<p>Uma ressalva importante é para o fato de que, ao contrário de <em>height</em> e <em>width</em>, tanto o  <strong>min-height </strong> quanto o  <strong>max-height </strong>, não somam os valores de espaçamento, borda e margem para chegar ao resultado final da altura. A mesma coisa com o  <strong>min-width </strong> e <strong> max-width </strong> quanto a largura.</p>
<p>Para que o  <strong>max-height </strong> funcione no Internet Explorer 6 as soluções existentes são somente em javascript.As expressões, são uma solução específica para o IE6 que é o equivalente a rodar javascript dentro do arquivo de folha de estilo.</p>
<p>Para definir que um elemento tenha tamanho máximo de 330px, escrevemos:</p>
<p><pre><code><br />
* html .elemento {height: expression( this.scrollHeight &amp;gt; 329 ? &quot;330px&quot; : &quot;auto&quot; ); }<br />
<br />
.elemento{max-height: 330px; }</code></pre></p>
<p>A primeira linha começa com “* html” para atingir especificamente o Internet Explorer. Na expressão os valores estão um pouco diferentes para evitar que o Internet Explorer trave. Na segunda linha declaramos normalmente o  <strong>max-height </strong> para funcionar nos navegadores mais atuais. Apesar de válido, utilizar expressões não é aconselhável já que teremos uma aberração com javascript rodando em um arquivo de folha de estilo.</p>
<p>Para o  <strong>min-width </strong> e  <strong>max-width </strong> funcionarem no Internet Explorer 6 também é necessário utilizar expressões dentro do arquivo CSS.</p>
<p><pre><code><br />
* html .elemento{width: expression( document.body.clientWidth &amp;lt; 329 ? &quot;330px&quot; : &quot;auto&quot; ); }</code></pre></p>
<p>.elemento {min-width: 330px; }<br />
<pre><code><br />
<br />
Para definer max-width:<br />
<br />
&lt;code&gt;<br />
* html .elemento{width: expression( document.body.clientWidth &amp;gt; 779 ? &quot;800px&quot; : &quot;auto&quot; ); }</code></pre></p>
<p>.elemento {min-width: 800px; }</p>
<p></code></p>
<p>Esta solução torna o processamento do arquivo CSS um pouco mais lento e em caso de javascript desabilitado não funcionará.</p>
<h2>Altura 100%</h2>
<p>Para conseguir que um elemento atinja 100% de altura no Internet Explorer 6, basta especificar uma altura fixa para o elemento pai dele.</p>
<p><pre><code><br />
.pai {height:400px;}<br />
.filho {height:100%;}<br />
</code></pre></p>
<p>Se você precisa que um elemento ocupe toda a altura da tela, faça desta maneira:</p>
<p><pre><code><br />
html, body {height:100%;}<br />
.elemento {height:100%;}<br />
</code></pre></p>
<h2>Menu Horizontal E Vertical</h2>
<p>Quando você utiliza listas para criar um menu horizontal, pode acontecer que no Internet Explorer 6 os itens, ao invés de ficarem um ao lado do outro, ocupem toda a extensão disponível e formarem uma lista vertical.</p>
<p>Para resolver isso basta aplicar  <strong>display:inline </strong> para os elementos. Nos menus verticais criados utilizando  que contém elementos filhos declarados com <em>display:block</em> o Internet Explorer 6 adiciona espaço vertical entre eles.Dentre as soluções esta definir <em>display:inline</em> para os elementos e flutuar (float) os elementos filho.</p>
<h2>Hacks</h2>
<p>Quando não existe a possibilidade de resolver as diferenças entre navegadores adicionando apenas uma declaração, ainda existe a possibilidade de utilizar os chamados hacks.</p>
<p><pre><code><br />
/*Fix IE. Hide from IE Mac\*/<br />
* html .elemento {margin-right:5px;}<br />
/*End*/<br />
</code></pre></p>
<p>O código acima, devido ao comentário condicional, será interpretado somente pelo Internet Explorer 6. Uma variante do exemplo acima:</p>
<p><pre><code><br />
.elemento {<br />
margin-right: 10px; /* Todos os browsers */<br />
*margin-right:8px; /* IE */<br />
_margin-right:5px; /* IE6 */<br />
.margin-right:10px; /* IE7 */<br />
}<br />
</code></pre></p>
<p>Esta última técnica não é validada pelos padrões da W3C. Então é aconselhável utilizar o primeiro exemplo.</p>
<h2>Comentários Condicionais</h2>
<p>Os comentários condicionais são interpretados somente pelo Internet Explorer e permitem definir uma folha de estilo ou arquivo javascript que será carregado somente por estes navegadores. É possível também especificar para qual das versões o código é valido.</p>
<p><pre><code><br />
&lt;!--[if IE]&gt;<br />
Todas as versões do IE<br />
&lt;![endif]--&gt;<br />
<br />
&lt;!--[if lte IE 7]&amp;gt;--&gt;<br />
Acontece somente se a versão for menor do que o IE7<br />
<br />
&lt;!--[if IE 6]&amp;gt;--&gt;<br />
Acontece se a versão do Internet Explorer for a 6<br />
</code></pre></p>
<h2>Soluções Javascript</h2>
<p>As diferenças na interpretação do layout entre navegadores muitas vezes chegam às dezenas, e nem sempre conseguimos lidar com elas utilizando somente CSS. Partimos então para a utilização de bibliotecas e soluções javascript.</p>
<p>A mais conhecida delas, a JQuery, soluciona muitas das idiossincrasias dos navegadores.</p>
<p>Outra solução, que podemos chamar de <a href="http://code.google.com/p/ie7-js/">IE7-JS</a>, pois não tem um nome específico, faz com que o IE6 se comporte como um navegador web-standard e suporte transparência.</p>
<h2>Campanha Para Eliminar Navegadores Antigos</h2>
<p>O <a href="http://imasters.uol.com.br/crossbrowser/pt-br/">portal iMasters</a> tem uma campanha em que você adiciona uma linha de código ao arquivo e, caso o navegador que acessar a página for antigo, será mostrada uma barra na parte superior da janela pedindo para que o navegador seja atualizado e mostrando as opções.</p>
<h2>Conclusão</h2>
<p>Tudo leva a crer que mais alguns anos e todos os navegadores vão seguir os padrões e não precisaremos perder horas para garantir que as páginas funcionem em todos.</p>
<p>O que podemos fazer até lá é desenvolver os códigos válidos pelos padrões e aprender todos os truques.</p>
<p>Tutorial Seguinte Da Série <a href="http://www.webmaster.pt/tutoriais-programacao-webdesign/aprende-css">Aprende CSS Com Maicon Sobczak</a><strong> &gt; <a href="http://www.webmaster.pt/css3-selectores-940.html">Especial! CSS3 - Selectores</a></strong>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.webmaster.pt%2Fcss-diferenca-entre-browsers-932.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.webmaster.pt%2Fcss-diferenca-entre-browsers-932.html&amp;source=marketocracia&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.webmaster.pt/css-diferenca-entre-browsers-932.html">CSS &#8211; Diferença Entre Browsers</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>
<p>Related posts:<ol>
<li><a href='http://www.webmaster.pt/a-guerra-dos-browsers-35.html' rel='bookmark' title='A Guerra Dos Browsers'>A Guerra Dos Browsers</a></li>
<li><a href='http://www.webmaster.pt/diferencas-php4-php5-10786.html' rel='bookmark' title='Algumas Diferenças Entre O PHP 4.x E O PHP 5.x'>Algumas Diferenças Entre O PHP 4.x E O PHP 5.x</a></li>
<li><a href='http://www.webmaster.pt/descubra-as-diferencas-entre-wordpress-com-e-wordpress-org-6216.html' rel='bookmark' title='Descubra As Diferenças Entre WordPress.COM E WordPress.ORG'>Descubra As Diferenças Entre WordPress.COM E WordPress.ORG</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.webmaster.pt/css-diferenca-entre-browsers-932.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CSS &#8211; Impressão</title>
		<link>http://www.webmaster.pt/css-impressao-917.html</link>
		<comments>http://www.webmaster.pt/css-impressao-917.html#comments</comments>
		<pubDate>Thu, 11 Mar 2010 23:25:38 +0000</pubDate>
		<dc:creator>Maicon Sobczak</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.webmaster.pt/?p=917</guid>
		<description><![CDATA[O Maicon Sobczak explica neste tutorial como criar CSS para impressão. As melhores práticas.<p><a href="http://www.webmaster.pt/css-impressao-917.html">CSS &#8211; Impressão</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>

Related posts:<ol>
<li><a href='http://www.webmaster.pt/css-criacao-layout-912.html' rel='bookmark' title='CSS &#8211; Criação de Layout'>CSS &#8211; Criação de Layout</a></li>
<li><a href='http://www.webmaster.pt/css-diferenca-entre-browsers-932.html' rel='bookmark' title='CSS &#8211; Diferença Entre Browsers'>CSS &#8211; Diferença Entre Browsers</a></li>
<li><a href='http://www.webmaster.pt/css-principios-890.html' rel='bookmark' title='CSS &#8211; Princípios'>CSS &#8211; Princípios</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Tutorial Anterior Da Série <a href="http://www.webmaster.pt/tutoriais-programacao-webdesign/aprende-css">Aprende CSS Com Maicon Sobczak</a> <strong>&gt; <a href="http://www.webmaster.pt/css-criacao-layout-912.html">CSS &#8211; Criação de Layout</a></strong></p>
<p>Somos desenvolvedores web. Estudamos para saber como tornar a visualização dos elementos da página o mais confortável possível para o internauta que vê a página do seu computador. São aplicados efeitos e ela entra para galerias como exemplo de design e conteúdo bem aplicados.</p>
<p>Aí um visitante decide imprimir um artigo interessante ou um <em>case</em> para estudo. Descobre então, que são impressas duas páginas só com menu e anúncios e que o texto é um filete que se estende por quatro páginas.</p>
<p>Pois é amigo. A deslumbramento com o mundo virtual fortalece a idéia de que se algo precisa ser visto é na tela do computador e que as outras mídias (entenda-se papel) não são mais utilizadas pelo internauta.</p>
<p>Precisamos entender que um número grande de pessoas prefere ler no papel, principalmente textos extensos. Outros tem medo de não conseguir mais encontrar a página ou o conteúdo online. Há também os que precisam levar a informação para locais sem acesso à internet ou para uma leitura no parque.</p>
<p>Motivos não faltam para dedicar algumas horas do desenvolvimento no preparo das informações para impressão. E esta mentalidade deve estar presente já na fase inicial do desenvolvimento e não deixada para depois que o website estiver online.</p>
<p>E se você pequisar um pouco verá que até grandes portais negligenciam esta parte.</p>
<p>Vamos ver neste tutorial quais propriedades CSS são aceitas na impressão, as melhores práticas e considerações.</p>
<h2>Somente Na Impressão</h2>
<p>Os arquivos de folha de estilo não formatam apenas os elementos para visualização no navegador, mas para outras mídias e dispositivos como televisão e impressoras. Podemos definir  para qual mídia o arquivo CSS será válido através da regra <strong>media </strong>na tag de importação do arquivo. Para saber os valores possíveis visite o tutorial <a href="http://www.webmaster.pt/css-principios-890.html">Princípios CSS</a> desta série.</p>
<p>Ao importar o arquivo normalmente sem definir a mídia, ele é valido para todas. Para que seja válido apenas quando o documento for impresso atribuímos <strong>print</strong> à regra <strong>media</strong>.</p>
<p><pre><code><br />
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;estilo.css&quot; media=&quot;print&quot; /&gt;<br />
</code></pre></p>
<p>Uma variante da linha acima é utilizar o <strong>@import</strong>.</p>
<p><pre><code><br />
&lt;style type=&quot;text/css&quot;&gt;<br />
@import url(&quot;estilo.css&quot;) print;<br />
&lt;/style&gt;<br />
</code></pre></p>
<p>Um efeito colateral de utilizar o <strong>@import</strong> é um pequeno <em>delay</em> que às vezes ocorre no carregamento que faz com que o conteúdo da página fique alguns segundos sem a formatação.</p>
<p>Quando for importar duas folhas de estilo no mesmo arquivo defina para qual mídia são aplicáveis, pois se uma delas não tiver media ira afetar a outra devido ao efeito cascata do CSS.</p>
<h2>A página</h2>
<p>Vamos criar uma página básica, com menu, título, imagem, link e caixa de destaque.</p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/02/layout1.jpg" alt="CSS Para Impressão" width="600" height="650" class="aligncenter size-full wp-image-922" /></p>
<p><pre><code><br />
&lt;div class=&quot;global-div&quot;&gt;<br />
<br />
&lt;ul class=&quot;menu&quot;&gt;<br />
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Inicial&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Sobre&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Contato&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;<br />
<br />
&lt;h1&gt;CSS para Impressão&lt;/h1&gt;<br />
&lt;img src=&quot;css.jpg&quot; width=&quot;420&quot; height=&quot;281&quot; alt=&quot;CSS&quot; /&gt;<br />
&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean odio sem, mattis malesuada, consectetuer eu, ultricies convallis, lacus. Praesent non orci. Donec sagittis metus vel massa. Nulla facilisi. Proin justo. Aenean ac massa. Quisque vel risus. Morbi ipsum. Integer odio eros, dapibus eget, egestas sed, lacinia dictum, nunc. Maecenas pellentesque rhoncus lectus. Nulla facilisi. Pellentesque eget libero et tortor hendrerit venenatis. Aliquam tempus, felis in ornare congue, lacus mi consectetuer risus, sit amet luctus orci nisl at dui. Aenean ligula sem, pretium sed, tincidunt sit amet, accumsan eget, justo. Nam in massa. Cras turpis velit, volutpat eu, vestibulum at, pellentesque vel, dui.&lt;/p&gt;<br />
<br />
&lt;p&gt;&lt;a href=&quot;#&quot;&gt;Link para algum lugar&lt;/a&gt;&lt;/p&gt;<br />
<br />
&lt;p&gt;Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent rutrum malesuada urna. Aliquam sollicitudin. Pellentesque id nisi. Duis in mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec ac elit. Etiam posuere venenatis ante. Nunc ullamcorper neque ac justo. Donec id purus. Aenean non enim eget diam aliquam tristique. Mauris pellentesque pulvinar dui. Donec et arcu ut leo laoreet vulputate. Aenean a magna et massa ornare congue. Phasellus a tellus vitae enim ornare laoreet.&lt;/p&gt;<br />
<br />
&lt;div class=&quot;box&quot;&gt;<br />
&lt;p&gt;Integer viverra, odio sed sollicitudin malesuada, magna mauris cursus nulla, non ultricies arcu massa in tellus. Duis velit nibh, porttitor non, sodales at, iaculis eget, lectus. Curabitur vitae ante. &lt;/p&gt;<br />
&lt;/div&gt;<br />
<br />
&lt;p&gt;Integer viverra, odio sed sollicitudin malesuada, magna mauris cursus nulla, non ultricies arcu massa in tellus. Duis velit nibh, porttitor non, sodales at, iaculis eget, lectus. Curabitur vitae ante. Mauris dapibus consequat mi. Sed at quam a lacus varius tempus. Phasellus scelerisque suscipit justo. Morbi ac justo eu arcu ornare facilisis. Donec et est. Morbi et lectus. Suspendisse et augue. Vivamus enim eros, condimentum vel, sodales vel, ullamcorper vitae, purus.&lt;/p&gt;<br />
<br />
&lt;p&gt;Donec non felis quis augue interdum accumsan. Nulla at libero. Nunc ultricies auctor sapien. Praesent quis quam et massa tincidunt luctus. Vivamus nibh. Sed ligula. Nunc non est a augue tempor lacinia. Mauris lectus pede, porta tempus, ultrices sed, dignissim sed, justo. Suspendisse porta. Fusce arcu. Sed vehicula libero a odio.&lt;/p&gt;<br />
<br />
&lt;h2 class=&quot;quebra&quot;&gt;Subtitulo&lt;/h2&gt;<br />
<br />
&lt;p&gt;Ut magna urna, tincidunt nec, eleifend sit amet, auctor pretium, nisi. Suspendisse arcu enim, commodo at, facilisis in, feugiat sit amet, quam. Praesent ut lacus. Maecenas sed metus. Nulla sed urna. Donec vitae ipsum quis quam cursus porttitor. Curabitur justo elit, pulvinar eu, condimentum consectetuer, tristique vel, velit. Suspendisse libero massa, scelerisque eget, malesuada ut, ultricies aliquam, neque. Curabitur elementum est sed magna. Morbi enim. Ut dignissim mattis justo. Nunc justo.&lt;/p&gt;<br />
<br />
&lt;p&gt;Fusce purus. Curabitur eu ligula. Vestibulum ultricies hendrerit elit. Nulla a metus. Aenean aliquam. Phasellus nec massa. Nullam vehicula neque id magna ornare elementum. Phasellus luctus, lorem non ornare laoreet, ligula elit ultrices metus, vel scelerisque dolor velit nec risus. Ut orci. Nullam luctus, mauris et ultricies mattis, nisi felis auctor dui, sed elementum nisl felis sit amet lectus. Donec mauris odio, condimentum sit amet, semper sed, scelerisque eu, est. Aliquam pellentesque, ipsum id fermentum pretium, augue orci convallis magna, ut vulputate magna est vel enim. Nulla quis est mattis massa scelerisque tristique. Vestibulum id turpis. Proin ultrices. Proin lacinia nisi vehicula nunc. Nullam nec velit nec erat aliquam scelerisque.&lt;/p&gt;<br />
&lt;p&gt;Nullam luctus venenatis sapien. Praesent laoreet pharetra ipsum. Nulla diam nulla, vehicula vitae, venenatis a, sodales in, sem. Phasellus pulvinar ante ut sapien. Integer feugiat massa vel dolor. Integer luctus, ipsum a interdum blandit, dui odio pretium sapien, at vestibulum pede mi quis est. Cras odio. Donec urna. Sed viverra dictum elit. Quisque et magna eget leo lacinia feugiat. Nulla faucibus porttitor nisl. Vivamus sit amet lectus quis nisi euismod egestas. Aenean ultrices urna fringilla dui. Mauris id libero et turpis hendrerit pretium. Proin interdum pulvinar enim. Duis nunc.&lt;/p&gt;<br />
<br />
&lt;/div&gt;<br />
</code></pre></p>
<p>E estilizar com as regras abaixo:</p>
<p><pre><code><br />
/*----------------------RESET--------------------*/<br />
<br />
body, html, div, blockquote, img, label, p, h1, h2, h3, h4, h5, h6, pre, ul, ol,<br />
li, dl, dt, dd, form, a, fieldset, input, th, td<br />
{margin: 0; padding: 0; outline: none;}<br />
<br />
body{line-height:1; font-size:62.5%; background:#fff; font-family:Arial, Helvetica, sans-serif;} /*---- 1.0 em = 10px---*/<br />
<br />
h1, h2, h3, h4, h5, h6{font-size:100%;}<br />
<br />
/*----------------------RESET--------------------*/<br />
<br />
p, a{font-size:1.3em; line-height:1.8em; margin-bottom:10px;}<br />
<br />
.box p{margin:0;}<br />
<br />
.box{position:relative; float:right; width:300px; padding:10px; margin:10px; background:#DCF1F1; border:1px solid #CDE2ED;}<br />
<br />
.global-div{width:900px; height:auto; padding:0 15px 30px 15px; position:absolute; float:none; left:50%;&nbsp;&nbsp;margin:5px 0 0 -470px ; border:5px solid #eaeaea; }<br />
<br />
.global-div img{float:left; margin-right:20px; border:1px solid #eaeaea; z-index:500; }<br />
<br />
h1{font:italic bold 5em Georgia, &quot;Times New Roman&quot;, Times, serif; text-align:center; margin:20px 0; background:#333; color:#fff; padding:10px; letter-spacing:-0.04em; text-shadow:0px 0px 5px #eaeaea; }<br />
<br />
h2{font:3em Georgia, &quot;Times New Roman&quot;, Times, serif;}<br />
<br />
ul{list-style:none; margin-left:300px;}<br />
<br />
ul li{display:inline; margin-right:50px;}<br />
</code></pre></p>
<p>Primeiramente foram resetados os valores para não haver discrepância na interpretação das regras pelos navegadores. Em seguida definidos os tamanhos de fonte, flutuação e cor das divs, aparência dos títulos e menu.</p>
<p>Sem complicação e na medida para que sejam explicados os principais aspectos e cuidados na formatação de uma página para impressão.</p>
<h2>Propriedades Para Impressão</h2>
<p>O CSS 2 possui algumas propriedades dedicadas apenas para formatação de conteúdo a ser impresso. </p>
<p><strong>Quebra de página</strong><br />
As regras mais úteis são relacionadas a quebra de página e são aplicáveis apenas em elementos nível de bloco, como parágrafos, cabeçalhos (h1-6) ou <strong>display:block</strong>. Elas são:</p>
<ul>
<li><strong>page-break-after </strong>– Quebra a página depois do elemento.</li>
<li><strong>page-break-before</strong> – Quebra a página antes do elemento especificado. Útil para deixar os títulos no topo da página.</li>
<li><strong>page-break-inside </strong>– Configura a quebra de linha dentro do elemento, como por exemplo, tabelas.</li>
</ul>
<p>Vejamos os valores disponíveis para estas propriedades:</p>
<ul>
<li><strong>auto</strong> – Comportamento padrão. Quebra somente quando necessário, se não incomodar deixa quieto.</li>
<li><strong>always</strong> – Sempre haverá quebra de página.</li>
<li><strong>avoid </strong>– Faz o possível para evitar uma quebra.</li>
<li><strong>left </strong>– Força a quebra de página para que o conteúdo inicie em uma página à esquerda.</li>
<li><strong>right</strong> – Força a quebra de página para que o conteúdo inicie em uma página à direita.</li>
</ul>
<p><strong>Número de linhas</strong></p>
<p>Para definir quantas linhas serão deixadas no início ou final da página. Úteis em listas.</p>
<ul>
<li><strong>orphans</strong> – Define o número mínimo de linhas que devem ficar no final da página quando a quebra de linha ocorrer no meio do elemento.</li>
<li><strong>windows</strong> – Mesma definição da orphans, mas para início da página.</li>
</ul>
<p><strong>@page</strong></p>
<p>O CSS disponibiliza a regra <strong>@page</strong> para controle sobre outros aspectos da impressão, como tamanho da folha, extremidades e se é do lado direito ou esquerdo. O problema é que nem todos os navegadores interpretam esta regra, o que torna a implementação mais demorada e um tanto sem sentido.</p>
<p>Sendo assim, neste tutorial não será abordada a <strong>@page</strong>. Vou deixar alguns links para quem ficou curioso:</p>
<p> <a href="http://www.w3.org/TR/css3-page/">Página do W3C</a><br />
<a href="http://www.alistapart.com/articles/boom"> Tutorial de formatação de um livro utilizando a @page.</a></p>
<h2>Elementos Não Impressos</h2>
<p>Os navegadores por padrão não suportam a impressão do plano de fundo dos elementos. Imagens ou cores são ignorados. Assim como efeitos introduzidos pelo CSS 3, como sombra.</p>
<p>Partindo para o bom senso, não há porque permitir a impressão do menu, dos links para outros blogs, publicidades (a não ser que pagas para isso também) e banners com animações que não terão sentido estáticas.</p>
<p>Para eles nós temos o <strong>display: none</strong>.</p>
<h2>Os Textos</h2>
<p>O CSS suporta a definição do tamanho dos elementos em pixels, centímetros, unidade relativa (em) e pontos. Cada um tem o seu lugar, sendo que o px e em geram melhores resultados no monitor. No papel funciona melhor o ponto. E para texto de parágrafo de preferência com o valor 12pt.</p>
<p>Nessa hora podemos pensar um pouco na economia de recursos e deixar a cor do texto um pouco menos preta. Ao invés de #000, um #333 ou até menos dependendo da importância do trecho. Mudança sutil, mas que faz diferença na quantidade dos recursos. Pense no meio-ambiente.</p>
<h2>Links</h2>
<p>Não há sentido em simplesmente mostrar um link na versão impressa. O leitor não terá como clicar nele e se tiver interesse, não saberá para onde o link leva. A solução é mostrar o endereço completo do link quando a versão for impressa.</p>
<p>Isso é possível utlilizando a regra <strong>:after</strong> do CSS.</p>
<p><pre><code><br />
a:after {content: &quot; (&quot; attr(href) &quot;)&quot;;}<br />
</code></pre></p>
<p>Depois de um link será inserido o conteúdo do atributo <em>href</em>. Nos navegadores atuais o funcionamento é 100%, já nas versões anteriores alguns não dão suporte, como o IE6.</p>
<p>Existe uma variante que é colocar os endereços dos links no rodapé das páginas. Útil quando a quantidade de links for grande. Pórem, você só atinge este resultado com javascript.</p>
<h2>Na Prática</h2>
<p>Vamos alterar o arquivo CSS que estiliza a página criada no ínicio do tutorial adicionando as regras para impressão e mudando alguns valores. Salve com o nome de &#8220;impressao.css&#8221;.</p>
<p><pre><code><br />
body{font-family:Georgia, &quot;Times New Roman&quot;, Times, serif; margin:5% 3%; }<br />
<br />
p, a{margin-bottom:10px; font-size:11pt; line-height:18pt; color:#333;}<br />
<br />
a{color:#06F;}<br />
<br />
.box p{margin:0;}<br />
<br />
.box{position:relative; float:right; width:300px; padding:10px; margin:10px; border:1px solid #999;}<br />
<br />
.global-div img{float:left; margin:5px 20px 0 0; border:1px solid #999;}<br />
<br />
h1{font:italic bold 40pt Georgia, &quot;Times New Roman&quot;, Times, serif; text-align:center; margin-bottom:12pt;}<br />
<br />
h2{font:18pt Georgia, &quot;Times New Roman&quot;, Times, serif;}<br />
<br />
ul{display:none;}<br />
<br />
.quebra{page-break-before:always;}<br />
<br />
a:after {content: &quot; (&quot; attr(href) &quot;)&quot;;}<br />
</code></pre></p>
<p>Foi definida margem para o “body” que tornou-se o recipiente da página já que a “global-div” não foi estilizada simplesmente porque na impressão não desempenha papel relevante. O valor foi definido em porcentagem, mas pode ser em pontos, escolha sua.</p>
<p>Nos elementos de parágrafos foi alterado o tamanho da fonte, a medida para o espaçamento entre linhas e a cor. A formatação do link foi incluída porque o Internet Explorer 8 deixa os links a serem impressos automaticamente da cor preta.</p>
<p>A div “box” não tem definido a cor de fundo já que não adianta. Em compensação para as bordas foi escolhido um cinza escuro para destacar a caixa. Os cabeçalhos perderam os efeitos CSS 3 assim como cor de fundo, da letra (que fica automaticamente preta) e o espaçamento entre caracteres. Veja novamente que a medida das letras agora é em pontos.</p>
<p>No fim foi escondido o menu. O subtítulo que tinha uma classe sem serventia na versão para tela agora quebra a página e os links tem o endereço adicionados entre aspas ao lado deles.</p>
<p>Vá no menu “arquivo –&gt; visualizar impressão” no seu navegador e veja o resultado. </p>
<p><img src="http://www.webmaster.pt/wp-content/uploads/2010/02/impresso.jpg" alt="Resultado Visualizar Impressão" width="600" height="748" class="aligncenter size-full wp-image-923" /></p>
<p>A primeira página será igual a imagem acima. A segunda começa com o cabeçalho porque no arquivo definimos assim.</p>
<h2>No Final</h2>
<p>Indo pelas diretrizes apresentadas neste tutorial você não terá problemas na hora de estilizar uma página para impressão. Claro que existem casos específicos e nem sempre o que foi apresentado aqui resolvera os problemas que surgirem. Até adianto um, que é a respeito de <em>float</em>. Evite ao máximo esta regra ao estilizar para impressão e a dor de cabeça será muito leve.</p>
<p><strong>DOWNLOAD:</strong> Descarregue o código utilizado neste tutorial: <a href='http://www.webmaster.pt/css-impressao-917.html/css_impressao' rel='attachment wp-att-924'>CSS Impressão</a>, em formato .zip.</p>
<p>Tutorial Seguinte Da Série <a href="http://www.webmaster.pt/tutoriais-programacao-webdesign/aprende-css">Aprende CSS Com Maicon Sobczak</a><strong> &gt; <a href="http://www.webmaster.pt/css-diferenca-entre-browsers-932.html">CSS &#8211; Diferença Entre Browsers</a></strong>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.webmaster.pt%2Fcss-impressao-917.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.webmaster.pt%2Fcss-impressao-917.html&amp;source=marketocracia&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.webmaster.pt/css-impressao-917.html">CSS &#8211; Impressão</a> &eacute; um artigo da nossa comunidade: <a href="http://www.webmaster.pt">Webmaster.pt Marketocracia Digital</a></p>
<p>Related posts:<ol>
<li><a href='http://www.webmaster.pt/css-criacao-layout-912.html' rel='bookmark' title='CSS &#8211; Criação de Layout'>CSS &#8211; Criação de Layout</a></li>
<li><a href='http://www.webmaster.pt/css-diferenca-entre-browsers-932.html' rel='bookmark' title='CSS &#8211; Diferença Entre Browsers'>CSS &#8211; Diferença Entre Browsers</a></li>
<li><a href='http://www.webmaster.pt/css-principios-890.html' rel='bookmark' title='CSS &#8211; Princípios'>CSS &#8211; Princípios</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.webmaster.pt/css-impressao-917.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

