Html5 – tag NAV

Se tudo der certo esta semana eu vou participar do curso de HTML5 da W3C e para me preparar para o curso eu dei continuidade aos meus estudos e testes com HTML5.

Prometi que vou abordar em posts por aqui algumas tags específicas do HTML5, já expliquei a importância do uso do html5 doctype, hoje vou falar da tag NAV, que traz melhorias na semântica e consequentemente na indexação das páginas.

<nav>

A tag <nav>, como o nome indica, defina uma seção de navegação no documento – uma lista de links. No HTML4 ainda é comum ver menus de navegação com o seguinte código:

<ul class="nav">
    <li><a href="#" title="Home">Home</a></li>
    <li>
<a href="#" title="Sobre">Sobre</a></li>
    <li>
<a href="#" title="Contato">Contato</a></li>
</ul>

Com as mudanças do HTML5 alguns microformats foram transformados em tags, o <nav> é uma delas. Um menu agora poderá ser escrito da seguinte forma:

<nav>
    <a href="#">Home</a>
    <a href="#">
Sobre</a>
    <a href="#">
Contato</a>
</nav>

Uma seção focada na navegação melhora a semântica do documento e pode facilitar muito a navegação através de leitores de tela, melhorando a acessibilidade do site.

Segundo a W3C elementos como "próximo" e "anterior" devem estar dentro de uma <nav>, portanto acredito que a tag também pode ser usada para paginação, por exemplo.

SEO e a tag <nav>

Além da questão da acessibiliade e semântica sem dúvida a <nav> vai influenciar na indexação dos buscadores, visto que os links são os canais do "juice" das páginas. Acredito que o uso não deve ficar preso apenas a menu e a o <nav> deve ser aplicado a qualquer  "seção de navegação" da sua página, por exemplo:

  • Menu principal
    Exemplo acima, menu no header ou barra lateral para as páginas principais do site
  • Histórico
    No caso de blogs é comum ter um "histórico" – é uma seção de navegação, faz sentido o uso da classe
  • Próximo / Anterior e paginação
    Também são elementos de navegação e bastante usados em muitos blogs.
  • Breadcrumb
    Importante para a navegação do site, semanticamente faz muito sentido estar classificado como navegação.
  • Lista de links dentro do conteúdo
    Bacana para a navegação e importante para SEO, é como o uso de ferramenta de links recomendados, que adivinha só? É um conjunto para navegação… 😉

 

Dicas

Algumas coisas que acho que vale a pena ressaltar…

<nav> não é <menu>

No html5 existe a tag menu e isso pode causar confusão em alguns desenvolvedores, porém para o menu de navegação de um site o correto é o uso do <nav>. A descrição da tag menu é que ela é uma lista de comandos, então faz mais sentido o uso dela em aplicações web onde o menu é utilizado para listar comandos, e não links de navegação.

Utilize o doctype correto

Você precisa dizer para o seu navegador como ele deve interpretar o seu documento, para isso utilize o doctype do HTML5 sempre que ele for utilizado.

<nav> aceita listas

Acabei de questionar no curso de HTML5 sobre o uso de <nav> e lsitas, não é necessário utilizar uma lista dentro do elemento <nav>, portanto você pode ter o seguinte:

<nav>
  <li><a href="#" title="Title">Item</a></li>
  <li><a href="#" title="Title">Item</a></li>
  <li><a href="#" title="Title">Item</a></li>
  <li><a href="#" title="Title">Item</a>
     <nav>
        <li><a href="#" title="Title">Item</a></li>
        <li><a href="#" title="Title">Item</a></li>
      </nav>
  </li>
  <li><a href="#" title="Title">Item</a></li>
</nav>

 

O <nav> não é um UL, ele aceita parágrafos, listas, links, etc. 🙂

HTML5 Doctype

Depois de compartilhar algumas dicas para fazer um HTML, tive um feedback muito positico e alguns galeritos pediram para eu abordar mais as mudanças e novidades do HTML5 por aqui – agora que estou acompanhando mais de perto a evolução do HTML5 resolvi começar a compartilhas coisas simples e exemplos com vocês. 🙂

Recomento que você veja o infográfico sobre HTML5

HTML5 Doctype

No HTML 4 existiam três tipos diferentes de doctype, no HTML5 ficou mais simples, existe apenas um tipo, e deve ser inserido no início do documento:

<!DOCTYPE HTML>

Para que serve o Doctype no HTML5?

Segundo o W3C o Doctype nao chega a ser uma tag HTML, é uma especificação para o browser saber qual é a marcação e o tipo de documento que ele está interpretando.

No HTML 4 era necessário associar o doctype a um DTD (definição de tipo de documento), agora não é necessário associar o doctype a um DTD pois o HTML5 não é baseada na SGML (Standard Generalized Markup Language).

É necessário o uso do doctype para que os navegadores se comportem como devem e interpretem corretamente as tags do HTML5.

 

Espero em breve mostrar para vocês O Desenvolvedor já em HTML5, ou pelo menos alguns exemplos que estou fazendo para testes. ;D

CSS3 – Background Gradient

Retomei meus estudos de HTML5, que eu gostaria de publicar por aqui mas sempre acabo apenas na leitura, mas resolvi utilizar CSS3 na versão nova do And After, deixando de lado preocupações visuais com o Internet Explorer.

Curvas arredondadas e backgrounds com gradientes funcionarão apenas em navegadores com suporte ao CSS3, porém posicionamento, tamanho, formatação de texto e funcionalidades funcionarão perfeitamente em qualquer navegador. Acho que esse é o método de desenvolvimento ideal – e mais rápido.

Vou abordar alguns temas relacionados ao CSS3 nos próximos posts, vamos ao background com degradê!

 

Background gradient com CSS

Fazer um background sem imagens tem diversas vantagens, entre as principais posso listar: menos kb para carregar, facilidade na manipulação por javascript, manutenção mais fácil.

Debatendo com o @MathieuRousseau sobre o uso ou não do CSS3, levantamos a questão da infelicidade que é não existir um padrão bem definido para o CSS3, mas a implementação não é tão dolorosa assim, apesar de ainda não funcionar corretamente uma forma cross-browser única.

Vamos a exemplos do código!

Gradiente vertical

.boxVertical {
background-color: #333; /* cor do bg caso tudo abaixo de errado */
background-image: url(images/linear_bg_2.png); /* imagem usada caso não exista suporte ao css3 (IE) */
background-image: -moz-linear-gradient(100% 100% 90deg, #333, #efefef);
/* para o mozzila */ background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#efefef), to(#333)); /* para o webkit*/ }

 Gradiente horizontal

.boxHorizontal {
background-color: #333; /* cor do bg caso tudo abaixo de errado */
background-image: url(images/linear_bg_2.png); /* imagem usada caso não exista suporte ao css3 (IE) */
background-image: -moz-linear-gradient(100% 100% 180deg, #333, #efefef);
/* para o mozzila */ background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#efefef), to(#333)); /* para o webkit*/
}

 

Como usar o -moz-linear-gradient

-moz-linear-gradient( [<point> || <angle>,]? <stop>, <stop> [, <stop>]* )

Point

Descrição: Interpretado como "background-position", define onde deve começar o gradiente.
Valores: porcentagem, pixels, "left", "center", or "right" para horizontal e "top", "center", ou "bottom" para vertical.

 

Angle

Descrição: ângulo da direção do gradiente.
Valores: degrees (90deg), grads (100grad), radians (1rad)

 

Stop

Descrição: valor composto de uma cor seguido por uma "parada" opcional (percentual ou px) que define a cor e a extensão dela no gradiente.
Valores: porcentam ou px (stop) e cor (hexadecimal, rgb…)

 

Para mais informações leia a documentação completa (em inglês)

 

Como usar o -webkit-gradient

 -webkit-gradient(<type>, <point> [, <radius>]?, <point> [, <radius>]? [, <stop>]*)

 

type

Descrição: define o tipo de gradiente
Valores: linear ou radial

 

point

Descrição: um par de valores separados, que definem de onde irá o gradiente. Os dois pares definem início e fim de X e Y do gradiente.
Valores: pixels, porcentagem ou top, bottom, left e right

 

radius

Descrição: define o raio do gradiente radial
Valores:

 

Stop

Descrição: valor composto de uma cor seguido por uma "parada" opcional (percentual ou px) que define a cor e a extensão dela no gradiente.
Valores: porcentam ou px (stop) e cor (hexadecimal, rgb…)

 

Curiosidades

O webkit, pelo menos até agora, continua carregando a imagem de background, mesmo que ela não seja exibida.

O Firefox (-moz) a partir da versão 3.6 não faz o download da imagem quando é utilizado o gradient, economia de uma requisição http!

 

Dicas Go Horse

  • O Internet Explorer sempre será um problema, porém ignorá-lo completamente não é uma solução boa. Mas se preocupar muito com ele é uma péssima idéia.
  • O site não precisa renderizar exatamente igual em todos os navegadores, deixe esta idéia de lado se preocupe apenas em fazê-lo funcionar em quase todos os navegadores.
  • Na nova versão do And After e no Eu Compraria! Shop resolvi ignorar o Internet Explorer quanto a border-radius e background-gradient. O usuário de IE poderá usar e navegar no site todo, sem problemas… porém a experiência visual (falei bonito, ein?) de quem utilizar um navegador decente será muito mais agradável: shadows, text-shadows,border-radius,background-gradient… não usei imagem de background no IE, apenas a cor de fundo, assim economizo requisições http.

 

Não achei muita coisa em português explicando sobre o background-gradient, então resolvi explicar um pouco mais ao invés de só publicar exemplos, espero que seja útil.

Duvidas e sugestões nos comentários!

 

Mais referências sobre background-gradient em: