Pergunta

Qual é a melhor maneira de implementar 'botões' rollover como Stackoverflow tem para 'Perguntas', 'Tags', 'Usuários' no topo.

Na verdade, é implementado como esta:

<div class="nav">            
<ul class="primarynav">
      <li class="">
           <a href="/questions">Questions</a>
      </li>
      <li class="">
           <a href="/tags">Tags</a>
      </li>
      <li class="">
           <a href="/users">Users</a>
      </li>
      <li class="">
          <a href="/badges">Badges</a>
      </li>
      <li class="">
          <a href="/unanswered">Unanswered</a>
      </li>
 </ul> 

Eu meio que desistiu de tentar encontrar o javascript para isso desde toda a javsascript parece estar em uma linha.

Eu estava pensando que as pessoas pensam é o mais maneira mais simples / confiável para implementar botões simples como isto.

Eu achei muito interessante que stackoverflow está usando <li> e não algo como <span>. Curioso para saber por ...

PS. Estou usando ASP.NET -. Actualmente sem outras bibliotecas como JQuery, mas dispostos a tentar algo assim, se ele vai ajudar

Foi útil?

Solução

Não há nenhuma javascript necessário para efeitos de foco em links. Basta usar a: hover pseudo-classe :

a:hover {
    background-color:#FF9900; 
}

Em relação ao menu, é bastante comum para implementar navegação usando listas não ordenadas .

Outras dicas

usando li elementos faz sentido, porque estas são listas (de links), dando a semântica ligações. Quando as coisas estão semanticamente marcado, o documento pode ser entendido por navegadores não-visuais, tais como motores de busca e pessoas visualmente-impared utilizando leitores de tela.

decompondo-o, o seu css conduzido:

.primarynav li {
    margin-right:7px;
}
.primarynav li:hover {
   background-color:#FF9900;
}

Firebug é meu amigo.

No entanto, não há nenhuma razão por que ele não ser feito com javascript

jQuery(function($){ 
      $("ul#nav li").each(function(i,v){ 
           $(v).hover(function(){ 
              $(v).addClass("hovered"); 
           },function(){ 
              $(v).removeClass("hovered");
           }); 
      });
});

CSS apenas:

a.tagLink {
    background-color: red;
}

a.tagLink:hover {
    background-color: blue;
}

Você não precisa usar JavaScript para isso; algumas simples CSS será suficiente:

a:hover {
    background-color: /* something magical */;
}

Observe a parte ":hover" do seletor; essa é a parte mágica, e ele funciona em elementos não <a>, também, embora algumas versões mais antigas do IE irá ignorá-lo para outra coisa senão uma ligação.

Obviamente, você pode combinar bits adicionais no seletor para limitar esse efeito aos seus links de navegação, ou o que você deseja alcançar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top