Bonjour.
Je cherche à mettre en place un menu qui réponde au critères suivants :
- css only, pas de JavaScript
- horizontal
- avec 1 menu déroulant en-dessous de certains items qui se déploie au hover, ou alors au clic, ça m'est égal (mais au clic, ça suppose que si on clic sur un autre item, ça ferme en même temps celui qui est éventuellement déjà ouvert...)
- largeur 100% de la fenêtre
- qui reste forcément sur une seule ligne même si on réduit beaucoup la largeur de la fenêtre, quitte à sortir de la fenêtre
- dont les items s'agrandissent (en rétrécissant les autres) au passage de la souris
La meilleure solution que j'ai trouvé pour l'instant, c'est de le faire sous la forme d'un tableau, avec les display table, table-row et table-cell, ce qui permet de garantir :
- qu'il ne va pas passer sur une deuxième ligne si la fenêtre est rétrécie
- que je peux contrôler la largeur des items au hover
Mon problème, c'est que je ne vois pas comment mettre en place les sous-menus.
- comme les items sont des cellules, leurs sous-menus respectifs ne peuvent pas en faire partie ou être un élément enfant, sinon lorsqu'un apparait, il agrandit toute la ligne de cellules en hauteur. A moins, bien sûr de forcer le débordement, mais ça ne me parait pas possible dans une cellule de tableau.
- si je met les sous-menus dans des div à part pour les faire apparaitre au hover sur un item, comment je fais pour les cibler avec un :hover depuis l'item correspondant ?
- si je met les sous-menus dans des div à part pour les faire apparaitre au clic sur un item, ça fonctionne grâce à :target mais comment je fais pour les faire disparaitre au clic sur un autre item ?
Merci d'avance pour vos idées
Modifié par louisss (19 Apr 2013 - 12:31)
Je cherche à mettre en place un menu qui réponde au critères suivants :
- css only, pas de JavaScript
- horizontal
- avec 1 menu déroulant en-dessous de certains items qui se déploie au hover, ou alors au clic, ça m'est égal (mais au clic, ça suppose que si on clic sur un autre item, ça ferme en même temps celui qui est éventuellement déjà ouvert...)
- largeur 100% de la fenêtre
- qui reste forcément sur une seule ligne même si on réduit beaucoup la largeur de la fenêtre, quitte à sortir de la fenêtre
- dont les items s'agrandissent (en rétrécissant les autres) au passage de la souris
La meilleure solution que j'ai trouvé pour l'instant, c'est de le faire sous la forme d'un tableau, avec les display table, table-row et table-cell, ce qui permet de garantir :
- qu'il ne va pas passer sur une deuxième ligne si la fenêtre est rétrécie
- que je peux contrôler la largeur des items au hover
Mon problème, c'est que je ne vois pas comment mettre en place les sous-menus.
- comme les items sont des cellules, leurs sous-menus respectifs ne peuvent pas en faire partie ou être un élément enfant, sinon lorsqu'un apparait, il agrandit toute la ligne de cellules en hauteur. A moins, bien sûr de forcer le débordement, mais ça ne me parait pas possible dans une cellule de tableau.
- si je met les sous-menus dans des div à part pour les faire apparaitre au hover sur un item, comment je fais pour les cibler avec un :hover depuis l'item correspondant ?
- si je met les sous-menus dans des div à part pour les faire apparaitre au clic sur un item, ça fonctionne grâce à :target mais comment je fais pour les faire disparaitre au clic sur un autre item ?
Merci d'avance pour vos idées
Modifié par louisss (19 Apr 2013 - 12:31)