<?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; javascript</title> <atom:link href="http://desenvolvimentoparaweb.com/categoria/javascript/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>JSON &#8211; JavaScript Object Notation</title><link>http://desenvolvimentoparaweb.com/javascript/json-javascript-object-notation/</link> <comments>http://desenvolvimentoparaweb.com/javascript/json-javascript-object-notation/#comments</comments> <pubDate>Wed, 22 Jun 2011 13:16:57 +0000</pubDate> <dc:creator>Tárcio Zemel</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[php]]></category> <category><![CDATA[Análise]]></category> <category><![CDATA[Conteúdo]]></category> <category><![CDATA[Exemplos]]></category> <guid
isPermaLink="false">http://desenvolvimentoparaweb.com/?p=662</guid> <description><![CDATA[JSON - JavaScript Object Notation - &eacute; uma das principais nota&ccedil;&otilde;es para interc&acirc;mbio de dados entre aplicativos. Saiba mais e veja exemplos e ferramentas.]]></description> <content:encoded><![CDATA[<p
style="text-align: center;"><img
class="aligncenter size-full wp-image-663" src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/08/json-javascript-object-notation.jpg" alt="JSON - JavaScript Object Notation" width="160" height="243" /></p><p>J&aacute; n&atilde;o &eacute; nenhuma novidade no mundo de <a
title="desenvolvimento para web" href="http://desenvolvimentoparaweb.com/">desenvolvimento web</a> o uso e abuso da tecnologia <strong>JSON</strong>. Entretanto, nem todos conhecem este padr&atilde;o de interc&acirc;mbio facilitado de dados entre aplica&ccedil;&otilde;es. N&atilde;o &eacute; obrigat&oacute;rio, mas saber JSON pode ser bastante &uacute;til em projetos um pouco mais sofisticados e/ou que necessitam de uma demanda/pol&iacute;tica de transfer&ecirc;ncia de dados mais simples, leve e eficiente.</p><p>Usar JSON proporciona in&uacute;meras vantagens ao desenvolvedor web. Desde a simplicidade em tratar os dados &agrave; maneira f&aacute;cil como &eacute; poss&iacute;vel integrar tecnologias <em>client-side</em> com <em>server-side</em>, o JSON certamente &eacute; bastante recomendado.</p><h2>O que &eacute; e para que serve JSON</h2><p>JSON &eacute; o acr&ocirc;nimo para &#8220;<strong>JavaScript  Object  Notation</strong>&#8220;. Como &eacute; poss&iacute;vel notar pelo nome, originalmente o JSON foi concebido para se trabalhar com javascript, mas, j&aacute; adiantando, n&atilde;o &eacute; necessariamente obrigat&oacute;rio o uso de javascript para seu uso, dado que, atualmente, &eacute; poss&iacute;vel utilizar JSON com mais de 20 linguagens de programa&ccedil;&atilde;o diferentes.</p><p>Uma defini&ccedil;&atilde;o interessante &eacute; a do Wiki&eacute;dia:</p><blockquote><p>JSON (com a pronuncia djeis&oacute;n), um acr&ocirc;nimo para &#8220;JavaScript  Object  Notation&#8221;, &eacute; um formato leve para interc&acirc;mbio de dados computacionais. JSON &eacute; um subconjunto da nota&ccedil;&atilde;o de objeto de JavaScript, mas seu uso n&atilde;o requer javascript, exclusivamente.</p><p>O formato JSON foi originalmente criado por Douglas Crockford e &eacute; descrito no <a
href="http://tools.ietf.org/html/rfc4627">RFC 4627</a>. O media-type oficial do JSON &eacute;<em> application/json</em> e a extens&atilde;o &eacute; <em>.json</em>.</p></blockquote><p>Mas uma defini&ccedil;&atilde;o que explica, de forma bem mais simples e objetiva, &eacute; a de <a
href="http://blog.thiagobelem.net/">Tiago Belem</a>, em seu artigo &#8220;<a
href="http://blog.thiagobelem.net/php/introducao-a-json-e-php-webservices/">Introdu&ccedil;&atilde;o a JSON e PHP</a>&#8220;, no qual consta que</p><blockquote><p>JSON &eacute; um padr&atilde;o de formata&ccedil;&atilde;o de dados que ser&atilde;o transmitidos entre duas aplica&ccedil;&otilde;es de linguagens diferentes.</p></blockquote><p>Quer dizer, JSON &eacute; usado, principalmente, para <strong>permitir a troca de dados entre linguagens</strong>. Mas n&atilde;o s&oacute; isso, ele tamb&eacute;m &eacute; &oacute;timo para lidar com <em>webservices</em> e tem muitos outros usos.</p><h2>Vantagens em se usar JSON</h2><p>A descri&ccedil;&atilde;o de dados em JSON &eacute; bem f&aacute;cil, n&atilde;o passando de um documento de texto puro disposto em um padr&atilde;o simples. Conforme foi explicado, JSON &eacute; excelente para interc&acirc;mbio de informa&ccedil;&otilde;es entre aplicativos.</p><p>Mas tamb&eacute;m existem outras maneiras de se fazer isso, por exemplo, com <strong>XML</strong>. Entretanto, o JSON apresenta vantagens bastante interessantes, o que, ap&oacute;s uma an&aacute;lise do caso de seu aplicativo ou sistema web, pode lev&aacute;-lo a optar por ele. Algumas das vantagens s&atilde;o:</p><ul><li>Sintaxe simples, de f&aacute;cil aprendizado e implementa&ccedil;&atilde;o;</li><li>Tamanho do arquivo bem menor em rela&ccedil;&atilde;o a outras &#8220;linguagens intermedi&aacute;rias&#8221;, tais como XML;</li><li>Facilidade de desenvolvimento e alto desempenho nas aplica&ccedil;&otilde;es que o utilizam.</li></ul><h2>Estruturas JSON</h2><p>&Eacute; poss&iacute;vel ver alguns diagramas das estruturas no pr&oacute;prio <a
href="http://www.json.org/">site oficial do JSON</a>; basicamente, &eacute; o seguinte:</p><p><img
src="http://desenvolvimentoparaweb.com/wp-content/uploads/2011/06/json-estruturas-objeto-array-valor.gif" alt="JSON: estruturas" title="" width="500" height="440" class="aligncenter size-full wp-image-708" /></p><p>Vamos ver, ent&atilde;o, como podemos descrever dados simples usando o que a sintaxe que ele nos oferece.</p><h3>Arrays</h3><p>Por exemplo, vamos ver como seria um array dos dias da semana:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;Domingo&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Segunda&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Terça&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Quarta&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Quinta&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Sexta&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Sábado&quot;</span><span style="color: #009900;">&#93;</span></pre></div></div><p>Perceba que strings devem ser indicadas com aspas duplas.</p><p>Elementos separados por v&iacute;rgulas entre colchetes &eacute; a nota&ccedil;&atilde;o JSON para um array (naturalmente, a v&iacute;rgula delimita cada item). A maioria dos desenvolvedores prefere identar um pouco o c&oacute;digo para facilitar a leitura:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#91;</span>
	<span style="color: #3366CC;">&quot;Domingo&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Segunda&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Terça&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Quarta&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Quinta&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Sexta&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Sábado&quot;</span>
<span style="color: #009900;">&#93;</span></pre></div></div><p>&Eacute; poss&iacute;vel, tamb&eacute;m, misturar diversos tipos de dados em um s&oacute; array:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#91;</span>
	<span style="color: #CC0000;">33</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Segunda&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #003366; font-weight: bold;">TRUE</span><span style="color: #339933;">,</span>
	<span style="color: #CC0000;">3.14159265</span><span style="color: #339933;">,</span>
        <span style="color: #003366; font-weight: bold;">NULL</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;ma&amp;ccedil;&amp;atilde;&quot;</span>
<span style="color: #009900;">&#93;</span></pre></div></div><h3>Objetos</h3><p>Como vimos, arrays s&atilde;o representados por colcechetes. No caso de objetos, estes s&atilde;o representados por chaves; cada chave &eacute; identificada por uma string e, depois de um dois-pontos, os valores de cada item especificados. Fica mais claro com um exemplo:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>
	<span style="color: #3366CC;">&quot;Domingo&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Folga&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Segunda&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Viagem&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Terça&quot;</span>   <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Pagamentos&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Quarta&quot;</span>  <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Piscina&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Quinta&quot;</span>  <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Churrasco&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Sexta&quot;</span>   <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Carteado&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Sábado&quot;</span>  <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Festa&quot;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><p>Perceba que n&atilde;o tem import&acirc;ncia haver espa&ccedil;os a mais ou a menos entre a descri&ccedil;&atilde;o da chave, o separador &#8220;:&#8221; e o valor desta. Tudo ser&aacute; interpretado corretamente.</p><h3>Alguns exemplos</h3><p>&Eacute; bastante simples descrever JSON, voc&ecirc; viu. Como os objetos de qualquer outra linguagem de programa&ccedil;&atilde;o, &eacute; poss&iacute;vel armazenar quaisquer tipos de dados e quantos dados se desejar. Veja este exemplo:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>
    <span style="color: #3366CC;">&quot;Marconildo&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.marconildo.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">34</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Joanorta&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.joanorta.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">22</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Estripafurgia&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.estripafurgia.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">47</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><p>Perceba que, neste caso, cada objeto possui, &#8220;url&#8221; e &#8220;idade&#8221; (provavelmente este n&atilde;o seria um exemplo &#8220;da vida real&#8221;, mas d&aacute; para ilustrar bem o conceito), mas, n&atilde;o necessariamente, todos devem possuir o mesmo n&uacute;mero de propriedades. Poderia haver um ou mais elementos com &#8220;url&#8221;, &#8220;idade&#8221;, &#8220;altura&#8221;, &#8220;endereco&#8221;, etc. &Eacute; poss&iacute;vel, inclusive, a utiliza&ccedil;&atilde;o de arrays:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>
    <span style="color: #3366CC;">&quot;Marconildo&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.marconildo.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">34</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Joanorta&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.joanorta.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">22</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Estripafurgia&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.estripafurgia.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">47</span><span style="color: #339933;">,</span>
    	<span style="color: #3366CC;">&quot;diasDeTrabalho&quot;</span><span style="color: #339933;">:</span>
	 <span style="color: #009900;">&#91;</span>
	     <span style="color: #3366CC;">&quot;Segunda&quot;</span><span style="color: #339933;">,</span>
	     <span style="color: #3366CC;">&quot;Quarta&quot;</span><span style="color: #339933;">,</span>
	     <span style="color: #3366CC;">&quot;Sexta&quot;</span>
	 <span style="color: #009900;">&#93;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><p>E, at&eacute;, um array de objetos!</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>
    <span style="color: #3366CC;">&quot;Marconildo&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.marconildo.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">34</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Joanorta&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.joanorta.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">22</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Estripafurgia&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.estripafurgia.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">47</span><span style="color: #339933;">,</span>
    	<span style="color: #3366CC;">&quot;dependentes&quot;</span><span style="color: #339933;">:</span>
    	<span style="color: #009900;">&#91;</span>
    	    <span style="color: #3366CC;">&quot;Astolfinho&quot;</span><span style="color: #339933;">:</span>
	    <span style="color: #009900;">&#123;</span>
	        <span style="color: #3366CC;">&quot;sexo&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;m&quot;</span><span style="color: #339933;">,</span>
	        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">16</span>
	    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    	    <span style="color: #3366CC;">&quot;Mariazinha&quot;</span><span style="color: #339933;">:</span>
	    <span style="color: #009900;">&#123;</span>
	        <span style="color: #3366CC;">&quot;sexo&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;f&quot;</span><span style="color: #339933;">,</span>
	        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span>
	    <span style="color: #009900;">&#125;</span>
    	<span style="color: #009900;">&#93;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><h2>JSON e javascript</h2><p>Agora voc&ecirc; j&aacute; aprendeu as nota&ccedil;&otilde;es b&aacute;sicas do JSON, mas o que fazer com isso, como usar, efetivamente, o poder do JSON nas aplica&ccedil;&otilde;es do dia-a-dia usando javascript? Veja um exemplo simples:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> funcionarios <span style="color: #339933;">=</span> <span style="color: #3366CC;">'
	{
	    &quot;Marconildo&quot;:
	    {
	        &quot;url&quot;: &quot;http://www.marconildo.com.br/&quot;,
	        &quot;idade&quot;: 34
	    },
	    &quot;Joanorta&quot;:
	    {
	        &quot;url&quot;: &quot;http://www.joanorta.com.br/&quot;,
	        &quot;idade&quot;: 22
	    },
	    &quot;Estripafurgia&quot;:
	    {
	        &quot;url&quot;: &quot;http://www.estripafurgia.com.br/&quot;,
	        &quot;idade&quot;: 47
	    }
	}
'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> funcionario <span style="color: #339933;">=</span> JSON.<span style="color: #660066;">parse</span><span style="color: #009900;">&#40;</span>funcionarios<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>funcionario.<span style="color: #660066;">Marconildo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>funcionario.<span style="color: #660066;">Marconildo</span>.<span style="color: #660066;">idade</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>Foi criada a vari&aacute;vel &#8220;funcionarios&#8221; e colocado uma string JSON nela. Usando a fun&ccedil;&atilde;o <a
rel="nofollow" href="http://msdn.microsoft.com/en-us/library/cc836466(v=vs.94).aspx">JSON.parse</a>, convertemos a string para, efetivamente, JSON na vari&aacute;vel &#8220;funcionario&#8221;e, a partir da&iacute;, foi poss&iacute;vel acessar todas suas propriedades com a nota&ccedil;&atilde;o padr&atilde;o de OO.</p><p>Esse foi um exemplo ilustrativo. Em aplica&ccedil;&otilde;es &#8220;de verdade&#8221;, seria bastante eficiente, por exemplo, realizar requisi&ccedil;&otilde;es em AJAX para procurar retornos em JSON e, a partir da&iacute;, realizar quaisquer tipos de opera&ccedil;&atilde;o com o <em>data</em> retornado. Trataremos disso em artigos futuros. <a
href="http://desenvolvimentoparaweb.com/feed">Assine o feed</a> para conferir.</p><h3>$.getJSON</h3><p>O jQuery possui uma poderosa ferramenta para trabalharmos com JSON, &eacute; a fun&ccedil;&atilde;o <a
href="http://api.jquery.com/jQuery.getJSON/">$.getJSON</a>, que serve para carregar dados no formato JSON usando requisi&ccedil;&atilde;o HTTP <strong>GET</strong>. Na verdade, esta fun&ccedil;&atilde;o &eacute; somente uma esp&eacute;cie de atalho para <a
href="http://api.jquery.com/jQuery.ajax/">$.ajax()</a> usando &#8220;json&#8221; no dataType, mas us&aacute;-la num contexto JSON fica bastante coerente.</p><p>N&atilde;o h&aacute; mist&eacute;rio algum para usar, ele segue a mesma &#8220;linha&#8221; do $.ajax(), como podemos encontrar neste exemplo disponibilizado no pr&oacute;prio site do jQuery:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;">$.<span style="color: #660066;">getJSON</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ajax/test.json'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> items <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
  $.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span>data<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>key<span style="color: #339933;">,</span> val<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    items.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;li id=&quot;'</span> <span style="color: #339933;">+</span> key <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&quot;&gt;'</span> <span style="color: #339933;">+</span> val <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/li&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;ul/&gt;'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #3366CC;">'class'</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'my-new-list'</span><span style="color: #339933;">,</span>
    html<span style="color: #339933;">:</span> items.<span style="color: #660066;">join</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">appendTo</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'body'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>E, <a
href="http://onwebdev.blogspot.com/2011/08/jquery-testing-remote-json-data-with.html">como nos mostra Gabriele Romanato</a>, &eacute; poss&iacute;vel verificar se o resultado da requisi&ccedil;&atilde;o &eacute; realmente um objeto JSON de maneira simples:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;">$.<span style="color: #660066;">getJSON</span><span style="color: #009900;">&#40;</span>url<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>data<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;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span> data <span style="color: #339933;">!==</span> <span style="color: #3366CC;">'object'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Erro!</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><p>Dessa maneira, &eacute; poss&iacute;vel economizar bastante tempo ao procurar erros e a estrutura de c&oacute;digo fica mais profissional e mais facilmente manuten&iacute;vel.</p><h2>JSON e PHP</h2><p>O PHP tamb&eacute;m possui algumas <a
href="http://www.php.net/manual/en/ref.json.php">fun&ccedil;&otilde;es para se trabalhar com JSON</a>. Vamos a um exemplo simples de como gerar PHP a partir de JSON:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$funcionarios</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'
	{
	    &quot;Marconildo&quot;:
	    {
	        &quot;url&quot;: &quot;http://www.marconildo.com.br/&quot;,
	        &quot;idade&quot;: 34
	    },
	    &quot;Joanorta&quot;:
	    {
	        &quot;url&quot;: &quot;http://www.joanorta.com.br/&quot;,
	        &quot;idade&quot;: 22
	    },
	    &quot;Estripafurgia&quot;:
	    {
	        &quot;url&quot;: &quot;http://www.estripafurgia.com.br/&quot;,
	        &quot;idade&quot;: 47
	    }
	}
'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$funcionario</span> <span style="color: #339933;">=</span> <span style="color: #990000;">json_decode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$funcionarios</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$funcionario</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Marconildo</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;br /&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$funcionario</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Marconildo</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">idade</span><span style="color: #339933;">;</span></pre></div></div><p>Bem simples, bem direto, dispensa explica&ccedil;&otilde;es. Agora, se voc&ecirc; preferir tratar o JSON como se fosse array, basta inserir um segundo par&acirc;metro &agrave; fun&ccedil;&atilde;o, dessa maneira:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$funcionario</span> <span style="color: #339933;">=</span> <span style="color: #990000;">json_decode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$funcionarios</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><h2>Ferramentas JSON</h2><p>JSON &eacute; bastante simples e intuitivo para qualquer programador, mas, para quem est&aacute; come&ccedil;ando a mexer agora e/ou para os que precisam de algumas <strong>ferramentas para JSON</strong>, segue o link de alguns parser, validadores e ferramentas, em geral, para se trabalhar com JSON:</p><ul><li><a
href="http://json.parser.online.fr/">Json Parser Online</a></li><li><a
href="http://jsonlint.com/">JSONLint &#8211; The JSON Validator</a></li><li><a
href="http://jsonviewer.stack.hu/">Online JSON Viewer</a></li><li><a
href="http://www.jollydroll.com/tools/json">Convert JSON Strings to a Friendly Readable Format</a></li></ul><h2>Conclus&atilde;o sobre JSON</h2><p>Uma das principais funcionalidades do JSON &eacute; o <strong>interc&acirc;mbio de dados entre aplicativos e linguagens diferentes</strong>. Sua sintaxe simples, sua leveza e objetividade, aliados ao suporte por dezenas de linguagens de progrma&ccedil;&atilde;o o tornam uma excelente alternativa quando a necessidade &eacute; esta. O fato de milhares de <em>webservices</em> de qualidade usarem JSON deve ser um bom indicativo de que us&aacute;-lo &eacute; uma boa escolha.</p><p>Usando as ferramentas apresentas, &eacute; poss&iacute;vel validar seu JSON, test&aacute;-lo, verificar se est&aacute; produzindo uma hierarquia correta, enfim, aperfei&ccedil;oar e refinar o c&oacute;digo para que atinja o m&aacute;ximo poss&iacute;vel de desempenho. Ao se trabalhar com JSON, logo se percebe seu poder e simplicidade, o que agiliza bastante o processo de programa&ccedil;&atilde;o, ao mesmo tempo em que o formato n&atilde;o se torna um empecilho &agrave; produtividade; pelo contr&aacute;rio, a aprimora!</p><p>Por essas e outras a nota&ccedil;&atilde;o <strong>JavaScript Object Notation</strong>, mais conhecida como <strong>JSON</strong>, &eacute; altamente recomendada para desenvolvimento web!</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/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/miscelanea/perguntas-cliente-antes-depois-projeto/" title="Perguntas ao cliente para antes e depois de um projeto">Perguntas ao cliente para antes e depois de um projeto</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/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><li><a
href="http://desenvolvimentoparaweb.com/jquery/como-criar-sumarios-dinamicamente-com-o-toc-table-of-contents-jquery-plugin-jquerytoc/" title="Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin">Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/web-sites-e-comunicacao-21-maneiras-de-os-sites-se-comunicarem-com-seus-visitantes/" title="Web sites e comunicação: 21 maneiras de os sites se comunicarem com seus visitantes">Web sites e comunicação: 21 maneiras de os sites se comunicarem com seus visitantes</a></li><li><a
href="http://desenvolvimentoparaweb.com/xhtml/meta-tags/" title="Meta tags">Meta tags</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></ul>]]></content:encoded> <wfw:commentRss>http://desenvolvimentoparaweb.com/javascript/json-javascript-object-notation/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> <item><title>Melhores editores WYSIWYG para seu projeto</title><link>http://desenvolvimentoparaweb.com/javascript/melhores-editores-wysiwyg-para-seu-projeto/</link> <comments>http://desenvolvimentoparaweb.com/javascript/melhores-editores-wysiwyg-para-seu-projeto/#comments</comments> <pubDate>Tue, 01 Jun 2010 13:00:31 +0000</pubDate> <dc:creator>Tárcio Zemel</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[Análise]]></category> <category><![CDATA[Ferramentas]]></category> <category><![CDATA[UX]]></category> <guid
isPermaLink="false">http://desenvolvimentoparaweb.com/?p=629</guid> <description><![CDATA[Os melhores editores WYSIWYG para seu projeto ir para o pr&oacute;ximo n&iacute;vel!]]></description> <content:encoded><![CDATA[<p><img
class="aligncenter size-full wp-image-640" src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/05/wysiwyg-melhores-editores-melhor-editor-wysiwyg.jpg" alt="WYSIWYG: melhores editores" width="200" height="200" /></p><p>Para quem est&aacute; acostumado a utilizar CMSs em desenvolvimento web, deparar-se com um <strong>editor WYSIWYG</strong> para p&aacute;ginas e artigos &eacute; algo banal. Para desenvolvimento de softwares desde o in&iacute;cio, &eacute; preciso implementar um desses editores e, com tantas op&ccedil;&otilde;es dispon&iacute;veis no mercado, a escolha pode se tornar complicada&#8230; Para isso, confira os 10 melhores editores WYSIWYG para seu pr&oacute;ximo projeto!</p><div
class="artigo-traduzido">Este &eacute; um artigo traduzido do original &#8220;<a
href="http://www.1stwebdesigner.com/resources/10-best-wysiwyg-text-and-html-editors-for-your-next-project/">10 best WYSIWYG Text and HTML Editors for Your Next Project</a>&#8220;, do <em>blog</em> <a
href="http://www.1stwebdesigner.com/resources/10-best-wysiwyg-text-and-html-editors-for-your-next-project/">Graphic and Web Design Blog</a>, e sofreu algumas adapta&ccedil;&otilde;es.</div><h2>NicEdit</h2><p><a
href="http://nicedit.com/download.php"><img
class="size-full wp-image-635 aligncenter" src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/05/melhores-editores-wysiwyg-nicedit.jpg" alt="Melhores editores WYSIWYG: NicEdit" width="503" height="93" /></a></p><p>NicEdit &eacute; uma alternativa para algumas maiores e mais complexos editores WYSIWYG existentes, com seu pequeno tamanho de download. Ele possui muitos dos recursos esperados por esse tipo de editor e se integra facilmente em seu site ou software.</p><h2>TinyMCE</h2><p
style="text-align: center;"><a
href="http://tinymce.moxiecode.com/download.php"><img
class="size-full wp-image-638 aligncenter" src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/05/melhores-editores-wysiwyg-tinymce.jpg" alt="Melhores editores WYSIWYG: TinyMCE" width="561" height="186" /></a></p><p>TinyMCE &eacute; um editor WYSIWYG  javascript HTML open source. &Eacute; f&aacute;cil de integrar e &eacute; altamente personaliz&aacute;vel com temas e plugins. TinyMCE &eacute; um dos mais completo editores, oferecendo uma experi&ecirc;ncia semelhante a editores instal&aacute;veis, como BrOffice e MS Word.</p><h2>CKEditor</h2><p
style="text-align: center;"><a
href="http://ckeditor.com/download"><img
class="size-full wp-image-630 aligncenter" src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/05/melhores-editores-wysiwyg-ckeditor.jpg" alt="Melhores editores WYSIWYG: " width="536" height="288" /></a></p><p>CKeditor &eacute; o novo FCKEditor, consagrado editor para os desenvolvedores mais veteranos e l&iacute;der de mercado anteriormente. Baseando-se nisso, o CKEditor promete ser um editor ainda melhor, j&aacute; que fez melhor o que era considerado falho em seu antecessor.</p><h2>YUI Rich Text Editor</h2><p
style="text-align: center;"><a
href="http://developer.yahoo.com/yui/download/"><img
class="aligncenter size-full wp-image-639" src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/05/melhores-editores-wysiwyg-yui-rich-texteditor.jpg" alt="Melhores editores WYSIWYG: YUI Rich Text Editor" width="485" height="351" /></a></p><p>O YUI Rich Text Editor &eacute; um controle UI do Yahoo que transforma textareas em <strong>editores WYSIWYG completos</strong>. Ele vem em v&aacute;rias vers&otilde;es diferentes, com diferentes caracter&iacute;sticas e complexidade, mas ainda consegue atingir uma grande experi&ecirc;ncia do usu&aacute;rio sem uma infinidade de bot&otilde;es se aglomerando na interface.</p><h2>MarkItUp!</h2><p
style="text-align: center;"><a
href="http://markitup.jaysalvat.com/downloads/"><img
class="aligncenter size-full wp-image-633" src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/05/melhores-editores-wysiwyg-markitup.jpg" alt="Melhores editores WYSIWYG: MarkItUp!" width="563" height="297" /></a></p><p>Markitup &eacute; um plugin para jQuery que permite que voc&ecirc; transforme textareas em editores de marca&ccedil;&atilde;o com qualquer marcadores que voc&ecirc; quiser: HTML, Sintaxe Wiki e BBcode s&atilde;o apenas algumas que s&atilde;o suportadas. MarkItUp! n&atilde;o &eacute; um editor WYSIWYG, propriamente dito, mas oferece todas as caracter&iacute;sticas b&aacute;sicas esperadas de um.</p><h2>FreeTextBox</h2><p
style="text-align: center;"><a
href="http://freetextbox.com/download/"><img
class="aligncenter size-full wp-image-631" src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/05/melhores-editores-wysiwyg-free-text-box.jpg" alt="Melhores editores WYSIWYG: FreeTextBox" width="549" height="217" /></a></p><p>FreeTextBox &eacute; um editor HTML especificamente para ASP.NET. A apar&ecirc;ncia do editor &eacute; bastante parecida com a do MS Word. Apesar de a vers&atilde;o gratuita n&atilde;o ter uma s&eacute;rie de features, ela possui mais do que o suficiente para permitir uma edi&ccedil;&atilde;o WYSIWYG de qualidade.</p><h2>MooEditable</h2><p><a
href="http://cheeaun.github.com/mooeditable/"><img
class="aligncenter size-full wp-image-634" src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/05/melhores-editores-wysiwyg-mooeditable.jpg" alt="Melhores editores WYSIWYG: MooEditable" width="474" height="164" /></a></p><p>Editores WYSIWYG tornaram-se populares devido aos v&aacute;rios plugins para  jQuery existentes, mas esses editores n&atilde;o s&atilde;o t&atilde;o comuns para Mootools. MooEditable, no entanto, preenche essa lacuna, fornecendo uma simples, mas eficaz, experi&ecirc;ncia do usu&aacute;rio, baseada em uma biblioteca de javascript bem escrita. Se voc&ecirc; usa Mootools, ficar&aacute; feliz em usar o MooEditable.</p><h2>OpenWysiwyg﻿</h2><p><a
href="http://www.openwebware.com/download.shtml"><img
class="aligncenter size-full wp-image-636" src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/05/melhores-editores-wysiwyg-openwysiwyg.gif" alt="Melhores editores WYSIWYG: OpenWysiwig" width="450" height="220" /></a></p><p>OpenWysiwyg &eacute; um editor WYSIWYG cross browser com quase todos os recursos de edi&ccedil;&atilde;o que voc&ecirc; pode precisar. Ele apresenta uma interface elegante, incluindo dropdowns e bot&otilde;es. Um de seus pontos fortes &eacute; sua capacidade de lidar bem com tabelas, com bordas e cores diferentes. No entanto, o Google Chrome ainda n&atilde;o &eacute; suportado&#8230;</p><h2>Spaw Editor</h2><p><a
href="http://www.solmetra.com/en/disp.php/en_products/en_spaw/en_spaw_download"><img
class="aligncenter size-full wp-image-637" src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/05/melhores-editores-wysiwyg-spaweditor.jpg" alt="Melhores editores WYSIWYG: Spaw Editor" width="537" height="232" /></a></p><p>Spaw Editor &eacute; um editor, assim como os outros editores WYSIWYG, que permite desenvolvedores de web substituir uma &aacute;rea de texto padr&atilde;o (textarea) por um editor completo, totalmente personaliz&aacute;vel, multilingue e com suporte a temas.</p><h2>jHtmlArea</h2><p><a
href="http://jhtmlarea.codeplex.com/releases/view/30759"><img
class="aligncenter size-full wp-image-632" src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/05/melhores-editores-wysiwyg-jhtmlarea.jpg" alt="Melhores editores WYSIWYG: jHtmlArea" width="423" height="159" /></a></p><p>jHtmlArea &eacute; outro editor de texto WYSIWYG constru&iacute;do como um plugin para a biblioteca jQuery. Seu objetivo &eacute; ser simples e leve, apenas com as op&ccedil;&otilde;es mais necess&aacute;rias. Permite-se a ser facilmente customiz&aacute;vel atrav&eacute;s de temas, as fun&ccedil;&otilde;es e idiomas.</p><h2>Sugest&otilde;es WYSIWYG?</h2><p>E voc&ecirc;, conhece um <strong>bom editor WYSIWYG</strong> e gostaria de compartilhar? Fa&ccedil;a um coment&aacute;rio com o nome e link do editor WYSIWYG e o artigo ser&aacute; complementado com sua sugest&atilde;o! Participe!</p><h3  class="related_post_title">Artigos Relacionados</h3><ul
class="related_post"><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/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/usabilidade/recursos-usabilidade/" title="Recursos de usabilidade grátis">Recursos de usabilidade grátis</a></li><li><a
href="http://desenvolvimentoparaweb.com/midia-social/twitter-ferramentas/" title="Ferramentas para o twitter">Ferramentas para o twitter</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/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/design/elementos-design-aplicados-web/" title="Elementos de design aplicados à web">Elementos de design aplicados à web</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></ul>]]></content:encoded> <wfw:commentRss>http://desenvolvimentoparaweb.com/javascript/melhores-editores-wysiwyg-para-seu-projeto/feed/</wfw:commentRss> <slash:comments>27</slash:comments> </item> <item><title>NextGEN Gallery com SexyLightBox: sua galeria de imagens mais sexy</title><link>http://desenvolvimentoparaweb.com/jquery/nextgen-gallery-com-sexylightbox-sua-galeria-de-imagens-mais-sexy/</link> <comments>http://desenvolvimentoparaweb.com/jquery/nextgen-gallery-com-sexylightbox-sua-galeria-de-imagens-mais-sexy/#comments</comments> <pubDate>Fri, 20 Nov 2009 17:38:10 +0000</pubDate> <dc:creator>Tárcio Zemel</dc:creator> <category><![CDATA[indicações]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[jquery]]></category> <category><![CDATA[Plugins]]></category> <category><![CDATA[Web Design]]></category> <guid
isPermaLink="false">http://www.desenvolvimentoparaweb.com/?p=491</guid> <description><![CDATA[Aumente a experi&ecirc;ncia dos visitantes de seu site de forma surpreendente atrav&eacute;s de uma galeria de imagens fant&aacute;stica!]]></description> <content:encoded><![CDATA[<p><img
class="aligncenter size-full wp-image-494" title="NextGen Gallery com SexLightbox no WordPress" src="http://www.desenvolvimentoparaweb.com/wp-content/uploads/2009/11/nextgen-gallery-sexlightbox-wordpress.jpg" alt="NextGen Gallery com SexLightbox no WordPress" width="400" height="232" /></p><p>&Eacute; fato que o <em>plugin</em> <a
title="NextGEN Gallery." href="http://wordpress.org/extend/plugins/nextgen-gallery/">NextGEN Gallery</a> do WordPress &eacute; o melhor quando o assunto &eacute; <strong>gerenciamento de galerias de imagens</strong>. Com NextGEN Gallery &eacute; poss&iacute;vel criar galerias facilmente, acrescentar/retirar imagens em modo <em>batch</em> (&eacute; poss&iacute;vel enviar um arquivo .zip e ele &#8220;abre&#8221; as imagens numa galeria), d&aacute; pra criar &aacute;lbuns, copiar/transferir imagens entre galerias, inserir marca d&#8217;&aacute;gua automaticamente, enfim, o NextGEN Gallery &eacute; bem conhecido na comunidade WordPress e certamente est&aacute; no &#8220;Top 5&#8243; de plugins!</p><p>Existe, tamb&eacute;m, apesar n&atilde;o ser t&atilde;o conhecido, um script &agrave; &#8220;lightbox&#8221; muito bonito e interessante: <a
title="Site do SexyLightbox" href="http://www.coders.me/web-html-js-css/javascript/sexy-lightbox-2">SexyLightBox</a>. Como &eacute; poss&iacute;vel ver em sua p&aacute;gina, o efeito que ele oferece &eacute; bem interessante e, de certa maneira, diferenciado dos outros <em>lightboxes</em> que encontramos por a&iacute; (&ecirc;nfase ao fato de as imagens serem apresentadas em tamanho completo respeitando a resolu&ccedil;&atilde;o do navegador do visitante).</p><p>Aproveitando que o <strong>NextGEN Gallery</strong> oferece a possibilidade de se utilizar <em>script </em>de terceiros para a exibi&ccedil;&atilde;o de suas galerias e somado ao fato de que o <strong>SexyLightBox</strong> &eacute; realmente interessante&#8230; <strong>NextGEN Gallery + SexyLightBox = Galerias de Imagens Sexy!</strong></p><h2>Baixando, instalando e configurando NextGEN Gallery</h2><p>O primeiro passo &eacute; baixar e instalar NextGEN Gallery no seu WordPress. Devido ao fato de eles serem de &#8220;naturezas&#8221; diferentes (o primeiro &eacute; um plugin do WordPress; o segundo &eacute; um script que pode ser usado em qualquer tipo de site), a maneira de instalar e usar cada um deles &eacute; diferente.</p><p>Para o <strong>NextGEN Gallery</strong>, devido ao fato de ser um <strong>plugin do WordPress</strong>, a instala&ccedil;&atilde;o &eacute; aquela, mesma, que j&aacute; estamos acostumados:</p><ul><li><a
href="http://wordpress.org/extend/plugins/nextgen-gallery/">Baixar o NextGEN Gallery</a>;</li><li>Descompactar em sua pasta <strong>wp-content/plugins</strong>;</li><li>Habilitar o plugin.</li></ul><p>Depois, perceba que aparece em seus menus um novo m&oacute;dulo, &#8220;Gallery&#8221;, com subop&ccedil;&otilde;es para controle do NextGen.</p><p>&Eacute; poss&iacute;vel traduzir as op&ccedil;&otilde;es para v&aacute;rios idiomas, inclusive L&iacute;ngua Portuguesa. <a
href="http://alexrabe.de/wordpress-plugins/nextgen-gallery/languages/">Baixe o pacote Portuguese / Brazilian Portugu&ecirc;s [pt_BR]</a> nas tradu&ccedil;&otilde;es oficiais e fa&ccedil;a upload do arquivo <strong>.mo</strong> para <strong>wp-content/plugins/nextgen-gallery/lang</strong> e, automaticamente, os menus ser&atilde;o traduzidos.</p><div
id="attachment_492" class="wp-caption aligncenter" style="width: 155px"><img
class="size-full wp-image-492" title="Painel NextGen Gallery no WordPress" src="http://www.desenvolvimentoparaweb.com/wp-content/uploads/2009/11/painel-nextgen-gallery-wordpress.gif" alt="Painel NextGen Gallery no WordPress" width="145" height="287" /><p
class="wp-caption-text">Painel NextGen Gallery em L&iacute;ngua Portuguesa</p></div><p>Para j&aacute; preparar o NextGen para trabalhar com o SexyLightBox, acesse em seu painel WordPress <strong>Galeria &gt; Op&ccedil;&otilde;es &gt; Efeitos</strong> e altere as op&ccedil;&otilde;es para:</p><ul><li><strong>Efeito Javascript para miniaturas:</strong> Personalizado;</li><li><strong>Linha de c&oacute;digo do link:</strong> rel=&#8221;sexylightbox&#8221;.</li></ul><div
id="attachment_493" class="wp-caption aligncenter" style="width: 455px"><img
class="size-full wp-image-493" title="Configura&ccedil;&atilde;o NextGen Gallery para SexyLightbox" src="http://www.desenvolvimentoparaweb.com/wp-content/uploads/2009/11/painel-nextgen-gallery-wordpress-sexy-lightbox.gif" alt="Configura&ccedil;&atilde;o NextGen Gallery para SexyLightbox" width="445" height="250" /><p
class="wp-caption-text"></p></div><h2>Baixando, instalando e configurando SexyLighbox</h2><p>V&aacute; at&eacute; o site oficial do SexyLighbox para <a
href="http://www.coders.me/web-html-js-css/javascript/sexy-lightbox-2#download">fazer download do SexyLightbox</a>. Depois, &eacute; preciso subir a pasta descompactada para o servidor.</p><p>N&atilde;o sei voc&ecirc;, mas eu costumo criar uma pasta &#8220;js&#8221; dentro do meu tema para tudo ficar organizado e eu poder usar as fun&ccedil;&otilde;es de caminho relativo do WordPress tranquilamente. Ent&atilde;o, uma estrutura que eu usaria para o caso seria <strong>wp-content/themes/MEU-TEMA/js/sexy-lightbox-2.3</strong> (essa &eacute; a vers&atilde;o mais atual no dia de publica&ccedil;&atilde;o deste artigo).</p><p>Agora &eacute; o momento de chamar o SexyLightbox para que funcione em seu tema. H&aacute; <strong>muitas</strong> maneiras diferentes de mexer com chamadas a scripts no WordPress; no caso, vou mostrar uma delas e, em artigos futuros, vou comentando sobre as outras (essa &eacute; a deixa para voc&ecirc; <a
href="http://www.desenvolvimentoparaweb.com/feed">assinar o feed do desenvolvimento para web</a>).</p><p>Uma coisa importante &eacute; que o SexyLighbox n&atilde;o &eacute; feito para ser usado em <em>standalone</em>, ele deve estar associado a jQuery ou Mootools. Obviamente vamos usar jQuery para o servi&ccedil;o!  ;-)</p><p>Ent&atilde;o, o c&oacute;digo com as respectivas chamadas a scripts e folhas de estilo fica assim:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;">&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;?php print get_bloginfo('template_url') ?&gt;/js/sexy-lightbox-2.3/jQuery/jquery.easing.1.3.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;?php print get_bloginfo('template_url') ?&gt;/js/sexy-lightbox-2.3/jQuery/sexylightbox.v2.3.jquery.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;&lt;?php print get_bloginfo('template_url') ?&gt;/js/sexy-lightbox-2.3/jQuery/sexylightbox.css&quot; type=&quot;text/css&quot; media=&quot;all&quot; /&gt;
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</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>
    SexyLightbox.<span style="color: #660066;">initialize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>color<span style="color: #339933;">:</span><span style="color: #3366CC;">'white'</span><span style="color: #339933;">,</span> imagesdir<span style="color: #339933;">:</span> <span style="color: #3366CC;">'&lt;?php print get_bloginfo('</span>template_url<span style="color: #3366CC;">') ?&gt;/js/sexy-lightbox-2.3/jQuery/sexyimages'</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: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div><p>Perceba que alguns par&acirc;metros foram passados na inicializa&ccedil;&atilde;o do script do SexyLightbox. O grande &#8220;trunfo&#8221; &eacute; usar o par&acirc;metro <strong>imagesdir</strong>, porque na documenta&ccedil;&atilde;o est&aacute; errado!</p><h3>Personalizando seu SexyLighbox</h3><p>Uma coisa muito boa &eacute; que h&aacute; uma pasta &#8220;PSDs&#8221; no SexyLighbox para que cada um posso personalizar a apar&ecirc;ncia como quiser. Ent&atilde;o, voc&ecirc; pode alterar a cor de fundo, texto, alterar os elementos (setinhas, etc) e usar da forma que voc&ecirc; quiser. Ent&atilde;o quando voc&ecirc; alterar a cor de fundo para o SexyLighbox ficar com a identidade visual de seu site, voc&ecirc; vai perceber que a parte do meio da moldura ainda permanece intacta. No caso, voc&ecirc; deve fazer um pequeno acr&eacute;scimo de CSS em seu arquivo padr&atilde;o (pode ser ao final):</p><div
class="wp_syntax"><div
class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#SLB-Contenido</span> <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">border-color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#HEXADECIMAL</span> !important<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div><h2>Agora voc&ecirc; tem galerias Sexy!</h2><p>Com isso, agora voc&ecirc; galerias de imagens <strong>automatizadas</strong> e <strong>sexy</strong>! Para tirar melhor proveito disso, estude a documenta&ccedil;&atilde;o do NextGen Gallery (al&eacute;m dos <a
href="http://alexrabe.de/forums/">f&oacute;runs</a>, os <a
href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/">tutoriais sobre NextGen de David Potter</a> devem ajudar) e do SexyLightbox para incrementar/customizar ainda mais as galerias de imagens de seu site para que fiquem pr&aacute;ticas, bonitas e com excelente performance.</p><p>E capriche nas imagens!  ;-)</p><h3  class="related_post_title">Artigos Relacionados</h3><ul
class="related_post"><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/design/cores-na-web-guia-completo/" title="Cores na web: guia completo">Cores na web: guia completo</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/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/usabilidade/ferramentas-criacao-wireframes/" title="Ferramentas para criação de wireframes">Ferramentas para criação de wireframes</a></li><li><a
href="http://desenvolvimentoparaweb.com/css/rolagem-fundo-transparente-css/" title="Rolagem com fundo transparente com CSS">Rolagem com fundo transparente com CSS</a></li><li><a
href="http://desenvolvimentoparaweb.com/design/7-ferramentas-para-web-designs-melhores/" title="7 ferramentas para web designs melhores">7 ferramentas para web designs melhores</a></li><li><a
href="http://desenvolvimentoparaweb.com/wordpress/otimizacao-wordpress-performance-desempenho-blog-site/" title="Otimização WordPress: aumente a performance e desempenho de seu blog / site">Otimização WordPress: aumente a performance e desempenho de seu blog / site</a></li><li><a
href="http://desenvolvimentoparaweb.com/jquery/como-criar-sumarios-dinamicamente-com-o-toc-table-of-contents-jquery-plugin-jquerytoc/" title="Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin">Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin</a></li></ul>]]></content:encoded> <wfw:commentRss>http://desenvolvimentoparaweb.com/jquery/nextgen-gallery-com-sexylightbox-sua-galeria-de-imagens-mais-sexy/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>Como usar qualquer tipo (fonte tipogr&#225;fica) em seu blog WordPress</title><link>http://desenvolvimentoparaweb.com/javascript/como-usar-qualquer-tipo-fonte-tipografica-em-seu-blog-wordpress/</link> <comments>http://desenvolvimentoparaweb.com/javascript/como-usar-qualquer-tipo-fonte-tipografica-em-seu-blog-wordpress/#comments</comments> <pubDate>Fri, 05 Sep 2008 15:28:38 +0000</pubDate> <dc:creator>Tárcio Zemel</dc:creator> <category><![CDATA[blogs]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[Blogs]]></category> <category><![CDATA[Plugins]]></category> <category><![CDATA[Tipografia]]></category> <guid
isPermaLink="false">http://www.desenvolvimentoparaweb.com/?p=380</guid> <description><![CDATA[Aprenda como usar qualquer tipo (fonte tipogr&aacute;fica) para aumentar a qualidade e n&iacute;vel profissional de seu site]]></description> <content:encoded><![CDATA[<p
style="text-align: center; border:1px solid #999"><img
class="size-full wp-image-387" title="Imagem com diversos tipos (fontes tipogr&aacute;ficas)." src="http://www.desenvolvimentoparaweb.com/wp-content/uploads/2008/09/diversos-tipos-fontes-tipograficas.gif" alt="Imagem com diversos tipos (fontes tipogr&aacute;ficas)." width="500" height="150" /></p><p>Uma das (ainda) grandes limita&ccedil;&otilde;es da <em>web</em> refere-se &agrave; <strong>usar qualquer fonte tipogr&aacute;fica em <em>web sites</em></strong>. Por padr&atilde;o, caso a pessoa n&atilde;o tenha determinado tipo que tenha sido especificado para ser exibido, o navegador renderiza por um que seja o mais pr&oacute;ximo ou secund&aacute;rio &#8211; determinado pelo pr&oacute;prio desenvolvedor. Isso, realmente, &eacute; uma limita&ccedil;&atilde;o, j&aacute; que n&atilde;o &eacute; poss&iacute;vel &#8220;controlar&#8221; inteiramente como ser&aacute; a <strong>exibi&ccedil;&atilde;o de tipos</strong> nos <em>sites</em>.</p><p>Enquanto algo melhor n&atilde;o &eacute; implementado por padr&atilde;o, existe a possibilidade de fazer uma &#8220;gambiarra&#8221; para se <strong>exibir os textos em qualquer fonte tipogr&aacute;fica</strong>. S&atilde;o t&eacute;cnicas que variam desde a implementa&ccedil;&atilde;o &#8220;na unha&#8221; de imagens com textos, passando por <em>javascript</em>, &agrave; mudan&ccedil;a de tipos usando Flash. S&atilde;o tantas as op&ccedil;&otilde;es e <em>scripts</em> prontos que &eacute; como ir a uma loja onde tudo &eacute; gratuito: basta escolher e pegar.</p><p>Se voc&ecirc; ficou &#8220;espantado&#8221; com o t&iacute;tulo deste artigo, &#8220;<strong>Como usar qualquer tipo (fonte tipogr&aacute;fica) em seu blog WordPress</strong>&#8220;, leia <a
title="Saiba a diferen&ccedil;a entre fonte, tipo, tipologia e tipografia." href="http://www.desenvolvimentoparaweb.com/design/tipografia-com-foco-ao-web-design-parte-1-consideracoes-sobre-fonte-tipo-tipologia-e-tipografia/">algumas considera&ccedil;&otilde;es sobre fonte, tipo, tipologia e tipografia</a>.</p><h2>Trocando os tipos dos t&iacute;tulos do blog com Facelift</h2><p>Dentre as diversas op&ccedil;&otilde;es de <em>scripts</em> e maneiras para usar qualquer tipo (fonte tipogr&aacute;fica) em <em>web sites</em>, indico o <a
title="Visitar o site oficial do Facelift." href="http://facelift.mawhorter.net/">Facelift Image Replacement</a> que, segundo diversos testes que fiz, mostra-se muito simples de instalar e produz resultados eficientes, <strong>trocando os textos de qualquer parte do <em>site</em></strong> para qualquer tipo que se queira.</p><p>O <strong>Facelift</strong> faz sua &#8220;m&aacute;gica&#8221; <strong>criando imagens em tempo real</strong> de textos de qualquer lugar de uma p&aacute;gina <em>web</em> que voc&ecirc; queira (e respeita o CSS especificado para o elemento, inclusive); e faz esta &#8220;reposi&ccedil;&atilde;o de tipos&#8221; utilizando o arquivo no formato de fontes, como .<strong>ttf</strong> ou <strong>.otf</strong>. Quer dizer, ele atua &#8211; com a licen&ccedil;a do trocadilho &#8211; &#8220;<strong>direto na fonte</strong>&#8220;!  ;-)</p><p>Isso sem falar em sua compatibilidade com os <em>frameworks</em> <a
title="P&aacute;gina oficial do jQuery." href="http://jquery.com/">jQuery</a>, <a
title="P&aacute;gina oficial do Prototype." href="http://www.prototypejs.org/">Prototye</a>, <a
title="P&aacute;gina oficial do Scriptaculous." href="http://script.aculo.us/">Scriptaculous</a> e <a
title="P&aacute;gina oficial do MooTools." href="http://mootools.net/">MooTools</a> e com a grande vantagem de ser ideal para garantir a acessibilidade do <em>blog</em>, j&aacute; que, se a exibi&ccedil;&atilde;o de imagens estiver desabilitada, o &#8220;texto puro&#8221; aparece normalmente.</p><h2>Instalando o Facelift em seu blog WordPress</h2><p>O primeiro passo &eacute; acessar a <a
title="Fazer download do Facelift." href="http://facelift.mawhorter.net/download/">p&aacute;gina de downloads do Facelift</a> para baixar sua &uacute;ltima vers&atilde;o. Para o caso do WordPress, voc&ecirc; tem duas op&ccedil;&otilde;es:</p><ol><li><strong>Instalar em uma pasta no tema que voc&ecirc; usa.</strong> Dessa forma, o script fica vinculado a seu atual tema e, praticamente, far&aacute; parte deste (se voc&ecirc; mudar o tema, n&atilde;o mais ter&aacute; o Facelift funcionando).</li><li><strong>Instalar em uma pasta independente de temas.</strong> Instalando o Facelift em uma pasta independente, ele continua funcionando independentemente de voc&ecirc; alterar temas ou n&atilde;o (o &uacute;nico &#8220;por&eacute;m&#8221; &eacute; para algumas linhas de c&oacute;digo que devem ser inseridas, caso haja a troca).</li></ol><p>Ent&atilde;o, segundo a abordagem de instalar o <strong>Facelift</strong> na pasta do pr&oacute;prio tema, sugiro que seja uma pasta &#8220;js&#8221; ou &#8220;javasript&#8221;. Ent&atilde;o, v&aacute; l&aacute; e crie uma pasta &#8220;js&#8221; na pasta de seu tema para dar prosseguimento &agrave; instala&ccedil;&atilde;o do Facelift.</p><p>Depois disso, descompacte o Facelift nesta pasta remota &#8220;js&#8221; que acabou de criar. Uma observa&ccedil;&atilde;o: a pasta raiz do Facelift vem com a estrutura &#8220;<strong>facelift-[vers&atilde;o]</strong>&#8220;; pessoalmente, gosto de retirar o n&uacute;mero da vers&atilde;o para manter a coisa enxuta (somente &#8220;facelift&#8221;); se voc&ecirc; n&atilde;o quiser fazer isso, tudo bem, mas fique atento aos c&oacute;digos de chamada ao Facelift que ser&atilde;o mostrados posteriormente.</p><h2>Configurando o Facelift para usar qualquer tipo em seu blog WordPress</h2><p>Coloque na pasta &#8220;<strong>fonts</strong>&#8221; o arquivo do tipo que voc&ecirc; vai usar. Ent&atilde;o, configure o arquivo <span
class="code"><strong>config-flir.php</strong>. V&aacute;, l&aacute;, e altere o que for necess&aacute;rio &#8211; o arquivo &eacute; bem comentado, n&atilde;o se preocupe.</span></p><p>Depois de devidamente instalado e configurado, &eacute; hora de chamar os arquivos necess&aacute;rios ao funcionamento do Facelift e <strong>usar qualquer fonte tipogr&aacute;fica no blog</strong>! O primeiro passo &eacute; &#8220;chamar&#8221; o corretamente para que se possa usufruir de seus benef&iacute;cios.</p><p>&Eacute; poss&iacute;vel inserir chamadas a <em>javascript</em> no <em>head</em> ou <em>body</em> de documentos <em>web</em>. O indicado &eacute; antes de se fechar a <em>tag</em> <strong>&lt;/body&gt;</strong>, pois evita &#8220;travar&#8221; o carregamento da p&aacute;gina e o <em>script</em> s&oacute; &eacute; requisitado quando todos os outros elementos da p&aacute;gina j&aacute; foram carregados. Ent&atilde;o, vamos chamar o <em>javascript</em> do face lift antes de fechar o corpo do documento (<strong>&lt;/body&gt;</strong>), o que, provavelmente, deve estar no arquivo <strong>footer.php</strong> de seu tema WordPress.</p><p>O &#8220;macete&#8221; &eacute; chamar o javascript atrav&eacute;s de PHP (especificando o local em que se encontra a pasta raiz do <em>script</em>, segundo indicado na <a
title="Ler, em ingl&ecirc;s, a documenta&ccedil;&atilde;o oficial do Facelift." href="http://facelift.mawhorter.net/doc/">documenta&ccedil;&atilde;o oficial do Facelift</a>), j&aacute; que ser&aacute; preciso identificar o diret&oacute;rio onde ele se encontra utilizando <a
title="Mais informa&ccedil;&otilde;es sobre a fun&ccedil;&atilde;o get_bloginfo." href="http://codex.wordpress.org/Template_Tags/get_bloginfo">get_bloginfo()</a>.</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;script type=&quot;text/javascript&quot; src=&quot;'</span> <span style="color: #339933;">.</span> get_bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'template_directory'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/js/facelift/flir.js&quot;&gt;;&lt;/script&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div><p>Depois, &eacute; preciso iniciar o Facelifit e especificar para quais elementos haver&aacute; substitui&ccedil;&atilde;o de tipos. Uma grande vantagem &eacute; que &eacute; poss&iacute;vel utilizar a sintaxe do jQuery, devido &agrave; compatibilidade nativa que tanto Facelift quanto WordPress t&ecirc;m do <em>framework</em>! Ent&atilde;o, <a
title="Conhe&ccedil;a ferramentas que auxiliam na tarefa de saber a localiza&ccedil;&atilde;o de determinado elemento numa web page." href="http://www.cssnolanche.com.br/css-debug-tools/">sabendo e identificando os elementos da p&aacute;gina</a> que ter&atilde;o tipos personalizados, basta especificar isso no c&oacute;digo (como come&ccedil;amos gerando com PHP, vamos continuar).</p><p>O c&oacute;digo final fica assim (no exemplo, altero os t&iacute;tulos secund&aacute;rios da barra lateral):</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'
    &lt;script type=&quot;text/javascript&quot; src=&quot;'</span> <span style="color: #339933;">.</span> get_bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'template_directory'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/js/facelift/flir.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot;&gt;
    FLIR.init({path:&quot;'</span> <span style="color: #339933;">.</span> get_bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'template_directory'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/js/facelift/&quot;});
    $(&quot;#sidebar h2&quot;).each( function() { FLIR.replace(this); } );
    &lt;/script&gt;
'</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div><p>E pronto! Agora seu <em>blog</em> WordPress pode usar qualquer fonte tipogr&aacute;fica, em qualquer local que voc&ecirc; queira!</p><h2>Importantes observa&ccedil;&otilde;es sobre a troca de tipos com o Facelift</h2><p>Na verdade, o Facelift pode ser usado em qualquer tipo de <em>site</em> ou <em>blog</em>, seja WordPress ou n&atilde;o. Entretanto, em fun&ccedil;&atilde;o do peso de imagens &#8211; ainda mais geradas em tempo real &#8211; e performance do <em>blog</em>/<em>site</em>, em geral, &eacute; conveniente que se altere os tipos somente dos t&iacute;tulos e/ou &aacute;reas de destaque.</p><p>Importante notar que, como se trata de inser&ccedil;&atilde;o de imagens, caso uma imagem estrapole a largura destinada ao elemento que foi &#8220;substitu&iacute;do&#8221; por ela, <strong>seu <em>layout</em> pode quebrar e/ou a imagem ficar semi-oculta</strong>, impedindo os leitores de a visualizarem por completo.</p><p>Portanto, se voc&ecirc; utiliza artigos com t&iacute;tulo curto e/ou tem um espa&ccedil;o &uacute;til para os t&iacute;tulos consider&aacute;vel, use e abuse de tipos personalizados em seu <em>blog</em>/<em>site</em>; do contr&aacute;rio, limite-se a usar os tipos personalizados somente em &aacute;res de destaque ou textos que contenham poucas e pequenas palavras.</p><p><strong>&lt;update&gt;</strong><br
/> Confiram, tamb&eacute;m, o <em>plugin</em> para WordPress <a
href="http://2amlife.com/projects/anyfont">AnyFont</a>.<br
/> <strong>&lt;/update&gt;</strong></p><h3  class="related_post_title">Artigos Relacionados</h3><ul
class="related_post"><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/wordpress/otimizacao-wordpress-performance-desempenho-blog-site/" title="Otimização WordPress: aumente a performance e desempenho de seu blog / site">Otimização WordPress: aumente a performance e desempenho de seu blog / site</a></li><li><a
href="http://desenvolvimentoparaweb.com/wordpress/newsletter-no-wordpress-com-o-plugin-ajax-newsletter-wp-ajax-newsletter/" title="Newsletter no WordPress com o plugin Ajax Newsletter (wp-ajax-newsletter)">Newsletter no WordPress com o plugin Ajax Newsletter (wp-ajax-newsletter)</a></li><li><a
href="http://desenvolvimentoparaweb.com/wordpress/preciosas-dicas-de-seguranca-e-otimizacao-para-wordpress/" title="Preciosas dicas de segurança e otimização para WordPress">Preciosas dicas de segurança e otimização para WordPress</a></li><li><a
href="http://desenvolvimentoparaweb.com/wordpress/wp-syntax-destacar-codigos-fonte-em-artigos-de-blogs-wordpress/" title="WP-Syntax: destacar códigos fonte em artigos de blogs WordPress">WP-Syntax: destacar códigos fonte em artigos de blogs WordPress</a></li><li><a
href="http://desenvolvimentoparaweb.com/indicacoes/mais-de-450-extensoes-para-wordpress/" title="Mais de 450 extensões para WordPress">Mais de 450 extensões para WordPress</a></li><li><a
href="http://desenvolvimentoparaweb.com/wordpress/wassup-plugin-wordpress-estatisticas-acesso-em-tempo-real/" title="WassUp: plugin WordPress para ver estatísticas de acesso (em tempo real)">WassUp: plugin WordPress para ver estatísticas de acesso (em tempo real)</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/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/ferramentas-criacao-wireframes/" title="Ferramentas para criação de wireframes">Ferramentas para criação de wireframes</a></li></ul>]]></content:encoded> <wfw:commentRss>http://desenvolvimentoparaweb.com/javascript/como-usar-qualquer-tipo-fonte-tipografica-em-seu-blog-wordpress/feed/</wfw:commentRss> <slash:comments>11</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>
