Implementando um menu dinâmico baseado em tableless

por André Rafael Barboza
Nome: INB Menubar
Publicado: 06/03/2007
Atualizado: 11/07/2007
Linguagem: Javascript
Características:
  • - Baseado em tableless e javacript
  • - Permite N submenus
  • - Suporta alinhamento horizontal e vertical
  • - Possui espaço reservado para ícones
  • - Formatação através de include CSS
Código-fonte (6 kb):

Autor: André Rafael Barboza


Introdução

A criação desse menu faz parte do meu estudo sobre tableless e criação de componentes para ASP.NET. Eu pretendia liberar esse código junto com meu componente em .NET, mas por possuir uma implementação muito simples eu resolvi não restringir seu uso dentro da plataforma .NET.

Eu perdi a conta de quantos menus dinâmicos em javascript havia criado. Cada um deles era muito diferente do outro em sua implementação. Uma solução comum é a criação de vários elementos em camadas, dar um ID para cada um deles adicionar no evento mouseover uma chamada a função que exibe o submenu passando o ID como parâmetro. Eu achava isso normal até perceber que podia acabar com essa dependência de ID.

Durante a criação desse controle me ocorreu que eu não tinha feito nenhuma pesquisa sobre soluções tableless para menu em javascript. Interrompi meu trabalho e fui matar minha curiosidade. Achei várias soluções que implementavam um menu tableless apenas com CSS, mas tinha suas restrições. Eles só permitiam um número fixo de submenus.

Implementação

Chega de enrolação e vamos ao que interessa. Para utilizar o INB Menubar em seu site:

Exemplos

Código HTML acima com alinhamento horizontal <div id="Menubar1" class="INBMenubar Horizontal">

 

Alinhamento vertical <div id="Menubar1" class="INBMenubar Vertical">

 

Sem o parâmetro adicional
Talvez alguns pensem que esse parâmetro adicional é uma falha no script, mas não é. Tudo depende do layout da página.

var oMenubar1 = new TINBMenubar("Menubar1");

 

Conclusão

Usando este exemplo você pode facilmente implementar um menu dinâmico em seu website sem se preocupar com códigos complicados e sem depender de ferramentas de terceiros.

O básico de um menu em javascript é saber onde você está, onde você esteve e quem você deve exibir. Permitir que você, a partir de um elemento de nível N, retorne para o nível zero. A estrutura de lista permite isso muito bem. No final eu achei a implementação desse menu mais simples que um menu baseado em tabela.

Um recurso excelente que eu desconhecia está no método GetStyle do TINBMenubar. Eu não sabia que era possível recuperar a formatação CSS que foi aplicada no elemento independente se ela foi feita via atributo style ou class.

Espero que tenham gostado do artigo. Em breve pretendo publicar um artigo sobre a implementação deste controle, mas como componente ASP.NET. Este foi o primeiro artigo, mas podem ter certeza de que outros virão e com uma qualidade ainda melhor.