Menu dropdown acessível

Postado por bob em 06/04/2009 | 4 comentários

Um post rápido, só prá não esquecer de postar

Vi lá no site do Bruno Torres através da indicação do Ricardo para aplicação em um projeto que estou finalizando.

Trata-se de um menu dropdown com a possibilidade de navegação através do teclado. Para tal ação ser possível, usamos um javascript de fácil compreensão.

A marcação HTML é a seguinte:


<ul id="menu">
<li><a href=”/”>Início</a></li>
<li><a href=”/servicos”>Serviços</a>
<ul>
<li><a href=”/servicos/design”>Design</a></li>
<li><a href=”/servicos/prog”>Programação</a></li>
</ul>
</li>
</ul>

O css..


ul{ list-style:none; }
#menu li {
float:left;
position:relative;
}
#menu li ul {
display:none;
position:absolute;
top:0.9em;
left:0;
margin:0;
padding:0;
}
#menu li:hover ul { display:block; }

E o script:


var lis = document.getElementsByTagName('li');
for (var i = 0, li; li = lis[i]; i++){var link = li.getElementsByTagName('a')[0];
if (link){
link.onfocus = function(){
var ul = this.parentNode.getElementsByTagName('ul')[0];
if (ul)
ul.style.display = 'block';
}
var ul = link.parentNode.getElementsByTagName('ul')[0];
if (ul){
var ullinks = ul.getElementsByTagName('a');
var ullinksqty = ullinks.length;
var lastItem = ullinks[ullinksqty - 1];
if (lastItem){
lastItem.onblur = function(){
this.parentNode.parentNode.style.display = 'none';
}
lastItem.parentNode.onblur = function(){
this.parentNode.style.display = ”;
}
}
}
}
}

Para ler o artigo original basta clicar aqui

4 comentários sobre Menu dropdown acessível

  1. augusto 

    veja bem o site que você linkou o bruno torres lá em cima :P

  2. macaco 

    Corrigido. Valeu Augusto :]

  3. DaM 

    Muito boa a dica. Tava querendo um script assim a tempos. Valew

  4. Bruno 

    Agradece a Bruno Torres ;]

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>