Front-End Engineer & Designer / Web Designer / Web Developer
Menu Drop Down Acessível

Soluções inclusivas, em minha opinião são vitais para profissionais não só da web.
Entre tanto o que se vê por ai não é exatamente isso, mas se você está lendo este texto é porque você está há vários passos na frente de outros profissionais, e está com o pensamento certo e inclusivo.
Esta solução de menu acessível é muito fácil e funciona bem em vários navegadores como no IE6 + e em todos os browsers que dão suporte a web Standards. Funciona com teclado e mouse, e se o JavaScript estiver desabilitado dá pra acessar todos os links, mas os subitens não aparecem visualmente.
Veja o menu funcionando e vamos aos detalhes:
XHTML
É o documento de marcação onde vamos criar os nós do menu.
Vamos criar uma lista não ordenada “ul” e seus respectivos filhos e adicionar id e classes para podermos manipular alguns elementos.
<!-- As tags como o DOCTYPE, head, body e demais não vou descrever aqui para o post ser mais objetivo -->
<ul id="nav">
<li><a href="index.html">Home</a></li>
<li class="submenu"><a href="#" class="bullet">Portfólio</a>
<ul>
<li><a href="sites.html">Sites</a></li>
<li class="submenu"><a href="#" class="bullet">Interfaces</a>
<ul>
<li><a href="graficas.html">Gráficas</a></li>
<li><a href="digitais.html">Digitais</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="quemsomos.html">Quem Somos</a></li>
<li><a href="contato.html">Contato</a></li>
</ul>
CSS
É o documento de apresentação, onde vamos posicionar e dar beleza ao nosso menu.
Aqui é onde você provavelmente ira mexer mais, para poder customizar seu menu acessível.
#nav, #nav ul {
width: 70em;
list-style: none;
font: bold 12px Verdana, Arial, Helvetica, sans-serif;
padding: 0;
margin: 0;
}
#nav li {
float: left;
}
#nav a {
display: block;
width: 10em;
height: 2em;
line-height: 2;
text-align: center;
text-decoration: none;
background-color: #69c; /* IE precisa desta declaração */
color: #fff;
border: 1px solid #ccc;
border-width: 0 1px 1px
}
#nav a:hover {
text-decoration: none;
background: #c7daec;
color:#69c;
}
#nav a.bullet {
background:#69c url(bullet.gif) no-repeat right;
}
#nav a.bullet:hover {
background: #c7daec url(bullet-over.gif) no-repeat right;
}
#nav li ul {
position: absolute;
left: -1000em;
width: 10em;
margin: 0;
}
#nav ul ul {
margin: -2.1em 0 0 10.1em;
}
#nav li:hover ul ul, #nav li.over ul ul {
left: -1000em;
}
#nav li:hover ul, #nav li li:hover ul, #nav li.over ul, #nav li li.over ul {
left: auto;
}
JavaScript
O arquivo JavaScript é responsável pela ação.
É neste documento que vamos verificar os links e os subitens da lista e vamos fazer com que ele se encarregue em abrir os subitens.
<script type="text/javascript">
var dropdown_intervalId;
var dropdown_ulId = (!dropdown_ulId) ? 'nav' : dropdown_ulId;
var dropdown_delay = (!dropdown_delay) ? 0 : dropdown_delay;
function dropdown_init()
{
try
{
var as = document.getElementById(dropdown_ulId).getElementsByTagName('a');
for (var a = 0; a < as.length; a++)
{
as[a].onfocus = function() { dropdown_expand(this) }
as[a].onmouseover = function() { dropdown_expand(this) }
as[a].onblur = function() { dropdown_colapse(dropdown_delay) }
as[a].onmouseout = function() { dropdown_colapse(dropdown_delay) }
}
dropdown_colapse(0);
} catch(e){}
}
function dropdown_expand(caller)
{
try
{
clearInterval(dropdown_intervalId);
var uls = caller.parentNode.parentNode.getElementsByTagName('ul');
for (var ul = 0; ul < uls.length; ul++)
uls[ul].style.left = "-1000em";
caller.parentNode.getElementsByTagName('ul')[0].style.left = "auto";
} catch(e){}
}
function dropdown_colapse(milliseconds)
{
try
{
clearInterval(dropdown_intervalId);
dropdown_intervalId = setInterval(function()
{
var uls = document.getElementById(dropdown_ulId).getElementsByTagName('ul');
for (var ul = 0; ul < uls.length; ul++)
uls[ul].style.left = "-1000em";
clearInterval(dropdown_intervalId);
}, milliseconds, null);
} catch(e){}
}
window.onload = dropdown_init;
</script>
Esse menu foi tema de debate na lista Acesso Digital, e esse post foi baseado na resposta do Gil Porta membro da lista, e o menu foi desenvolvido por Alexandre Junqueira.
| Imprimir artigo | Este artigo foi escrito por Felipe de Albuquerque em 19 de outubro de 2009 às 16:20, e está arquivado em Acessibilidade. Siga quaisquer respostas a este artigo através do RSS 2.0. Você pode deixar uma resposta ou fazer um trackback do seu próprio site. |
jQuery menu drop down com apenas 6 linhas
há 1 ano atrás - Nenhum comentário
Hoje tentaremos fazer jus ao slogan da biblioteca jQuery “Write less, do more” e faremos um menu drop down, com apenas 6 linhas de código JavaScript. Algumas explicações prévias: Ha algum tempo atrás, publiquei um post sobre como fazer um menu com jQuery, utilizando um método de evento do mouse (hover). Usaremos o mesmo método,
Menu Drop Down com jQuery
há 1 ano atrás - 5 comentários
Vou descrever um menu drop down feito com XHTML, CSS e jQuery que ficará assim. É muito simples e os arquivos estão aqui. Este menu irá utilizar um método de evento do mouse “hover” e não permite navegação através de teclado, por tantanto ele não é acessível, mas caso seu objetivo seja um menu inclusivo
Imagens e Imagens com Hiperlink Acessíveis
há 2 anos atrás - 3 comentários
Utilize texto alternativo Nas imagens, utilize o atributo alt=”….” do elemento <img /> para dar uma descrição textual à imagem. <img src=”images/fuscaPreto.jpg” alt=”Foto de um fusca preto” title=”Foto de um fusca preto” /> Enquanto a imagem está sendo carregada ou quando por algum motivo a imagem não é exibida, o texto alternativo alt=”Foto de um
Link Acessível
há 2 anos atrás - Nenhum comentário
Para fazer com que os links fiquem acessíveis “href acessível” para leitores de telas e usuários que usam o teclado para navegar na internet. É bem simples e vou descrever algumas técnicas, tentando ser mais claro e objetivo possível. Adicionando o Atributo “title” O atributo “title” é muito importante, é ele que vai dar a
Contar caracteres com javaScript
há 2 anos atrás - 2 comentários
Existe uma propriedade nativa do JavaScript chamada length que tem a função de contar. A sintaxe é muito fácil “String.length” onde string é o objeto que queremos contar e o length é quem se encarregará pela contagem. Obs: está propriedade também conta espaço em branco. Muito bom pra verificar se a senha foi digitada com
Progressive Enhancement
há 2 anos atrás - 4 comentários
A melhoria progressiva é uma estratégia de web design que enfatiza a acessibilidade, a marcação semântica e estilo externo e tecnologias de script. Ela usa tecnologias da web em camadas que permite a todos o acesso a conteúdos e funcionalidades básicas de uma página web usando qualquer navegador ou ligação à Internet, fornecendo também aqueles
Acessibilidade, Você já pensou nisso?
há 2 anos atrás - 2 comentários
Você já pensou nisso? Este termo se refere a tornar as coisas mais acessíveis, dar acesso de algo para alguém, isso vai desde criar uma calçada com rampa para cadeirantes a construir web sites para usuários invisuais. web sites para cegos? realmente pode parecer loucura mas o caso é que esse publico existe e é
Cantos Arredondados
há 2 anos atrás - Nenhum comentário
Sempre foi muito trabalhoso fazer cantos arredondados e as soluções são diversas. Entre minhas buscas encontrei soluções com javaScript, que não me agradaram muito, mas agora com o CSS3 finalmente encontrei algo que em breve será solução definitiva para este problema. Não tem mistério é até muito simples. Vejamos como isso funciona. border-radius:10px; -moz-border-radius: 10px;
há 1 ano atrás
Resumindo, não funciona onde mais se espera que funcione, no IE6 !
há 1 ano atrás
Acredito que você copiou o código incorrectamente.
Essa solução funciona bem em todos os navegadores.
pode testar