SP CSS – Etude menu déroulant par Stéphane MICHEL • Etude du
Transcription
SP CSS – Etude menu déroulant par Stéphane MICHEL • Etude du
SP CSS – Etude menu déroulant par Stéphane MICHEL Lien du menu étudié à partir du site cssplay : http://www.cssplay.co.uk/menus/cssplay-ipad-flyout-menufixed.html Etude du code HTML sans CSS Le code HTML pour réaliser ce menu comprend une liste de base dont les éléments (flèches rouge) forment le bloc principal. Certains éléments comprennent ensuite des listes imbriquées sur un ou plusieurs niveau selon les besoins (flèches verts, bleu ou rose). L’ensemble est contenu dans une balise <div> (encart orange). Etude du code CSS La mise en forme du menu ainsi que son animation sont réalisés à l’aide des propriétés CSS. Nous pouvons en voir un aperçu ci-après : Au niveau de la mise en forme nous pouvons par exemple noter l’effet de dégradé ainsi que les bords arrondis des différents blocs. Ceux-ci sont obtenu à l’aide du code suivant, et plus particulièrement les propriétés background-image pour les dégradés et border pour les coins arrondis. Pour ce qui est de l’animation du menu, son état initial quand il n’y a pas de survol est le suivant : L’aperçu ci-contre contient bien le code complet, aussi bien HTML que CSS, et pourtant nous ne voyons pas la totalité des éléments. Pour trouver l’explication il faut analyser l’extrait de code suivant : Cette partie du code va agir sur un ul descendant d’un ul et contenu dans un élément ayant comme id menu . Les propriétés position, left, margin-top et margin-left nous donnent des indications sur la placement des blocs les uns par rapports aux autres : - Left :100% place l’élément directement contre le bord droit de l’élément placé sur sa gauche. Margin-top :-31px :décale l’élément de 31px vers la bas. Margin-left :-8px : décale l’élément de 8px vers la gauche. Il reste la propriété display , qui avec son attribut none nous indique que les éléments qu’elle va affecter sont masqués. Ceci explique donc pourquoi sur l’aperçu précédent nous ne visualisons que le bloc principal et non les blocs descendant. Afin de bien comprendre le rôle de l’attribut none, voici ce que nous obtenons en remplaçant celui-ci par block : Ici chacune des listes du code HTML est affichée dans son bloc avec la mise en forme prévu par les CSS. Ceci illustre bien la différence entre l’attribut none et l’attribut block pour cette propriété display. Sur l’exemple ci-dessus nous pouvons voir le placement des blocs qui a été décrit plus haut. L’exemple cidessous nous montre les mêmes éléments avec simplement les propriétés margin-top et margin-left modifiées Margin-top :-31px 50px Margin-left :-8px 20px On constate bien le décalage par rapport aux valeurs d’origines. Intéressons-nous maintenant à l’extrait de code qui permet de dérouler les sous-menu quand on survol certains éléments. Tout d’abord voici ce que l’on obtient si l’on déroule le menu sur plusieurs niveau : C’est dans l’extrait de code suivant que cela se passe : Cet extrait de code agit sur un ul qui est fils d’un li qui est survolé et qui est descendant d’un ul. C’est la propriété display avec son attribut block qui permet d’obtenir ce que l’on voit sur l’extrait ci-dessus. Faisons l’essai en remplaçant block par none : Nous pouvons constater que même lorsque nous survolons un éléments il n’y a pas d’effet, l’éléments descendant n’apparait pas. Conclusion : Dans cet exemple c’est donc la propriété display qui joue un rôle primordial avec ses deux attributs none et block. C’est cette propriété qui va permettre d’afficher ou de masquer des éléments selon les situations. Ensuite ce sont les propriétés position, left, margin-top et margin-left qui jouent un rôle important pour le placement des blocs.