| Auteur | |
|---|---|
| jpv56 | # 19 Mar 2010 - 21:27:37 |
| 68 Posts |
Bonsoir à tous, J'ai besoin de réaliser un menu horizontal (déroulant). Mon menu prendra toute la largeur du design sans qu'il y ait de bloc adjacent. Puis-je me satisfaire d'un display:inline afin de rendre ce menu horizontal ? Ou bien dois-je plutôt opter pour un menu flottant ? Je pensais la première solution la plus logique (car pas de bloc adjacent) mais j'ai lu un peu tout et son contraire. Le fait de prévoir un menu déroulant impose peut être de choisir un "flottant" ? Merci de m'indiquer quelle solution est la meilleure. jpv56 Modifié par jpv56 (19 Mar 2010 - 22:30) |
| Raphael | # 19 Mar 2010 - 21:37:12 |
twitter.com/goetter Administrateur 12017 Posts |
Hello, Les 2 méthodes te permettront de parvenir au résultat, mais selon tes contraintes l'une sera mieux adaptée que l'autre. A savoir que dans l'idéal il vaut toujours mieux privilégier le flux (donc display). - Float sort du flux, il y aura donc de nouvelles contraintes à gérer (peut-être) : bugs éventuels, dépassement de flottants, etc. Par contre, un élément flottant hérite d'un rendu block (il sera donc dimensionnable, entre autre) - Display inline reste dans le flux donc ne posera pas de souci d'affichage, mais les éléments ne pourront pas être dimensionnés. - Display: inline-block me semble être une solution de plus en plus envisageable dans ce cas de figure Modifié par Raphael (19 Mar 2010 - 21:38) Le livre qui va vous permettre d'aller (vraiment) plus loin avec CSS : "CSS avancées - vers HTML5 et CSS3" |
| jpv56 | # 19 Mar 2010 - 21:48:25 |
| 68 Posts |
Merci pour ta réponse Raphael. Comme je débute (laborieusement) je vais suivre tes conseils et privilégier le display:inline. Je me permets une autre question. J'ai suivi ton tuto permettant d'arrondir un menu et le résultat me convient bien (sauf ie qui fait encore des siennes). Mais évidemment ce formatage s'applique aussi à mes "sous items". Or je voudrais les rendre rectangulaires (avec arrêtes). Comment faut-il procéder ? Et surtout où dois-je intervenir dans le CSS ? Merci d'avance. jpv56 |
| Raphael | # 19 Mar 2010 - 22:14:44 |
twitter.com/goetter Administrateur 12017 Posts |
jpv56 a écrit : Difficile de deviner ce que tu as pu faire sans voir... ce que tu as fait. Le livre qui va vous permettre d'aller (vraiment) plus loin avec CSS : "CSS avancées - vers HTML5 et CSS3" |
| jpv56 | # 19 Mar 2010 - 22:29:21 |
| 68 Posts |
Oui c'est vrai... En fait je réalise actuellement des essais et je n'ai pas encore placé de menu déroulant en ligne. J'essaie déjà de comprendre comment ça marche en local. Mais je vais m'y employer rapidement afin de solliciter votre aide. En attendant, bonne soirée et merci encore. |
| fvsch | # 19 Mar 2010 - 22:33:41 |
| Administrateur 19942 Posts |
jpv56 a écrit : C'est le comportement d'une ligne de tableau, ça. Donc quelque chose me dit que tu vas avoir besoin de display:table-cell, ou éventuellement d'un tableau de mise en page pour être compatible IE7. jpv56 a écrit : Si ta seule contrainte est d'avoir un menu horizontal, oui. Si tu veux pouvoir mettre en forme chaque item de menu comme une boite, non. Si tu veux disposer tes items de menu sur toute la largeur de manière dynamique, non plus. jpv56 a écrit : Un menu flottant, ça sert à rien pour faire un menu horizontal. Si par contre ce sont les items de menu que tu veux faire flotter, là ça devient plus logique. Alors oui, c'est une piste viable. Par contre il faudra mettre tous les items à gauche ou tous à droite. jpv56 a écrit : Il y a plusieurs solutions (pour l'essentiel, quatre type de positionnement utilisables) pour un menu horizontal. La solution à retenir va dépendre de la compatibilité attendue (vieux navigateurs ou pas?), et des besoins précis en termes de répartition des éléments dans l'espace. jpv56 a écrit : Ça implique un internement en hopital psychiatrique, mais pas l'utilisation de float. jpv56 a écrit : La meilleure solution est celle qui répond aux contraintes que tu n'exprimes pas. Modifié par Florent V. (19 Mar 2010 - 22:33) |
| Hermann | # 19 Mar 2010 - 22:38:39 |
| 4045 Posts |
Raphael a écrit : Salut Raphael, personnellement je recommande plutôt d'utiliser le float. Le problème du display:inline comme de l'inline-block c'est que ça génère comme tu le sais des espaces non significatifs lorsqu'il y a des espaces ou des retours chariot dans le code. La solution des marges négatives pour pallier à ça n'est pas hyper fiable (différence d'un navigateur à l'autre). A moins qu'il existe une astuce? |
| gc-nomade | # 19 Mar 2010 - 23:08:25 |
gcyrillus en mode portable 790 Posts |
bonsoir hermann on peut aussi jouer sur le letter-spacing du parent et le recalibrer pour les elements enfants , jouer sur le font-size , ne pas indenter son code , etc ... tout reste un peu aléatoire quand même. GC GC rien , mais GC encore ... et ça marche via la V.A.E. je passe d'un B.E.P. a un B.T.S. ... ce qui apparemment ne flatte que mon ego !? Je vois le monde de ma porte, pas vous ? |
| Hermann | # 20 Mar 2010 - 11:36:33 |
| 4045 Posts |
gc-nomade a écrit : Bonjour Cyril, combien caches tu encore d'astuces comme celle-ci dans ta petite valise Cette technique me rappelle celle que j'avais utilisée pour le centre vertical C'est un peu du bricolage mais j'y aurais pas pensé, merci ! Pour la clarté du code je préfère le présenter avec des retours à la ligne, d'autre part c'est assez risqué : suffit d'utiliser un outil de formatage de code pour remettre les li sur plusieurs lignes. Modifié par Hermann (20 Mar 2010 - 17:49) |
| Raphael | # 20 Mar 2010 - 15:03:41 |
twitter.com/goetter Administrateur 12017 Posts |
gc-nomade a écrit : Oui, ou de rajouter des commentaires vides entre la balise fermante et la balise ouvrante suivante. PS : rien n'indique que les éléments de liste doivent être collés les uns aux autres non-plus Le livre qui va vous permettre d'aller (vraiment) plus loin avec CSS : "CSS avancées - vers HTML5 et CSS3" |
| jpv56 | # 20 Mar 2010 - 16:18:17 |
| 68 Posts |
Bonjour à tous, J'essaie désespérément de créer un menu horizontal avec des sous menus déroulants. Et c'est vraiment la catastrophe ! J'ai choisi display:inline car mon menu prendra toute la largeur du design (pas de bloc adjacent) et parce que je ne veux pas ajouter d'effets particuliers sur les boutons (un simple survol suffira et au mieux un coin arrondi). Lorsque j'essaie d'ajouter un menu déroulant, les boutons item3 et item 4 quittent leur position en ligne. Voir image ci-dessous (le menu déroulant est en orange). Est-ce normal ? Par ailleurs ce menu déroulant est toujours décalé vers la droite sous le bouton principal. Je dois avoir des erreurs dans mon code. Si quelqu'un pouvait me corriger ou m'orienter dans la bonne direction, merci d'avance ! HTML: CSS: |
| fvsch | # 20 Mar 2010 - 21:05:24 |
| Administrateur 19942 Posts |
Pour commencer, ton HTML est faux. Tu as une erreur d'imbrication (un UL enfant d'un UL, c'est pas possible), et une erreur d'ordre de fermeture de balises (</ul></li> là où on attendrait </li></ul>). |
| gc-nomade | # 20 Mar 2010 - 21:13:24 |
gcyrillus en mode portable 790 Posts |
Tu devrais aussi extraire du flux les elements que tu veut afficher ponctuellement en sus . @hermann & @rapahael , ah oui Les commentaires html c'est plus propre que le letter-spacing , pas besoin de commenter les css du coup. Sinon , pas vraiment une besace d'astuces , de l'observation , un peu de memoire , des test empirique . En fait IE6 est surtout le fautif a la base et aussi ce satanée layout . Modifié par gc-nomade (20 Mar 2010 - 22:18) GC rien , mais GC encore ... et ça marche via la V.A.E. je passe d'un B.E.P. a un B.T.S. ... ce qui apparemment ne flatte que mon ego !? Je vois le monde de ma porte, pas vous ? |
| jpv56 | # 20 Mar 2010 - 21:18:22 |
| 68 Posts |
Ok merci j'ai rectifié le tir. Bonne soirée. |