Description
-
Rien
- Voici l'état du menu lorsqu'aucun CSS n'est appliqué
- Il est très important que la liste imbriquée soit bien formée. C'est à dire que les
uldes sous-menus soient à l'intérieur duliet non d'unul. - Remarquez que les éléments qui ont un sous-menu ne sont habituellement pas cliquables puisque leur but est de porésenter les élémentds du sous-menu qui, eux, sopnt cliquables. On les a donc définis à l'aide de la balise
span. - Notez également que ces balise
spancontiennent un attributtabindex="1". Cet attribut sera utilisé dans l'étape "Cliquable".
Avantages
- Rapide
- Facile
Inconvénients
- Laid
- Pas ergonomique
- Peut devenir long
-
Base
- Placer le menu à gauche du texte à l'aide de
flexou degrid. - Enlever les puces, le
marginet lepaddingdes listes (ul) - Enlever la couleur et le soulignement des liens.
- Faire bien attention de restreindre les changements au contenu du menu (pas aux autres listes de la page).
Avantages
- Rapide
- Facile
Inconvénients
- On ne voit plus la hiérarchie
- Pas du tout ergonomique
- Placer le menu à gauche du texte à l'aide de
-
Boutons
- Ajouter un peu de formatage aux liens.
- Ajouter la pseudo-classe
hoverpour voir le bouton survolé.
Avantages
- Un peu plus joli
Inconvénients
- On ne voit pas la hiérarchie à moins de survoler le sous-menu.
- Peu ergonomique.
-
Erreurs de base
- Changer la police :
-family,-weight,-style,-size,-variant,text-transformou autres.
Avantages
- Aucun
Inconvénients
- Brise l'illusion de stabilité si importante dans une interface bien faite.
- Changer la police :
-
Hiérarchie
- Accentuer la hiérarchie en ajoutant un changement visible, comme l'arrière-plan, les bordures, un padding, un margin...
- On peut également mettre un indicateur sur les éléments qui ont un sous-menu. En l'occurence, on ajoute un triangle avec une règle contenant
::after. - Dans cet exemple, les parents des sous-menus se reconnaissent au fait qu'ils n'ont pas de lien et sont donc définis par un
span.
Avantages
- On voit la hiérarchie des menus.
Inconvénients
- Peut devenir long si on a un menu complexe.
-
Hiérarchie cachée
- Cacher le sous-menu lorsque la souris n'est pas sur l'élément de menu.
- Pour ce faire, on applique la propriété
display: none;dans une règle avec un sélecteur qui ressemble à... li:not(:hover) > ul
Avantages
- On ne voit par défaut que le premier niveau, on peut donc avoir un menu complèxe qui ne prend pas trop de place.
Inconvénients
- Lorsque le sous-menu apparaît, la page bouge beaucoup, ce qui rend parfois les autres éléments du menu difficiles à atteindre.
-
Hiérarchie flottante
- Rendre le sous-menu flottant à l'aide de
position: absolute;.
Avantages
- La page ne bouge pas autant.
Inconvénients
- Le sous-menu est par-dessus et cache l'élément suivant. Il est donc difficile de le sélectionner.
- La superposition des sous-menus peut devenir mélangeante.
- Rendre le sous-menu flottant à l'aide de
-
Hiérarchie à droite
- On déplace le menu à droite du menu parent.
- Pour ce faire, on donne le propriété
left: 100%;au sous-menu. - Il faut s'assurer que le menu parent a la propriété
position: relative;sinon, le sous-menu ira à droite de la page.
Avantages
- Le menu est (presque) parfait
Inconvénients
- Parfois, ça peut être agaçant pour l'usager d'avoir un menu qui apparaît lorsqu'on bouge la souris.
-
Cliquable
- Le sous-menu n'apparaît maintenant si l'on clique sur son parent.
- On remplace simplement le sélecteur
nav li:not(par:hover) > ulnav li:not(:focus-within) > ul - Pour qu'un élément (autre qu'un lien ou un élément de formulaire) puisse "avoir le focus", il doit avoir l'attribut
tabindexavec un entier comme valeur.
Avantages
- Une meilleure illusion de stabilité.
- Le menu ne disparaît pas par accident.
Inconvénients
- Parfois on peut ne pas se rendre compte que l'élément est cliquable.
-
Hamburger
- Pour le faire aparaître, il faut réduire la largeur de la fenêtre.
- S'utilise habituellement sur une interface mobile.
- On affiche le bouton et on cache le menu comme si c'était un sous-menu avec la règle
nav:not(:focus-within)>ul { display: none; } - Puisqu'un bouton peut avoir le "focus", il activera l'affichage du menu.
- Ajouter un media-query permettant de voir le hamburger seulement si la largeur est en deça d'un certain seuil. Ex.:
@media (max-width: 1000px).
Avantages
- Prend moins de place à l'écran
Inconvénients
- C'est un clic de plus pour obtenir ce que l'on veut.
-
Horizontal
- Description à venir
Avantages
Inconvénients
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque consectetur ipsum porta orci pellentesque ultrices. Curabitur tincidunt, mauris eget vulputate ullamcorper, nibh nisi facilisis quam, eget scelerisque neque felis non massa. Morbi eleifend orci at magna porta viverra. Pellentesque justo diam, lobortis vel aliquam et, tempus non diam. Etiam facilisis neque non nulla porta eget tincidunt elit volutpat. Mauris pulvinar pulvinar urna quis sollicitudin. Proin dignissim magna eu orci vehicula rhoncus.
Nisi ut inventore excepturi, voluptatibus accusantium veniam, aperiam odio impedit temporibus minus vero totam possimus amet nesciunt nostrum perferendis deserunt autem? Et ipsa, incidunt asperiores placeat nulla delectus necessitatibus ducimus.
Eum officiis, ex pariatur suscipit a tenetur nobis veritatis consequuntur quasi illum laborum soluta libero nesciunt harum. Iure eligendi assumenda id, repudiandae rem, in magnam iusto veritatis, qui excepturi porro.
Facere veritatis error laboriosam ut perferendis quidem quia architecto, libero impedit necessitatibus voluptatum! Perspiciatis animi ad distinctio quisquam, eligendi delectus iste dolorem ducimus at consequatur atque sapiente quod enim ipsam!
Inventore voluptatibus, quam porro. Odit suscipit quaerat temporibus illum itaque impedit harum odio quidem a minima alias consequuntur quasi, tempore eligendi obcaecati quo labore dolore eaque soluta sint facilis placeat.