sexta-feira, março 12, 2010

Diferenças do HTML5 / HTML4 parte 2 - Estrutura

Pensando na estrutura dos documentos, o HTML5 foi melhorado com uma semântica mais coerente.
O primeiro ponto é que o documento é composto por seções, independente da função designada ao elemento que a define. Existe um elemento de seção genérica, mas tudo na estrutura podemos chamar de seção.
Estes são os elementos novos que prometem organizar melhor o documento:
  • section: indica uma seção genérica da aplicação ou do documento, que juntamente com os títulos [h1], [h2]...[h6], servem para indicar a estrutura da informação ou conjunto relacionado. Esse cara substituiria a tag [div] de uso genérico;
  • article: indica um pedaço de conteúdo do documento, como um post de um blog ou uma notícia de um jornal (por exemplo: tenho uma seção de notícias e dentro dela vários artigo);
  • aside: contem itens referentes à página ou ao conteúdo focal - a barra lateral com os links, banners etc;
  • nav: contem os itens de navegação do documento - aquela barra, normalmente superior, com os links;
  • hgroup: é o agrupamento de itens do cabeçalho de uma seção;
  • header: é o cabeçalho de uma seção contendo os títulos e ajudas à navegação ou à introdução de uma seção (documento, seção ou artigo) que podem ser agrupados pelo [hgroup];
  • footer: é o rodapé da seção (documento, seção ou artigo), para que se coloque dados do autor, data de publicação etc;
  • figure: representa o agrupamento de itens que necessitem de um título, como imagens, vídeos ou até textos... e seu título, claro;
  • figcaption: o título do agrupamento do [figure];
A idéia é que ao invés de ficar usando um monte de [div] com a "semanticalização" destes blocos embutida nos atributos 'class' ou 'id', houvessem elementos nativos que representassem estes blocos ou seções do documento.
Obviamente um [header] não vai conter um [header], assim como um [footer], [nav], [aside] etc. Acredito que somente o [section] pode conter um [section].
O HTML5 promete simplificar a estrutura do documento, fazendo dela auto-explicativa e direta.

Exemplo de uma página HTML5, visando a estrutura:



<!doctype html>
<html lang="pt">
<head>
<title>Titulo</title>
</head>
<body>

<header>
<h1>Titulo, Logo etc</h1>
</header>
<nav>
<ul>
<li><a href="#">Blog</a></li>
<li><a href="#">Sobre</a></li>
<li><a href="#">Contato</a></li>
</ul>
</nav>
<section>
<article id="artigo2">
<header>
<h2>Artigo 2 do Blog</h2>
<p>Publicado em <time datetime="2010-03-11T16:22:45-03:00">11/03/2010</time></p>
</header>
<section>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin euismod tellus eu orci imperdiet nec rutrum lacus blandit. Cras enim nibh, sodales ultricies elementum vel, fermentum id tellus. Proin metus odio, ultricies eu pharetra dictum, laoreet id odio...</p>
</section>
<footer>
<p><a href="#">3 cometarios</a><p>
</footer>
</article>
<article id="artigo1">
<header>
<h2>Artigo 1 do Blog</h2>
<p>Publicado em <time datetime="2010-03-08T20:15:29-03:00">08/03/2010</time></p>
</header>
<section>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin euismod tellus eu orci imperdiet nec rutrum lacus blandit. Cras enim nibh, sodales ultricies elementum vel, fermentum id tellus. Proin metus odio, ultricies eu pharetra dictum, laoreet id odio...</p>
</section>
<footer>
<p><a href="#">3 cometarios</a><p>
</footer>
</article>
</section>
<aside>
<header>
<h1>Minha Barra Lateral</h1>
</header>
<ul>
<li><a href="#">Blog</a></li>
<li><a href="#">Sobre</a></li>
<li><a href="#">Contato</a></li>
</ul>
<footer>
<p>5 pessoas online<p>
</footer>
</aside>
<footer>
<p>Produzido por <a href="#">Fulano</a></p>
<p><small>Copyleft...</small></p>
</footer>

</body>
</html>


segunda-feira, março 08, 2010

Diferenças do HTML5 / HTML4 parte 1 - Geral

Depois de ler alguns artigos, ler documentação oficial e agora o texto da W3C sobre a diferença do HTML 5 com relação ao 4, blogs etc, incluindo bom senso de padronização, farei a seguir um resumo só com a real diferença da especificação atual (que ainda não está fechada).
Este primeiro post refere-se ao documento em geral.

#1 - XML: Trate como um documento XML - incluindo suas regras de estrutura do documento. Apesar de permitir certas displicências, aplique as boas práticas do XHTML sempre que puder no seu documento HTML:
  • tags em minúscula;
  • atributos com valores e com aspas;
  • tags vazias finalizadas com "/";
  • etc.

#2 - DOCTYPE: Para dizer que um documento é HTML, basta, no início do documento:
<!DOCTYPE html>

#3 - Tag HTML: Pode ou não possuir a tag [html], mas é altamente recomendável.

#4 - Idioma: Recomenda-se informar o idioma do documento. Para isso use a tag [html] (dã...):
<html lang="pt">

#5 - Charset: Para informar a codificação de caracteres, basta, no [header]:
<meta charset="UTF-8" />

#6 - Outros ML: O HTML5 permite MathML e SVG com as tags [math] e [svg] especificamente:
<svg><circle r="50" cx="50" cy="50" fill="green" /></svg>

#7 - Microdata: Pode-se usar microdata, se referindo com o atributo "itemscope" dentro de um elemento pai, e especificando os itens dentro dele. Os atributos são: "itemid", "itemprop", "itemref", "itemscope" e "itemtype".

#8 - Entidades: O tratamento das entidades e símbolos continuam os mesmos (& + entidade ou [# + ascii] + ;).

Exemplo (mescla de alguns exemplos da W3C):


<!doctype html>
<html lang="pt">
<head>
<meta charset="UTF-8" />
<title>Exemplo HTML5 - parte 1</title>
</head>
<body>
<section>
<p>
A green circle:
<svg> <circle r="50" cx="50" cy="50" fill="green" /> </svg>
</p>
</section>
<section itemscope itemtype="http://blablabla.org/galera">
<h1 itemprop="name">Astrogildo</h1>
<p itemprop="desc">Astrogildo - um cara legal!</p>
<img itemprop="img" src="img/astro.jpg" alt="Falhou..." title="Astrogildo na rave" />
</section>
</body>
</html>