en action
Propriétéabsolute relative block pseudo class ::hover | La création d’un menu dynamique demande la maîtrise de nombreuses propriétés CSS. Ce TD est donc très intéressant pour assimiler ces notions de base. Menu[1] |
PrérequisDe nombreux pré-requis sont indispensables à la création de nouvelles fonctionnalités.
Code en actionCommençons par observer le prototype réalisé. La figure suivante montre l'ergonomie et le comportement du menu que nous devons réaliser. Les différentes catégories (Home, Services, …) sont affichées horizontalement. Les sous menus apparaissent lorsque la souris est sur les catégories Services ou Publications. Cahier des chargesLa fonctionnalité du menu apparaît clairement dans l'image précédente. Le cahier des charges pourrait s'énoncer ainsi : "Les sous-catégories apparaissent au survol des catégories". Analyse80% du travail va consister à mettre en place une stratégie. Le reste du temps sera consacré à son implémentation[2] en HTML et CSS. 🕐Rendu de l'analyse🕑Je rappelle que cette étape peut être longue[3]. Il vous faut imaginer le comportement sans forcément penser à l'implémentation. J'ai choisi pour ma part d'illustrer les différents comportement à l'aide de dessins préparatoires.
vidéo : https://youtu.be/2l8J7FJOGGo Voici un mémo (brouillon préparatoire ) des étapes essentielles. Vue 3DVoici deux vues en 3D avant la disparition des sous-menus : 🕥ImplémentationAprès l'analyse vient le temps de la traduction des fonctionnalités en et . Création de la listePour créer les catégories et les sous-catégories du menu, nous pensons aux listes et sous-listes vues en cours. Voici le code d’une liste dans une liste. Dans le code suivant, nous avons mis en avant une erreur d'écriture courante lors de la création des sous-listes.
Le <li> de la ligne 1. doit contenir la sous liste, c'est pourquoi la balise fermante doit être placée en ligne 6.
Déplacement de la liste interneVoici le code pour rendre les balises <li> conteneurs[4] pour le positionnement des sous-menus. Notez la présence de la propriété position:relative qui permet de positionner les blocs. | |||||||
Il est essentiel de comprendre l’utilisation de la propriété position: relative pour rendre le bloc "nav li" conteneur. Dans cet exemple, supprimez[5] la position relative des <li> dans la balise <nav> |
Déplacement de la liste interneLes sous menus positionnés en absolue peuvent facilement être déplacés en jouant sur la valeur top, left, right ou bottom. Il est important de comprendre pourquoi la valeur de la propriété left doit être inférieure à 7em.[6] Effet "hover"L'effet hover provoque l'apparition du bloc Effet disparitionEffet apparitionPour ceux et celles qui voudraient faire un effet !Modifier cet exemple avec Résumé
Travail personnelModifier le CSS pour afficher les sous-menus imbriqués. Commencez à ajouter des sous-sous menus puis modifiez le https://codepen.io/dupontcodepen/pen/oNYGGWBThe very bad newNote d'utilisation : sur les écrans tactiles, :hover est problématique voire impossible. La pseudo-classe :hover n'est jamais valide, ou seulement pendant un très court instant après avoir touché l'élément. Puisque les appareils à écrans tactiles sont très courants, il est important que les développeurs web ne placent pas de contenu accessible seulement lors du survol, puisque ce contenu sera caché pour les utilisateurs de tels appareils. (réf) |
|
[1] Le menu en css : http://www.cssplay.co.uk/menus/
[2] L'implémentation consiste à traduire directement les fonctionnalités en code HTML et CSS.
[3] Ce mot a finalement peu de sens ! L'idée est de vous faire comprendre que si on part sur une idée farfelue le reste de la conception risque de ne pas être robuste.
[4] Est conteneur un bloc positionné. Il sert de référence de placement pour les blocs qu'il contient.
[5] A l'aide de l'inspecteur.
[6] Vous testerez sur le code final des valeurs de la propriété left supérieures à la largeur du menu.