2013-07-09 4 views
0

J'ai développé un menu, mais je veux ajouter une fonctionnalité de clavier au menu. Lorsque le menu est focalisé, je voudrais pouvoir appuyer sur pour entrer le pour afficher le menu. Ensuite, je serais en mesure d'appuyer sur Tab pour sélectionner les éléments de menu. Ensuite, je veux appuyer sur ESC pour masquer les éléments de menu.Comment implémenter ce menu en utilisant un pseudo-classeur css?

Comment changer mon CSS?

HTML

<ul class="hMenu"> 
    <li><a href="">prod1</a> 
    <div> 
     <a href="">test1</a> 
     <a href="">test2</a> 
     <a href="">test3</a>     
    </div> 
    </li> 
    <li><a href="javascript:void(0);" >prod2</a> 
    <div> 
     <a href="">test4</a> 
     <a href="">test5</a>     
    </div> 
    </li> 
</ul> 

CSS

ul.hMenu li:hover a { 
    color:red; 
}   
ul.hMenu { 
    margin: 0; 
    padding: 0; 
    z-index: 1;    
} 
ul.hMenu li { 
    margin: 0; 
    padding: 0; 
    list-style: none; 
    float: left; 
    width:140px; 
} 
ul.hMenu li a { 
    display: block; 
    text-align: left; 
    text-decoration: none 
}   
ul.hMenu li div {      
    position: absolute;    
    display: none;     
} 
ul.hMenu div a { 
    background: yellow;  
} 
ul.hMenu li :hover { 
    background: yellow 
} 
/**Mouse hover the menus can show up**/ 
ul.hMenu li:hover div{   
    display:block; 
} 
+2

Je ne pense pas que vous pouvez le faire sans js – Horst

+0

Je suis d'accord avec @fattomhk il y a les: pseudo-sélecteurs actifs et: focus https://developer.mozilla.org/en-US/docs/Web/CSS/:active et https://developer.mozilla.org/en-US/docs/Web/CSS/:focus Le: actif ne semble fonctionner que lorsque le bouton principal de la souris est enfoncé, et le: focus ne semble être appliqué que lorsque l'élément a le focus du clavier. Pour ce que vous demandez en utilisant JavaScript pour changer les classes serait nécessaire. – HJ05

Répondre

0

Je suis venu avec une solution qui va vous aller dans la bonne direction.

CSS ne peut pas gérer les événements liés à des clés spécifiques qui sont saisies. Vous aurez besoin d'utiliser javascript, ou dans ce cas jQuery, pour vous aider.

La fonction keypress est ce que vous recherchez dans cette situation.

Je ne sais pas comment faire la fonction de tabulation, mais j'ai eu la Entrez et ESC fonctionnalités pour travailler

Voici le jQuery

$('document').ready(function() { 
    var menu = $(".hMenu"); 
    menu.hide() 
    $("body").on("keypress", function (e) { 
     if (e.keyCode === 13) { //Key Code for Enter 
      menu.fadeIn(); 
     } 
     if (e.keyCode === 27) { //Key Code for ESC 
      menu.fadeOut(); 
     } 
     if (e.keyCode === 9) { //Key Code for Tab 
      //Tabbing function here 
     } 
    }); 
}); 

Fiddle

Cela effacera efficacement le menu dans et hors lorsque vous appuyez sur la touche respective.

+0

Salut, merci pour votre réponse, je veux dire quand je me concentre sur le menu et appuyez sur Entrée, puis les éléments de menu apparaîtra. – Harim

+0

Donc, vous voulez cliquer sur les éléments du menu principal, puis appuyez sur Entrée pour afficher le sous-menu? –

+0

Oui, puis cliquez sur l'ESC va cacher le sous-menu.Aussi, nous pouvons utiliser l'onglet pour sélectionner les éléments du sous-menu. – Harim

Questions connexes