2009-01-12 8 views
3

Quel est le meilleur moyen d'implémenter des boutons de survol comme Stackoverflow a pour 'Questions', 'Tags', 'Utilisateurs' en haut.Meilleure façon de coder les boutons rolloverflow style 'questions'/'tags'

Il est effectivement mis en œuvre comme ceci:

<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> 

J'ai un peu à essayer de trouver le javascript pour cela car tout le javsascript semble être sur une seule ligne. Je me demandais juste ce que les gens pensent est la manière la plus simple/la plus fiable d'implémenter des boutons simples comme celui-ci. J'ai trouvé très intéressant que stackoverflow utilise <li> et pas quelque chose comme <span>. Curieux de savoir pourquoi ...

PS. J'utilise ASP.NET - actuellement sans autres bibliothèques comme JQuery, mais je suis prêt à essayer quelque chose comme ça si ça peut aider.

+0

Il est une liste de liens. Pourquoi _n'utiliseriez-vous pas la balise "item de liste" pour cela? Quelle signification un «» vous donne-t-il? –

Répondre

15

Il n'y a pas de javascript nécessaire pour les effets de survol sur les liens. Il suffit d'utiliser: hover pseudo-class:

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

En ce qui concerne le menu, il est assez fréquent de mettre en œuvre navigation using unordered lists.

+0

Notez que vous devrez définir la hauteur de ligne du lien à la hauteur du bouton que vous voulez. vous pouvez aussi utiliser cette pseudo-classe sur d'autres éléments (comme li) sauf que ça ne marche pas dans IE6.Assurez-vous également lors de l'utilisation de cette méthode pour définir les pseudo-classes sur votre a: LOve HaTe –

+0

+ 1 réponse uniquement à l'utilisation de LI –

+0

Oui, LI pour la navigation est tout à fait logique avec le balisage HTML disponible. Cet article de 2002 sur A List Apart a largement influencé les conventions de balisage que vous voyez aujourd'hui: "... Je trouve que la plupart des pages sur le web contiennent un menu de liens dans une zone de navigation. une chaîne de liens, souvent dans des DIV ou des paragraphes séparés, mais structurellement, ils constituent une liste de liens, et devraient être marqués comme tels. " - http://www.alistapart.com/articles/taminglists/ – RwwL

1

CSS seulement:

a.tagLink { 
    background-color: red; 
} 

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

Vous n'avez pas besoin d'utiliser JavaScript pour cela; certains CSS simple, suffit:

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

Notez la partie ":hover" du sélecteur; C'est le bit magique, et il fonctionne aussi sur des éléments non-<a>, bien que certaines versions plus anciennes d'IE ne tiennent pas compte d'autre chose qu'un lien.

De toute évidence, vous pouvez combiner des bits supplémentaires dans le sélecteur pour limiter cet effet à vos liens de navigation, ou ce que vous voulez réaliser.

3

en utilisant li les éléments ont du sens car ce sont des listes (de liens), donnant les liens sémantiques. Lorsque les objets sont balisés sémantiquement, le document peut être compris par des navigateurs non visuels, tels que des moteurs de recherche et des personnes visuellement imparfaites utilisant des lecteurs d'écran.

3

décomposant, son css Driven:

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

Firebug est mon ami.

Cependant, il n'y a aucune raison pour laquelle il ne pouvait pas être fait avec javascript

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