<?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>desenvolvimento para web &#187; html</title> <atom:link href="http://desenvolvimentoparaweb.com/categoria/xhtml/feed/" rel="self" type="application/rss+xml" /><link>http://desenvolvimentoparaweb.com</link> <description>desenvolvimento para web trata de jQuery, CSS, usabilidade, performancem, blogs, WordPress, web design e dicas, em geral, para desenvolvimento web</description> <lastBuildDate>Mon, 30 Jan 2012 23:38:52 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <item><title>Textarea: dicas e truques que voc&#234; sempre quis saber</title><link>http://desenvolvimentoparaweb.com/xhtml/textarea-dicas-truques-textarea/</link> <comments>http://desenvolvimentoparaweb.com/xhtml/textarea-dicas-truques-textarea/#comments</comments> <pubDate>Mon, 26 Jul 2010 13:00:34 +0000</pubDate> <dc:creator>Tárcio Zemel</dc:creator> <category><![CDATA[html]]></category> <category><![CDATA[Interface]]></category> <category><![CDATA[Otimização]]></category> <category><![CDATA[UX]]></category> <guid
isPermaLink="false">http://desenvolvimentoparaweb.com/?p=655</guid> <description><![CDATA[Textarea: dicas e truques para melhorar as intera&ccedil;&otilde;es com &aacute;reas de texto em suas p&aacute;ginas]]></description> <content:encoded><![CDATA[<p><img
src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/07/textarea-dicas-truques-html-jquery.gif" alt="Textarea: dicas e truques" title="" width="250" height="250" class="aligncenter size-full wp-image-656" /></p><p><strong>Textarea</strong> &eacute; um elemento b&aacute;sico de (X)HTML (especialmente formul&aacute;rios). Mas, muitos desconhecem, <strong>textareas possuem muitas peculiaridades</strong>, dicas e truques que permitem efeitos e intera&ccedil;&otilde;es interessant&iacute;ssimas. Eis uma bela cole&ccedil;&atilde;o de 9 truques e dica simples que voc&ecirc; pode fazer com textareas. Aproveite!</p><div
class="artigo-traduzido">Este &eacute; um artigo traduzido do original &#8220;<a
href="http://css-tricks.com/textarea-tricks/">Textarea Tricks</a>&#8220;, do blog <a
href="http://css-tricks.com/" title="Visitar o CSS-Tricks.">CSS-Tricks</a>, a tradu&ccedil;&atilde;o foi feita com autoriza&ccedil;&atilde;o do <a
href="http://chriscoyier.net/" title="Visitar o web site de Chris Coyier.">autor</a> e sofreu pequenas modifica&ccedil;&otilde;es.</div><h2>Imagem como background da textarea (desaparece quando recebe foco)</h2><p>&Eacute; poss&iacute;vel adicionar uma imagem de fundo para um textarea (assim como quase para qualquer outro elemento). &Agrave;s vezes, por algum motivo qualquer, quando se adiciona um background, isso pode &#8220;quebrar&#8221; o estilo padr&atilde;o do navegador para o textarea: o estilo de borda padr&atilde;o &#8211; 1px s&oacute;lido &#8211; &eacute; substitu&iacute;do por uma espessa borda chanfrada. Para restaurar o padr&atilde;o do navegador, &eacute; poss&iacute;vel, apenas, reestilizar a textarea.</p><div
class="wp_syntax"><div
class="code"><pre class="css" style="font-family:monospace;">textarea <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">img/textarea-background.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">center</span> <span style="color: #993333;">center</span> <span style="color: #993333;">no-repeat</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* &quot;Quebra&quot; o padrão de textarea */</span>
    <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span><span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#888</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* &quot;Restaura&quot; o padrão */</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div><p>Essa imagem de fundo certamente ir&aacute; interferir com a legibilidade do texto quando as palavras come&ccedil;arem a &#8220;passar por cima&#8221;. Para resolver isso, basta uma solu&ccedil;&atilde;o simples (com <a
href="/categoria/jquery/">jQuery</a>) que faz o seguinte: retirar a imagem de background quando o textarea recebe foco e o coloca de volta no blur, caso nenhum texto tenha sido digitado.</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'textarea'</span><span style="color: #009900;">&#41;</span>
  .<span style="color: #000066;">focus</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'none'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
  .<span style="color: #000066;">blur</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'url(img/textarea-background.png) center center no-repeat'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><h2>Texto com placeholder HTML5</h2><p>No HTML5, haver&aacute; um novo atributo: <em>placeholder</em>. Ele mostra um texto em cinza clarinho na &aacute;rea de texto que desaparece quando o textarea est&aacute; em foco ou tem algum valor.</p><div
class="wp_syntax"><div
class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">textarea</span> placeholder<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;A vingança nunca é plena, mata a alma e a envenena!&quot;</span> <span style="color: #000066;">cols</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">rows</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;5&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">textarea</span>&gt;</span></pre></div></div><p>Texto via HTML5 placeholder funciona no Safari 5, Mobile Safari, Chrome 6 e Firefox 4 alpha.</p><h2>Texto com placeholder, HTML5 e jQuery</h2><p>&Eacute; poss&iacute;vel testar se um determinado elemento suporta um atributo, em particular, por meio de testes com JavaScript:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> elementSupportsAttribute<span style="color: #009900;">&#40;</span>element<span style="color: #339933;">,</span> attribute<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> test <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span>element<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>attribute <span style="color: #000066; font-weight: bold;">in</span> test<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div><p>Ent&atilde;o, d&aacute; para escrever o c&oacute;digo de modo que se o browser suporta o atributo <em>placeholder</em>, ele o usa; se n&atilde;o, seu comportamento &eacute; &#8220;imitado&#8221; atrav&eacute;s de jQuery:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>elementSupportsAttribute<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'textarea'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'placeholder'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #006600; font-style: italic;">// Fallback for browsers that don't support HTML5 placeholder attribute</span>
  $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#example-three&quot;</span><span style="color: #009900;">&#41;</span>
    .<span style="color: #660066;">data</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;originalText&quot;</span><span style="color: #339933;">,</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#example-three&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    .<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;color&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;#999&quot;</span><span style="color: #009900;">&#41;</span>
    .<span style="color: #000066;">focus</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> $el <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">==</span> $el.<span style="color: #660066;">data</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;originalText&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
          <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
    .<span style="color: #000066;">blur</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
          <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">data</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;originalText&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #006600; font-style: italic;">// Browser does support HTML5 placeholder attribute, so use it.</span>
  $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#example-three&quot;</span><span style="color: #009900;">&#41;</span>
    .<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;placeholder&quot;</span><span style="color: #339933;">,</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#example-three&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    .<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><h2>Remover o brilho azul</h2><p>Todos os browsers WebKit, o Firefox 3.6 e Opera 10 colocam uma borda azul brilhante <strong>ao redor de textareas</strong> quando est&atilde;o em foco. &Eacute; poss&iacute;vel remov&ecirc;-lo da seguinte forma:</p><div
class="wp_syntax"><div
class="code"><pre class="css" style="font-family:monospace;">textarea <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">outline</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div><p>Voc&ecirc; tamb&eacute;m pode aplicar &agrave; pseudo-classe <em>:focus</em> que vai funciona de qualquer maneira. Que saibamos, ainda n&atilde;o foi encontrada uma maneira de remover o brilho do Firefox e Opera. Se souber, por favor, comente!</p><h2>Remover resizer da textarea</h2><p>Navegadores baseados em WebKit colocam um pequeno elemento de UI no canto inferior direito das textareas para que os usu&aacute;rios possam redimensionar a &aacute;rea de texto. Se, por qualquer motivo, voc&ecirc; quiser remover isso, uma regra CSS simples &eacute; tudo o que voc&ecirc; precisa:</p><div
class="wp_syntax"><div
class="code"><pre class="css" style="font-family:monospace;">textarea <span style="color: #00AA00;">&#123;</span>
resize<span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div><h2>Adicionar resizer na textarea</h2><p>A <a
href="http://jqueryui.com/demos/resizable/" rel="nofollow">resizeable interaction do jQuery UI</a> pode ser usada em textareas. Ela funciona em todos os browsers e substitui a vers&atilde;o do WebKit nativa, j&aacute; que essa vers&atilde;o tem todos os tipos de coisas mirabolantes (como callbacks e anima&ccedil;&otilde;es).</p><p>Para usar a intera&ccedil;&atilde;o, &eacute; preciso carregar jQuery e jQuery UI em sua p&aacute;gina e usar o seguinte javascript:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;textarea&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">resizable</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>Fica a pergunta: usar jQuery e jQuery UI somente para adicionar o resize handle a suas textareas vale a pena? N&atilde;o uma &#8220;resposta certa&#8221; para a pergunta; s&oacute; voc&ecirc; pode julgar se isso &eacute; adequado &agrave;s necessidades e especifica&ccedil;&otilde;es de seu projeto.</p><h2>Auto-redimensionar conforme o conte&uacute;do</h2><p><a
href="http://james.padolsey.com/about/">James Padolsey</a> tem um script jQuery muito bom para <a
href="http://james.padolsey.com/javascript/jquery-plugin-autoresize/">auto redimensionar textareas conforme o conte&uacute;do</a>. A textarea come&ccedil;a com um tamanho normal razo&aacute;vel e, conforme voc&ecirc; digita mais e mais conte&uacute;do, ela se expande para incluir todo o texto, ao inv&eacute;s de mostrar a barra de rolagem padr&atilde;o.</p><p>O <em>plugin</em> tem uma variedade de op&ccedil;&otilde;es (<a
href="http://james.padolsey.com/javascript/jquery-plugin-autoresize/" rel="nofollow">confira</a>), mas, em sua forma mais simples de uso, basta carregar o arquivo do script e usar assim:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'textarea'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">autoResize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><h2>Nowrap (sem quebra de linha autom&aacute;tica)</h2><p>Para evitar a quebra de texto com CSS normalmente &eacute; usada a regra &#8220;<em>#seletor { white-space: nowrap; }</em>&#8220;. Mas, por alguma raz&atilde;o, isso n&atilde;o funciona com textareas. Se a intera&ccedil;&atilde;o que voc&ecirc; procura nas textareas &eacute; a linha n&atilde;o quebrar at&eacute; que o Enter seja pressionado, &eacute; preciso usar o atributo &#8220;wrap&#8221; com o valor &#8220;off&#8221;, da seguinte maneira:</p><div
class="wp_syntax"><div
class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">textarea</span> wrap<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;off&quot;</span> <span style="color: #000066;">cols</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">rows</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;5&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">textarea</span>&gt;</span></pre></div></div><h2>Remover barra padr&atilde;o do Internet Explorer</h2><p>O infame Internet Explorer coloca uma barra de rolagem vertical por padr&atilde;o em <strong>todas as textareas</strong>. &Eacute; poss&iacute;vel ocultar isso com &#8220;overflow: hidden&#8221;, mas ser&aacute; um problema se a barra de rolagem realmente for necess&aacute;ria em fun&ccedil;&atilde;o da quantidade de texto digitada. Felizmente, a propriedade <em>overflow</em> tem o valor &#8220;auto&#8221;, que exibe a barra de rolagem somente quando esta se fizer necess&aacute;ria. Fica assim:</p><div
class="wp_syntax"><div
class="code"><pre class="css" style="font-family:monospace;">textarea <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span><span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div><h2>Conclus&atilde;o</h2><p>Voc&ecirc; j&aacute; tinha pensado que tantas <strong>intera&ccedil;&otilde;es</strong> e <strong>modifica&ccedil;&otilde;es</strong> fossem poss&iacute;vel em um elemento de HTML t&atilde;o b&aacute;sico como textarea? Se voc&ecirc; quiser ser ainda mais ousado, com javascript e CSS &eacute; poss&iacute;vel obter efeitos e intera&ccedil;&otilde;es ainda melhores! A prop&oacute;sito, os exemplos mostrados no artigo podem ser testados <a
href="http://css-tricks.com/examples/TextareaTricks/" rel="nofollow">nesta p&aacute;gina</a>.</p><p>Se tiver alguma outra dica e/ou quiser mostrar algo de interessante que tenha feito em textareas, <strong>comente</strong>!</p><h3  class="related_post_title">Artigos Relacionados</h3><ul
class="related_post"><li><a
href="http://desenvolvimentoparaweb.com/jquery/otimizar-codigos-jquery-aumentar-performance-front-end/" title="Como otimizar códigos jQuery e aumentar a performance do front-end">Como otimizar códigos jQuery e aumentar a performance do front-end</a></li><li><a
href="http://desenvolvimentoparaweb.com/jquery/melhorando-interacao-formularios-busca/" title="Melhorando a interação em formulários de busca">Melhorando a interação em formulários de busca</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/wireframe-web-guia-completo/" title="Wireframes para web: guia completo de desenvolvimento">Wireframes para web: guia completo de desenvolvimento</a></li><li><a
href="http://desenvolvimentoparaweb.com/jquery/como-fazer-loading-site-conteudos/" title="Como fazer loading em conteúdos do site">Como fazer loading em conteúdos do site</a></li><li><a
href="http://desenvolvimentoparaweb.com/wordpress/5-dicas-para-temas-wordpress-melhores/" title="5 dicas para temas WordPress melhores">5 dicas para temas WordPress melhores</a></li><li><a
href="http://desenvolvimentoparaweb.com/php/urls-amigaveis-slug-a-wordpress/" title="URLs amigáveis (slug) à WordPress">URLs amigáveis (slug) à WordPress</a></li><li><a
href="http://desenvolvimentoparaweb.com/css/gradiente-css-cross-browser-degrades-css-sem-usar-imagens/" title="Gradiente CSS cross browser: degradês em CSS sem usar imagens">Gradiente CSS cross browser: degradês em CSS sem usar imagens</a></li><li><a
href="http://desenvolvimentoparaweb.com/javascript/melhores-editores-wysiwyg-para-seu-projeto/" title="Melhores editores WYSIWYG para seu projeto">Melhores editores WYSIWYG para seu projeto</a></li><li><a
href="http://desenvolvimentoparaweb.com/wordpress/15-comandos-sql-wordpress/" title="15 fantásticos comandos SQL para WordPress">15 fantásticos comandos SQL para WordPress</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/breadcrumbs-guia-completo-exemplos-melhores-praticas/" title="Breadcrumbs: guia completo com exemplos e melhores práticas">Breadcrumbs: guia completo com exemplos e melhores práticas</a></li></ul>]]></content:encoded> <wfw:commentRss>http://desenvolvimentoparaweb.com/xhtml/textarea-dicas-truques-textarea/feed/</wfw:commentRss> <slash:comments>9</slash:comments> </item> <item><title>Meta tags</title><link>http://desenvolvimentoparaweb.com/xhtml/meta-tags/</link> <comments>http://desenvolvimentoparaweb.com/xhtml/meta-tags/#comments</comments> <pubDate>Fri, 26 Sep 2008 13:00:40 +0000</pubDate> <dc:creator>Tárcio Zemel</dc:creator> <category><![CDATA[html]]></category> <category><![CDATA[Análise]]></category> <category><![CDATA[Conteúdo]]></category> <category><![CDATA[Planejamento]]></category> <guid
isPermaLink="false">http://www.desenvolvimentoparaweb.com/?p=198</guid> <description><![CDATA[Um guia sobre meta tags, mostrando as principais meta tags, sua fun&ccedil;&atilde;o e exemplos de uso para que voc&ecirc; saiba qual meta tag utilizar em cada situa&ccedil;&atilde;o, sumo a um trabalho de SEO mais elaborado e profissinoal]]></description> <content:encoded><![CDATA[<p><strong>Meta tags</strong> s&atilde;o tags &#8220;especiais&#8221; e &#8220;ocultas&#8221; que s&atilde;o colocadas no cabe&ccedil;alho (<em>head</em>) de documentos <em>web</em> (html, xhtml, xml, e outros). A correta inser&ccedil;&atilde;o e utiliza&ccedil;&atilde;o das <em>meta tags</em> muitas vezes determina se as p&aacute;ginas ser&atilde;o bem indexadas ou n&atilde;o, se a <strong>meta informa&ccedil;&atilde;o</strong> a respeito daquele site e daquela p&aacute;gina, em especial, est&aacute; correta e realmente reflete a realidade daquele <em>web site</em>.</p><p>Muitos desconhecem e negligenciam o uso de <em>meta tags</em> para a mais eficiente coloca&ccedil;&atilde;o do <em>web site</em> na <em>internet</em> e auto-emplica&ccedil;&atilde;o sobre seu conte&uacute;do, o que &eacute; importante para diversas coisas. Muitos dos que j&aacute; mexem com desenvolvimento para <em>web</em> h&aacute; algum tempo n&atilde;o d&atilde;o a devida import&acirc;ncia &agrave;s meta tags e, com isso, perdem a oportunidade de descrever melhor seu conte&uacute;do e o que os sites que desenvolvem t&ecirc;m a oferecer.</p><h2>&#8220;Meta&#8221; + &#8220;Tag&#8221; = Meta Tag</h2><p>O termo <strong>meta tag</strong> &eacute;, na verdade, formado por 2 palavrinhas que se juntam para dar seu significado. E para entender este significado, &eacute; preciso entender as 2 palavras, em separado:</p><p><strong>Meta</strong> &eacute; um prefixo grego que significa algo como &#8220;ap&oacute;s, &#8220;que ultrapassa&#8221;, &#8220;que engloba&#8221;, &#8220;que est&aacute; al&eacute;m&#8221;. Este n&atilde;o &eacute; um prefixo utilizado somente no desenvolvimento para <em>web</em>; voc&ecirc; j&aacute; deve ter ouvido e lido palavras como &#8220;metabolismo&#8221; e &#8220;metamorfose&#8221;. Este prefixo <strong>meta</strong> refere-se &agrave; &#8220;coisas sobre a pr&oacute;pria coisa&#8221; ou, em outras palavras, <strong>dados sobre dados</strong>, <strong>informa&ccedil;&atilde;o sobre a informa&ccedil;&atilde;o</strong>.</p><p><strong>Tag</strong> &eacute; uma palavra do ingl&ecirc;s que significa &#8220;etiqueta&#8221; ou &#8220;r&oacute;tulo&#8221;. Tanto nos EUA, no Brasil ou qualquer parte do mundo, etiquetas servem para identificar, nomear e marcar algo ou alguma coisa para que possa ser identificado e/ou corretamenta catalogado &#8211; dentre outras coisas.</p><p>Ent&atilde;o, juntando os 2 termos, &#8220;<em>meta</em>&#8221; e &#8220;<em>tag</em>&#8220;, temos <strong>meta tag</strong> que, como voc&ecirc; j&aacute; deve ter &#8220;adivinhado&#8221;, s&atilde;o <em>tags</em> que descrevem o documento <em>web</em> a qual pertencem (&#8220;informa&ccedil;&atilde;o sobre a informa&ccedil;&atilde;o&#8221;); as meta <em>tags</em> s&atilde;o para descrever informa&ccedil;&otilde;es sobre <em>sites</em> e p&aacute;ginas que as cont&eacute;m; informam sobre qual conte&uacute;do est&aacute; ali e mostra informa&ccedil;&otilde;es extras a respeito deste conte&uacute;do.</p><p>As <em>metatags</em> s&atilde;o colocadas como elementos-filho de <em>head</em>, no (X)HTML, e sua sintaxe obedece &agrave; seguinte conven&ccedil;&atilde;o:</p><p
style="text-align: center;"><strong>&lt;meta name=&#8221;nome-da-meta&#8221; content=&#8221;conteudo-da-meta&#8221; /&gt;</strong></p><p>Ent&atilde;o, para qualquer das meta tags existentes que voc&ecirc; for usar, a conven&ccedil;&atilde;o para seu uso &eacute; esta, onde se informa primeiramente de qual meta se est&aacute; inserindo e, posteriormente, qual valor se d&aacute;. Para os acostumados com a sintaxe XHTML e afins &#8211; grande parte dos leitores do <a
title="desenvolvimento para web." href="http://www.desenvolvimentoparaweb.com/">desenvolvimento para <em>web</em></a> -, n&atilde;o h&aacute; nenhuma novidade.</p><h2>Meta tags mais usadas e conhecidas</h2><p>Existem muitas meta tags dispon&iacute;veis para se usar, entretanto, algumas s&atilde;o de especial import&acirc;ncia e devem ser obrigatoriamente inseridas em cada uma das p&aacute;ginas de seu <em>web site</em>. Sem elas, diversos preju&iacute;zos podem acontecer ao contexto geral de seu site e os objetivos tra&ccedil;ados para ele ter&atilde;o mais dificuldade em serem alcan&ccedil;ados.</p><p>Lembre-se: comece a inser&ccedil;&atilde;o de suas meta tags sempre depois de inserir o t&iacute;tulo de seu documento, atrav&eacute;s da <em>tag</em> <strong>&lt;title&gt;</strong>, j&aacute; que esta deve ser a primeira tag a constar dentro do cabe&ccedil;alho (se&ccedil;&atilde;o <strong>&lt;head&gt;</strong>) de cada uma de suas p&aacute;ginas web.</p><h3><strong>Meta tag &#8220;description&#8221;</strong></h3><p>Esta <em>meta tag</em> descreve o conte&uacute;do do documento. &Eacute; muito importante, j&aacute; que mecanismos de busca que suportam esta meta exibem seu conte&uacute;do na descri&ccedil;&atilde;o de p&aacute;gina da p&aacute;gina de resultados de pesquisa.</p><p>Portanto, esta <em>meta tag</em> deve ser sabiamente utilizada e o respons&aacute;vel pela elabora&ccedil;&atilde;o de seu conte&uacute;do deve usar senten&ccedil;as crutas, com as principais palavras-chave do documento e de forma a ser atrativa para um potencial visitante se interessar em conhecer seu conte&uacute;do somente por ter lido a descri&ccedil;&atilde;o.</p><h3><strong>Meta tag &#8220;keywords&#8221;</strong></h3><p>Nesta <em>meta-tag</em> voc&ecirc; coloca uma lista de palavras-chave (palavras-chave estas que, obviamente, t&ecirc;m a ver com o conte&uacute;do da p&aacute;gina <em>web</em>). Os <em>bots</em> de busca verificam quais as palavras-chaves foram apontadas nesta meta e, segundo seus crit&eacute;rios, armazenas as informa&ccedil;&otilde;es em seus bancos de dados para melhor servir as pessoas com seus resultados de procura.</p><p>Cuidado para n&atilde;o abusar, na tentativa de ser &#8220;espertinho&#8221; e burlar os <em>spiders</em> de busca, pois em seus algoritmos j&aacute; &eacute; previsto este tipo de pr&aacute;tica e, ao inv&eacute;s de &#8220;se dar bem&#8221;, seu <em>site</em> ser&aacute; severamente penalizado, podendo, no pior caso, ser <strong>banido</strong> do &iacute;ndice de resultados de procura dos buscadores.</p><h3>Meta tag &#8220;robots&#8221;</h3><p>A &#8220;robots&#8221; serve para, de certa maneira, controlar os <em>bots</em> de busca quanto &agrave; sua tarefa de indexa&ccedil;&atilde;o. Atrav&eacute;s dos diferentes valores poss&iacute;veis para seu conte&uacute;do, &eacute; poss&iacute;vel passar instru&ccedil;&otilde;es aos bots de busca para dizer qual o crit&eacute;rio de indexa&ccedil;&atilde;o foi escolhido para tal ou qual p&aacute;gina de seu site. Os valores mais comuns para esta meta tag s&atilde;o:</p><ul><li><strong>all.</strong> Valor padr&atilde;o, significa &#8220;vazio&#8221; &#8211; o rob&ocirc; de busca n&atilde;o recebe nenhuma informa&ccedil;&atilde;o;</li><li><strong>index.</strong> Os rob&ocirc;s de busca podem incluir a p&aacute;gina normalmente;</li><li><strong>follow.</strong> Rob&ocirc;s podem indexar a p&aacute;gina e ainda seguir os links para outras p&aacute;ginas que ela cont&eacute;m;</li><li><strong>noindex.</strong> Os links podem ser seguidos, mas a p&aacute;gina n&atilde;o &eacute; indexada;</li><li><strong>noFollow.</strong> A p&aacute;gina &eacute; indexada, mas os links n&atilde;o s&atilde;o seguidos;</li><li><strong>none.</strong> Os rob&ocirc;s podem ignorar a p&aacute;gina;</li><li><strong>noarchive</strong> (apenas GoogleBot). A p&aacute;gina n&atilde;o &eacute; arquivada.</li></ul><h2>Outras metatags</h2><p>Al&eacute;m das principais e mais conhecidas <em>meta-tags</em>, ainda existem outras que, embora de uma maneira diferente, t&ecirc;m seu devido valor e import&acirc;ncia. O uso delas pode auxiliar na performance e desempenho do <em>site</em>, ter rela&ccedil;&atilde;o com o tipo de conte&uacute;do voc&ecirc; publica e outras coisas.</p><h3>Meta tag &#8220;author&#8221;</h3><p>Serve para especificar e indicar quem &eacute; o autor da p&aacute;gina. Comumente, as ag&ecirc;ncias de <em>web</em> colocam seus nomes e endere&ccedil;os para seus <em>web sites</em> como valor desta <em>tag</em>. Teoricamente, isto aumenta o &iacute;ndice de visita&ccedil;&atilde;o dos <em>bots</em> de busca e aumenta o <em>pagerank</em>, consequentemente colocando a ag&ecirc;ncia em boas coloca&ccedil;&otilde;es nos mecanismos de busca.</p><p>Sinceramente, n&atilde;o sei se &eacute; verdade ou boato; de qualquer maneira, n&atilde;o custa nada e &eacute; justo colocar o nome e endere&ccedil;o virtual de quem fez a p&aacute;gina, n&atilde;o &eacute;?</p><h3>Meta tag &#8220;revisit-after&#8221;</h3><p>Ao contr&aacute;rio do que muitos pensam, esta meta tag <strong>n&atilde;o</strong> informa aos <em>bots</em> de busca com qual frequencia eles devem voltar ao site para reindexar os conte&uacute;dos (quando eles voltam &eacute; mais ou menos aleat&oacute;rio). Sua real fun&ccedil;&atilde;o &eacute; informar com qual frequencia os proxys devem refazer os chaches das p&aacute;ginas de seu web site.</p><p>Seu uso consiste em informar, em dias, o per&iacute;odo que voc&ecirc; deseja, <strong>em dias</strong>. Por exemplo:</p><p>&lt;meta name=&#8221;revisit-after&#8221; content=&#8221;7 days&#8221; /&gt;</p><p>N&atilde;o existe um &#8220;n&uacute;mero ideal&#8221; para se colocar na meta revisit-after; vai de cada caso. Se voc&ecirc; tem um <em>blog</em> ou <em>site</em> que &eacute; frequentemente atualizado, ent&atilde;o pode ser uma boa voc&ecirc; especificar um valor mais baixo. Se n&atilde;o atualiza muito seus conte&uacute;dos, pode ser um valor um pouco mais alto. Cada caso &eacute; um caso.</p><h3>Meta tag &#8220;expires&#8221;</h3><p>Esta <em>meta tag</em> indica a &#8220;data de validade&#8221; de uma p&aacute;gina <em>web</em>, quer dizer, indica quando uma p&aacute;gina ser&aacute; considerada como expirada. Se voc&ecirc; espeficicar &#8220;0&#8243; (zero) como valor, ent&atilde;o ele considera isso como &#8220;agora&#8221; (por isso essa <em>meta tag</em> &eacute; muito usada em dobradinha com a <strong>revisit-after</strong>).</p><p>Visite o <a
href="http://www.submitcorner.com/cgi-bin/tools/metagen.cgi">gerador de <em>meta tags</em></a> para gerar um valor adequado &agrave; meta expies, que &eacute; meio chatinha de calcular&#8230;</p><h2>Meta tags padr&atilde;o Doblin Core</h2><p>Assim como aconteceu com os <a
title="Mais sobre os microformatos." href="http://webinsider.uol.com.br/index.php/2006/01/16/microformats-aprenda-a-descrever-seus-dados/">microformatos</a>, no sentido de criar sua pr&oacute;pria marca&ccedil;&atilde;o, alguns desenvolvedores resolveram criar suas pr&oacute;prias <em>meta tags</em>. O mais conhecido e aceito antes a comunidade de desenvolvedores &eacute; o padr&atilde;o <strong>Doblin Core</strong>, que existe e &eacute; aprimorado h&aacute; mais de 10 anos!</p><p><a
title="P&aacute;gina oficial do Dublin Core." href="http://www.dublincore.org/">Visite o <em>web site</em> oficial do projeto Dublin Core</a> para saber mais informa&ccedil;&otilde;es a respeito e conhecer as <em>meta tags</em> DC que voc&ecirc; pode usar em suas p&aacute;ginas.</p><h2>Meta tags s&atilde;o importantes</h2><p>Saber utilizar as <em>meta tags</em> &eacute; importante para dar um <strong>ajuste fino</strong> ao <em>web site</em>. Saber usar corretamente e decidir qual <em>meta tag</em> usar e qual n&atilde;o usar em determinada p&aacute;gina, apesar de n&atilde;o parecer, pode fazer toda a diferen&ccedil;a para seu <em>web site</em>. Mas estas foram somente algumas das meta que existem; veja uma rela&ccedil;&atilde;o mais completa e detalhada nos seguintes endere&ccedil;os:</p><ul><li><a
href="http://developer.mozilla.org/pt/Utilizando_meta_tags">Mozilla developer center: utilizando meta tags</a>;</li><li><a
href="http://www.submitcorner.com/Guide/Meta/">Wired 2000: meta tag guide</a>;</li><li><a
href="http://www.html-reference.com/META.htm">HTML tag reference guide: &lt;META&gt;</a>.</li></ul><p>Guarde bem seus &#8220;meta conhecimentos&#8221;!  ;-)</p><h3  class="related_post_title">Artigos Relacionados</h3><ul
class="related_post"><li><a
href="http://desenvolvimentoparaweb.com/seo/erros-comuns-desenvolvimento-web-campanhas-seo/" title="Erros comuns em desenvolvimento web para campanhas de SEO">Erros comuns em desenvolvimento web para campanhas de SEO</a></li><li><a
href="http://desenvolvimentoparaweb.com/blogs/maneiras-praticas-para-melhorar-a-visitacao-de-seu-blog-e-fidelizar-seus-leitores/" title="Maneiras práticas para melhorar a visitação de seu blog e fidelizar seus leitores">Maneiras práticas para melhorar a visitação de seu blog e fidelizar seus leitores</a></li><li><a
href="http://desenvolvimentoparaweb.com/design/elementos-design-aplicados-web/" title="Elementos de design aplicados à web">Elementos de design aplicados à web</a></li><li><a
href="http://desenvolvimentoparaweb.com/javascript/json-javascript-object-notation/" title="JSON &#8211; JavaScript Object Notation">JSON &#8211; JavaScript Object Notation</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/estrategia-web-da-piramide-guia-estrategia-web-equilibrada/" title="Estratégia Web de Pirâmide: guia para uma estratégia de web equilibrada">Estratégia Web de Pirâmide: guia para uma estratégia de web equilibrada</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/breadcrumbs-guia-completo-exemplos-melhores-praticas/" title="Breadcrumbs: guia completo com exemplos e melhores práticas">Breadcrumbs: guia completo com exemplos e melhores práticas</a></li><li><a
href="http://desenvolvimentoparaweb.com/seo/6-mitos-seo-voce-deve-evitar/" title="6 mitos de SEO que você deve evitar">6 mitos de SEO que você deve evitar</a></li><li><a
href="http://desenvolvimentoparaweb.com/miscelanea/como-otimizar-imagens-web-internet/" title="Como otimizar imagens para web: guia de otimização de imagens">Como otimizar imagens para web: guia de otimização de imagens</a></li><li><a
href="http://desenvolvimentoparaweb.com/midia-social/mastering-twitter-o-manual-completo-sobre-twitter-para-desenvolvedores-e-marketeiros/" title="Mastering Twitter, o manual completo sobre twitter para desenvolvedores e marketeiros">Mastering Twitter, o manual completo sobre twitter para desenvolvedores e marketeiros</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/8-caracteristicas-de-user-interfaces-ui-de-sucesso/" title="8 características de User Interfaces (UI) de sucesso">8 características de User Interfaces (UI) de sucesso</a></li></ul>]]></content:encoded> <wfw:commentRss>http://desenvolvimentoparaweb.com/xhtml/meta-tags/feed/</wfw:commentRss> <slash:comments>19</slash:comments> </item> <item><title>Diferen&#231;as entre IDs e Classes</title><link>http://desenvolvimentoparaweb.com/css/diferencas-entre-ids-e-classes/</link> <comments>http://desenvolvimentoparaweb.com/css/diferencas-entre-ids-e-classes/#comments</comments> <pubDate>Fri, 18 Jul 2008 14:00:50 +0000</pubDate> <dc:creator>Tárcio Zemel</dc:creator> <category><![CDATA[css]]></category> <category><![CDATA[html]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[Análise]]></category> <category><![CDATA[Layout]]></category> <guid
isPermaLink="false">http://www.desenvolvimentoparaweb.com/?p=202</guid> <description><![CDATA[Aprenda a diferen&ccedil;a entre IDs e classes, usados em XHTML, CSS e javascript. Saber a diferen&ccedil;a entre classes e IDs evita erros b&aacute;sicos e permite desenvolver sites melhores]]></description> <content:encoded><![CDATA[<p>Principalmente quando no in&iacute;cio dos estudos sobre desenvolvimento para <em>web</em>, &eacute; comum haver confus&otilde;es entre IDs e Classes, t&atilde;o utilizados e necess&aacute;rios em XHTML, CSS e Javascript. V&aacute;rios tutoriais na <em>internet</em> explicam alguns pontos b&aacute;sicos e d&atilde;o certas orienta&ccedil;&otilde;es, mas nada muito aprofundado e esclarecedor. O resultado: as d&uacute;vidas persistem e a diferen&ccedil;a entre ID e Classe ainda n&atilde;o &eacute; &#8220;desvendada&#8221;. Com este artigo este &#8220;mist&eacute;rio&#8221; chega ao fim! ;-)</p><div
class="artigo-traduzido">Este &eacute; um artigo traduzido do original &#8220;<a
title="Ler o artigo original The Difference Between ID and Class." href="http://css-tricks.com/the-difference-between-id-and-class/">The Difference Between ID and Class</a>&#8220;, do blog <a
title="Visitar o CSS-Tricks." href="http://css-tricks.com/">CSS-Tricks</a>, e a tradu&ccedil;&atilde;o foi feita com autoriza&ccedil;&atilde;o do <a
title="Visitar o web site de Chris Coyier." href="http://chriscoyier.net/">autor</a>.</div><h2>IDs e classes s&atilde;o &#8220;anz&oacute;is&#8221;</h2><p>Precisamos de formas de descrever conte&uacute;dos em documentos HTML / XHTML. Os elementos b&aacute;sicos como &lt;h1&gt;, &lt;p&gt; e &lt;ul&gt; frequentemente fazer o trabalho, mas o conjunto b&aacute;sico de <em>tags</em> n&atilde;o abragen todas as possibilidades de elementos de p&aacute;gina ou escolhas de <em>layout</em>. Para isso, precisamos de <strong>IDs</strong> e <strong>Classes</strong>.</p><p>Por exemplo &lt;ul id=&#8221;nav&#8221;&gt;, isso d&aacute; a oportunidade de visar especificamente esta lista, ent&atilde;o h&aacute; uma maneira de manipular esta lista exclusivamente em rela&ccedil;&atilde;o a outras listas n&atilde;o-ordenadas da p&aacute;gina. Ou talvez tiv&eacute;ssemos uma se&ccedil;&atilde;o na p&aacute;gina que n&atilde;o possui uma <em>tag</em> relevante para signifcar, por exemplo, um rodap&eacute;, onde poder&iacute;amos fazer algo como &lt;div id=&#8221;footer&#8221;&gt;. Ou talvez tenhamos <em>boxes</em> na barra lateral para manter o conte&uacute;do separado de alguma forma: &lt;div class=&#8221;sidebar-box&#8221;&gt;.</p><p><img
src="http://desenvolvimentoparaweb.com/wp-content/uploads/2008/07/diferenca-id-classe-css-metafora-anzol.jpg" alt="Met&aacute;fora de classe XHTML em div: anzol" title="" width="570" height="150" class="aligncenter size-full wp-image-684" /></p><p>Esses IDs e classes s&atilde;o os &#8220;anz&oacute;is&#8221; que precisamos fazer na marca&ccedil;&atilde;o para colocarmos as m&atilde;os neles. CSS obviamente precisa disso para que possa fazer seletores e montar folhas de estilos, mas outras linguagens <em>web</em>, como <em>javascript</em>, tamb&eacute;m dependem deles. Mas quais as diferen&ccedil;as entre IDs e classes?</p><h2>IDs s&atilde;o &uacute;nicos</h2><ul><li>Cada elemento pode ter <strong>apenas um</strong> ID;</li><li>Cada p&aacute;gina pode ter apenas <strong>um elemento</strong> com aquele ID.</li></ul><p>Quando se est&aacute; aprendendo sobre isso, &eacute; comum ouvir que s&oacute; se deve usar IDs uma vez, mas &eacute; poss&iacute;vel usar uma classe v&aacute;rias vezes. Basicamente, isso entra num ouvido e sai no outro, porque soa mais como uma &#8220;regrinha&#8221; que algo realmente importante. Se voc&ecirc; trata somente com HTML / CSS, isso pode acontecer com voc&ecirc;, tamb&eacute;m, porque eles realmente n&atilde;o parecem fazer nada de diferente.</p><p>Aqui vai uma: <em>seu c&oacute;digo n&atilde;o vai passar pelo validador se voc&ecirc; usar o mesmo ID em mais de um elemento</em>. Valida&ccedil;&atilde;o deve ser importante para todos n&oacute;s, de modo que, por si s&oacute;, &eacute; algo muito importante. Adiante, mais raz&otilde;es pelas quais um ID deve ser &uacute;nico.</p><h2>Classes n&atilde;o s&atilde;o &uacute;nicas</h2><ul><li>Voc&ecirc; pode usar a <strong>mesma classe</strong> para v&aacute;rios elementos;</li><li>Voc&ecirc; pode usar <strong>v&aacute;rias classes para um mesmo elemento</strong>.</li></ul><p>Qualquer informa&ccedil;&atilde;o de estilo que precise ser aplicada a m&uacute;ltiplos elementos em uma p&aacute;gina deve ser feita com uma <strong>classe</strong>. Tomemos como uma exemplo uma p&aacute;gina com v&aacute;rios &#8220;<em>widgets</em>&#8220;:</p><div
class="wp_syntax"><div
class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;widget&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;widget&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;widget&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div><p>Agora, &eacute; poss&iacute;vel usar a mesma classe &#8220;widget&#8221; como gancho para aplicar o mesmo conjunto de estilos para cada um deles. Mas, e se for preciso ter um deles maior que os outros, mas continuar com um estilo que compartilhe dos outros atributos? &Eacute; poss&iacute;vel aplicar mais de uma classe a um elemento:</p><div
class="wp_syntax"><div
class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;widget&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;widget big&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;widget&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div><p>N&atilde;o h&aacute; necessidade de fazer e nomear uma nova classe aqui, apenas colocar o nome da nova classe no atributo <em>class</em>, juntamente com o nome da classe que j&aacute; est&aacute; l&aacute;. As diferentes classes s&atilde;o delimitadas por espa&ccedil;os e a maioria dos navegadores permite quaisquer n&uacute;meros delas (na verdade, &eacute; mais como <em>milhares</em>, o que &eacute; muito mais do que realmente &eacute; preciso).</p><h2>N&atilde;o existem padr&otilde;es de IDs e Classes em nenhum navegador</h2><p>Colocar um nome de classe ou ID em um elemento, por padr&atilde;o n&atilde;o faz nada a esse elemento.</p><p>Isso &eacute; algo que intriga quem &eacute; iniciante. Voc&ecirc; est&aacute; trabalhando em um <em>site</em> e descobre que a aplica&ccedil;&atilde;o de uma classe com um nome em particular resolve um problema que voc&ecirc; tem. Ent&atilde;o voc&ecirc; mexe em outro <em>site</em>, com o mesmo problema, e tenta corrig&iacute;-lo da mesma maneira, usando aquele mesmo nome de classe, pensando que o nome da classe, por si s&oacute;, tem alguma propriedade m&aacute;gica, apenas para descobrir que n&atilde;o funciona assim&#8230;</p><p>Classes e IDs n&atilde;o t&ecirc;m qualquer estilo por si mesmos. &Eacute; preciso CSS para orientar e aplicar estilos.</p><h2>C&oacute;digos de Barra e N&uacute;meros de S&eacute;rie</h2><p><img
src="http://desenvolvimentoparaweb.com/wp-content/uploads/2008/07/diferenca-id-classe-css-codigobarra-serial.jpg" alt="Exemplos de c&oacute;digo de barra e n&uacute;mero de s&eacute;rie." title="" width="570" height="150" class="aligncenter size-full wp-image-683" /></p><p>Talvez c&oacute;digos de barra e n&uacute;meros de s&eacute;rie sejam uma boa analogia. Tome um iPod, numa loja. Na embalagem h&aacute; um c&oacute;digo de barras. Ele indica &agrave; loja que produto &eacute; esse; ent&atilde;o, quando &eacute; escaneado, o c&oacute;digo de barras informa exatamente que produto &eacute; aquele e quanto custa. &Eacute; poss&iacute;vel saber at&eacute; sua cor e em qual lugar do armaz&eacute;m ele era mantido. Todos esses iPods t&ecirc;m exatamente o mesmo tipo de c&oacute;digo de barras.</p><p>O iPod tem tamb&eacute;m um n&uacute;mero de s&eacute;rie que &eacute; absolutamente &uacute;nico em rela&ccedil;&atilde;o a qualquer outro iPod (ou outro dispositivo) em todo o mundo. O n&uacute;mero de s&eacute;rie n&atilde;o informa o pre&ccedil;o. Poderia, mas para a loja que o vende esta n&atilde;o seria uma maneira eficaz de armazenar e utilizar essa informa&ccedil;&atilde;o. &Eacute; muito mais f&aacute;cil usar um c&oacute;digo de barras porque se, por exemplo, o pre&ccedil;o muda, &eacute; preciso apenas alterar o pre&ccedil;o para aquele c&oacute;digo de barras, e n&atilde;o para cada n&uacute;mero serial do sistema.</p><p>Isso &eacute; muito parecido com IDs e Classes. <strong>Informa&ccedil;&otilde;es que s&atilde;o reusadas devem ser mantidas em uma classe e informa&ccedil;&otilde;es que s&atilde;o totalmente &uacute;nicas devem ser mantidas em um ID.</strong></p><h2>IDs t&ecirc;m uma funcionalidade especial nos navegadores</h2><p>Classes n&atilde;o tem funcionalidades especiais no <em>browser</em>, mas IDs t&ecirc;m um truque muito especial na manga: um &#8220;valor de <em>hash</em>&#8221; para URLs. Se voc&ecirc; tiver um URL como http://seudominio.com#comments, o navegador vai tentar localizar o elemento com o id &#8220;comments&#8221; e vai automaticamente rolar a p&aacute;gina at&eacute; chegar nesse elemento.</p><p>&Eacute; importante observar que o <em>browser</em> vai rolar a p&aacute;gina at&eacute; onde quer que o elemento esteja; ent&atilde;o, se houver algo de especial, como uma DIV com barra de rolagem (propriedade CSS <em>overflow</em> com valor &#8220;auto&#8221; ou &#8220;scroll&#8221;), esta barra de rolagem vai ser deslocada &#8211; rolar para baixo -, tamb&eacute;m.</p><p>Esta &eacute; uma raz&atilde;o importante sobre o porqu&ecirc; &eacute; importante ter um ID absolutamente &uacute;nico. Com isso, o navegador sabe at&eacute; quando rolar.</p><h2>Elementos podem ter ambos, ID e Classes</h2><p>Nada para voc&ecirc; quando voc&ecirc; usa ambos, ID e classes em um &uacute;nico elemento. Na verdade, fazer isso na maioria das vezes &eacute; uma boa id&eacute;ia. Tomemos como exemplo o padr&atilde;o de marca&ccedil;&atilde;o para item de lista de um coment&aacute;rio no WordPress:</p><div
class="wp_syntax"><div
class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;comment-27299&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;item&quot;</span>&gt;</span></pre></div></div><p>Tem uma classe que foi aplicada que talvez se queira usar para estilizar todos os coment&aacute;rios na p&aacute;gina, mas tamb&eacute;m h&aacute; um &uacute;nico valor de ID (dinamicamente gerado pelo WordPress). Com isso, &eacute; facilmente poss&iacute;vel fazer um <em>link</em> diretamente a um coment&aacute;rio, em uma p&aacute;gina, em especial.</p><h2>CSS n&atilde;o se importa</h2><p>Quanto ao CSS, <strong>n&atilde;o h&aacute; nada que voc&ecirc; possa fazer com um ID que n&atilde;o possa fazer com uma Classe e vice-versa</strong>. &Agrave;s vezes, quando se est&aacute; iniciando no estudo de CSS e se tem um problema, tenta-se alternar entre usar ID ou usar Classe. O CSS n&atilde;o se importa.</p><h2>Javascript se importa</h2><p>Aqueles que mexem com <em>javascript</em> provavelmente j&aacute; est&atilde;o mais em sintonia entre as diferen&ccedil;as entre as Classes e IDs. <em>Javascript</em> depende da exist&ecirc;ncia de um elemento de p&aacute;gina com ID &uacute;nico, ou ent&atilde;o a comumente utilizada fun&ccedil;&atilde;o <a
title="Mais sobre getElementById, no W3Schools." href="http://www.w3schools.com/HTMLDOM/met_doc_getelementbyid.asp">getElementById</a> n&atilde;o seria confi&aacute;vel. Aqueles acostumados com <a
title="Todos artigos sobre jQuery do desenvolvimento para web." href="http://www.desenvolvimentoparaweb.com/category/jquery/">jQuery</a> sabem o qu&atilde;o f&aacute;cil &eacute; adicionar e remover classes de elementos de p&aacute;gina. &Eacute; uma fun&ccedil;&atilde;o nativa no jQuery. Veja que tal fun&ccedil;&atilde;o n&atilde;o existe para IDs. N&atilde;o &eacute; responsabilidade do <em>javascript</em> manipular estes valores, porque ele causaria mais problemas que seria &uacute;til&#8230;</p><h2>Se voc&ecirc; n&atilde;o precisa deles, n&atilde;o os use</h2><p>Como voc&ecirc; pode ver, classes e IDs s&atilde;o muito importantes e n&oacute;s os utilizamos todos os dias para estilizar p&aacute;ginas e manipular aquilo que &eacute; preciso. Entretanto, voc&ecirc; deve us&aacute;-los com crit&eacute;rio e semanticamente.</p><p>Isto significa evitar coisas do tipo:</p><div
class="wp_syntax"><div
class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://css-tricks.com&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;link&quot;</span>&gt;</span>CSS-Tricks.com<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span></pre></div></div><p>J&aacute; sabemos: este elemento &eacute; um <em>link</em>, &eacute; um elemento &acirc;ncora. N&atilde;o h&aacute; nada de especial aqui a ponto de ser preciso especificar uma classe, j&aacute; que &eacute; poss&iacute;vel aplicar o estilo na pr&oacute;pria tag (&#8220;a&#8221;).</p><p>Evite este tipo de coisa, tamb&eacute;m:</p><div
class="wp_syntax"><div
class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;coluna-direita&quot;</span>&gt;</span></pre></div></div><p>O ID &eacute; corretamente utilizado aqui, j&aacute; que, provavelmente, a p&aacute;gina ter&aacute; somente uma &uacute;nica coluna da direita, mas o nome &eacute; inadequado. Descreva o contexto do elemento, n&atilde;o onde est&aacute; ou como se parece. Um ID &#8220;barra-lateral&#8221; seria melhor.</p><h2>Microformatos s&atilde;o apenas nomes espec&iacute;ficos de classes</h2><p>Pensa que <a
title="P&aacute;gina oficial dos microformatos." href="http://microformats.org/">microformatos</a> &eacute; dif&iacute;cil para voc&ecirc;? Microformato &eacute; apenas marca&ccedil;&atilde;o regular que faz uso de nomes de classes padronizados para a informa&ccedil;&atilde;o que cont&ecirc;m. Veja este vCard:</p><div
class="wp_syntax"><div
class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;vcard&quot;</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;fn org url&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.commerce.net/&quot;</span>&gt;</span>CommerceNet<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;adr&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;type&quot;</span>&gt;</span>Work<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span>:
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;street-address&quot;</span>&gt;</span>169 University Avenue<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;locality&quot;</span>&gt;</span>Palo Alto<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span>,
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">abbr</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;region&quot;</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;California&quot;</span>&gt;</span>CA<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">abbr</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;postal-code&quot;</span>&gt;</span>94301<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;country-name&quot;</span>&gt;</span>USA<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;tel&quot;</span>&gt;</span>
   <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;type&quot;</span>&gt;</span>Work<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span> +1-650-289-4040
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;tel&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;type&quot;</span>&gt;</span>Fax<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span> +1-650-289-4041
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span>&gt;</span>Email:
   <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;email&quot;</span>&gt;</span>info@commerce.net<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div><h3  class="related_post_title">Artigos Relacionados</h3><ul
class="related_post"><li><a
href="http://desenvolvimentoparaweb.com/design/elementos-design-aplicados-web/" title="Elementos de design aplicados à web">Elementos de design aplicados à web</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/wireframe-web-guia-completo/" title="Wireframes para web: guia completo de desenvolvimento">Wireframes para web: guia completo de desenvolvimento</a></li><li><a
href="http://desenvolvimentoparaweb.com/design/10-erros-basicos-de-web-design/" title="10 erros básicos de web design">10 erros básicos de web design</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/4-elementos-design-call-to-action/" title="4 elementos de design para um bom call to action">4 elementos de design para um bom call to action</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/user-interface-dicas-rapidas/" title="User Interface em dicas rápidas">User Interface em dicas rápidas</a></li><li><a
href="http://desenvolvimentoparaweb.com/miscelanea/10-dicas-desenvolvedores-web-iniciantes-devem-saber/" title="10 dicas que desenvolvedores web iniciantes devem saber">10 dicas que desenvolvedores web iniciantes devem saber</a></li><li><a
href="http://desenvolvimentoparaweb.com/javascript/json-javascript-object-notation/" title="JSON &#8211; JavaScript Object Notation">JSON &#8211; JavaScript Object Notation</a></li><li><a
href="http://desenvolvimentoparaweb.com/css/urls-longas-apresentadas-corretamente-com-css/" title="URLs longas apresentadas corretamente com CSS">URLs longas apresentadas corretamente com CSS</a></li><li><a
href="http://desenvolvimentoparaweb.com/miscelanea/novas-tecnologias-exigem-novas-maneiras-de-se-comunicar/" title="Novas tecnologias exigem novas maneiras de se comunicar">Novas tecnologias exigem novas maneiras de se comunicar</a></li><li><a
href="http://desenvolvimentoparaweb.com/seo/erros-comuns-desenvolvimento-web-campanhas-seo/" title="Erros comuns em desenvolvimento web para campanhas de SEO">Erros comuns em desenvolvimento web para campanhas de SEO</a></li></ul>]]></content:encoded> <wfw:commentRss>http://desenvolvimentoparaweb.com/css/diferencas-entre-ids-e-classes/feed/</wfw:commentRss> <slash:comments>26</slash:comments> </item> </channel> </rss>
