Comment faire un menu horizontal en css. Comment faire un menu horizontal avec une pente

Une tâche

Afficher une liste à puces horizontalement sans puces.

Décision

Balise de liste à puces

    affiche les éléments par défaut
  • verticalement les uns sur les autres. Pour créer des éléments de navigation, dans certains cas, il est pratique d'afficher la liste horizontalement. Il existe plusieurs façons d'obtenir cette vue de liste.

    Vous devez déjà savoir que HTML contient des éléments de bloc et des éléments en ligne. Les éléments en ligne ne créent pas leurs propres blocs, un exemple de tels éléments est les balises ou . Les éléments de bloc sont rendus avec nouvelle ligne et créer un bloc rectangulaire, un exemple de telles balises

    ou alors

    Alors, taguez

  • est également un élément de bloc.

    Taguer

  • ne s'est pas comporté comme un élément de bloc, vous pouvez Aide CSS faites-le en ligne.

    Responsable de la façon dont l'élément sera affiché dans le document Propriété CSS affichage. Considérez trois de ses valeurs (bien qu'il y en ait plus):

    • bloc - l'élément est rendu comme un élément de bloc.
    • inline - l'élément est rendu en ligne.
    • inline-block - élément block-line, en savoir plus sur ce type d'éléments ci-dessous, nous l'utiliserons.

    Commençons par créer une liste horizontale en transformant ses puces en éléments en ligne. Dans le style CSS, écrivons une règle dans laquelle le sélecteur li est défini sur la propriété display avec la valeur inline .

    Lister horizontalement



    Ainsi, ce style a fonctionné et a obtenu la disposition horizontale des éléments de la liste :

    Figure 1. Exemple de travail #1.

    Cette méthode présente des inconvénients. Le fait est que les éléments en ligne ont certaines restrictions, par rapport aux éléments de bloc. Par exemple, on ne peut pas leur donner une largeur et une hauteur, mais les blocs peuvent le faire.

    Par exemple, nous voulons que l'élément de menu que nous créons ait une largeur de 150px et une hauteur de 40px . Essayons de changer le style comme suit, c'est-à-dire d'ajouter deux règles qui définissent la taille de l'élément de menu :

    Ces modifications n'entraîneront aucun changement. Pour que les éléments de menu soient disposés horizontalement et pour pouvoir définir leur largeur et leur hauteur, ils doivent être définis sur le type inline-block . Changeons notre exemple de code :

    Lister horizontalement



    Ce code fonctionne et les changements sont visibles :


    Figure 2. Exemple de travail #2.

    Mais il peut y avoir différentes variantes, par exemple, nous devons afficher des listes imbriquées dans le menu :

    liste imbriquée.



    Voici la sortie de ce code :


    Figure 3. Exemple de travail #3.

    On voit que les blocs ne sont pas alignés en hauteur comme on le voudrait. Bien sûr, vous pouvez spécifier la même hauteur pour tous les blocs, mais nous ne connaissons pas toujours sa valeur exacte à l'avance, et elle peut changer.

    Et au fait, pourquoi cela se produit-il ?

    Nos blocs ont une propriété display de inline-block . Cela signifie qu'ils ont les qualités des éléments de niveau bloc (la possibilité de spécifier une largeur et une hauteur) et des éléments en ligne. Ce que nous voyons, c'est la qualité des éléments en ligne.

    Considérons une chaîne avec des caractères "A" de tailles différentes :

    A A A A A A A

    Nous voyons que toutes les lettres sont alignées verticalement avec la ligne du bas. Plus précisément, le long de la ligne de base, mais maintenant nous n'irons pas dans la nature. Donc, la même chose s'est produite avec nos blocs.

    La propriété vertical-align est utilisée pour aligner le texte verticalement. Dans notre exemple n ° 3, nous utiliserions top , ce qui alignera la bordure supérieure de l'élément sur le haut de l'élément le plus haut de la ligne.

    Pour l'instant, appliquez-le à une chaîne avec des caractères "A" de différentes tailles :

    A A A A A A A

    Il semble que les lettres « sautent » un peu. J'ai défini la bordure CSS sur la lettre la plus haute afin que vous puissiez voir qu'il n'y a en fait aucun saut, il y a un espace vide entre la bordure supérieure (qui est alignée) et le point supérieur du caractère "A".

    La propriété vertical-align doit être appliquée à chaque élément en ligne, elle n'est pas héritée. Vous pouvez en savoir plus sur cette propriété : vertical-align .

    Après cette digression, nous continuerons à placer les éléments de la liste horizontalement.

    Deuxième voie

    Vous pouvez placer des éléments de liste horizontalement à l'aide de la propriété float. Cette propriété spécifie de quel côté l'élément est aligné, a deux positions : left et right .

    Voici un exemple utilisant ce code :

    Lister horizontalement



    Voici la sortie du code :

    Figure 4. Exemple en cours d'exécution.

    L'exemple semble fonctionner. Mais il y a une nuance dans l'utilisation de cette propriété. Maintenant, nous allons l'examiner. Par exemple, prenons un code qui a deux listes horizontales avec d'une autre façon organiser les éléments horizontalement : afficher et flotter :

    Lister horizontalement



    Voici la sortie du code :

    Figure 5. Exemple en cours d'exécution.

    Dans ces exemples, les conteneurs de liste

      avoir une bordure rouge de 1 pixel d'épaisseur. Mais top liste Un qui utilise la propriété display inclut les éléments de la liste. Mais les éléments de la liste créés à l'aide de la propriété float tombent hors de leur conteneur.

      En même temps, à première vue, tout fonctionne. Mais échangeons nos listes. Mettons la liste avec la classe menu-1 dans le code avant la liste avec la classe menu-2 (maintenant elle est plus basse).

      Voici ce que nous obtenons comme résultat :

      Figure 6. Exemple en cours d'exécution.

      Les éléments du menu inférieur s'enroulent également autour du menu supérieur, car personne n'a annulé l'action de la propriété float et celle-ci s'applique à tous les éléments suivants.

      Comment résoudre ce problème?

      Pour ce faire, vous devez utiliser la propriété clear, elle annule l'élément d'habillage d'un autre élément s'il a la propriété float définie.

      Voici un exemple modifié utilisant la propriété clear :

      Lister horizontalement



      On peut voir que la liste inférieure ne s'enroule plus autour de la liste supérieure, les éléments ne se chevauchent pas. Mais dans la première liste de balises

    • encore situé à l'extérieur du conteneur
        .

        Figure 7. Exemple en cours d'exécution.

        De plus, au travail, on ne sait pas toujours quel élément suivra l'élément utilisant float . L'idéal serait de fermer le travail de la propriété float dans le même bloc dans lequel il est ouvert.

        Ceci est fait avec un pseudo élément. Voici le code :

        Lister horizontalement



        Nous avons maintenant un code fonctionnel à 100 %.

        Figure 8. Exemple en cours d'exécution.

        Cette technique avec la propriété float est généralement utilisée lors de la mise en page des sites pour aligner les colonnes créées par les balises

        . De cette façon, nous obtenons la construction normale des colonnes avec l'alignement en hauteur requis. Lorsque nous créons un menu, dans la plupart des cas, nous ne nous soucions pas de la hauteur des blocs, c'est presque toujours la même. Par conséquent, l'utilisation de la règle (display : inline-block ) dans ces cas est tout à fait justifiée.

        Mais dans un souci d'exhaustivité de la divulgation du sujet, nous nous sommes familiarisés ici avec tous options possibles. Bien qu'il puisse exister d'autres moyens, tels que l'utilisation de tableaux CSS, les moteurs de recherche recommandent fortement d'utiliser les tableaux uniquement dans le but pour lequel ils sont destinés, et non pour organiser des éléments de navigation ou autre.

        La tâche de centrer un menu horizontal peut être délicate, en particulier pour ceux qui découvrent CSS. La recherche de solutions conduit à très liste limitée méthodes, dont la plupart reposent sur des astuces CSS, JavaScript ou l'utilisation de règles non standard qui ne sont pas prises en charge par tous les navigateurs. Dans cette leçon, nous allons analyser la méthode de centrage horizontal du menu, qui utilise uniquement la norme règles css et fonctionne dans tous les navigateurs.

        Exemple de menu centré

        Ci-dessous se trouve un menu horizontal centré dans cette colonne, dans lequel le deuxième onglet est activé. Vous pouvez essayer de redimensionner la fenêtre ou la page du navigateur pour vous assurer que le menu reste toujours centré et fonctionnel.

        Sur la page de démonstration, vous pouvez voir plusieurs options de conception pour un menu centré horizontalement. N'importe lequel d'entre eux peut être utilisé dans vos projets.

        Balisage HTML

        Tous les menus, dont des exemples sont donnés dans cette leçon, utilisent une structure simple. C'est juste une liste non ordonnée de liens enveloppés dans un élément. div.

        • Premier signet
        • Deuxième signet
        • Troisième signet
        • Quatrième signet

        Code CSS du menu centré

        Vous trouverez ci-dessous le code CSS complet qui centre le menu. Et des explications sur le principe du travail sont données plus loin dans la leçon.

        #centeredmenu ( float:left; width:100%; background:#fff; border-bottom:4px solid #000; overflow:hidden; position:relative; ) #centeredmenu ul ( clear:left; float:left; list-style :aucun; margin:0; padding:0; position:relative; left:50%; text-align:center; ) #centeredmenu ul li ( display:block; float:left; list-style:none; margin:0; padding:0 ; position : relative ; right : 50 % ; ) #centeredmenu ul li a ( display:block; margin:0 0 0 1px; padding:3px 10px; background:#ddd; color:#000; text-decoration: none; line-height:1.3em; ) #centeredmenu ul li a:hover ( background:#369; color:#fff; ) #centeredmenu ul li a.active, #centeredmenu ul li a.active:hover ( color:# fff; background:#000; font-weight:gras; )

        Comment fonctionne la méthode de centrage

        L'action de la méthode est basée sur le positionnement relatif des éléments de bloc flottants les uns à l'intérieur des autres. Voyons d'abord comment la taille des éléments change lorsqu'ils sont décalés.

        Élément div(bloc) sans décalage s'étend sur toute la largeur dont il dispose.

        Mais si nous déplaçons l'élément div vers la gauche, il se réduira automatiquement à la taille de son contenu. La compression est point clé en cours de réalisation cette méthode centrage des menus. Cela aide à déplacer le menu à la bonne position.

        Menu standard aligné à gauche

        Prenons un menu standard aligné à gauche et reconcevons-le étape par étape. Pour plus de clarté, les points sont colorés en couleurs différentes, il est donc immédiatement clair ce qui est investi où.

        Faites attention aux points suivants :

        • Élément div de menu centré(rectangle bleu) est décalé vers la gauche, mais a une largeur de 100 %, il reste donc étiré pour s'adapter à toute la page.
        • Élément ul(rectangle rose) est à l'intérieur de l'élément menu centré div et se déplace vers la gauche. Cela signifie qu'il sera réduit à la largeur de son contenu, c'est-à-dire à la largeur totale de tous les signets.
        • Tous les éléments li (rectangles verts) sont à l'intérieur de l'élément ul et déplacez-vous vers la gauche. Ainsi, ils se rétrécissent à la taille des liens qu'ils contiennent et s'alignent sur une ligne horizontale.
        • A l'intérieur de chaque lien (rectangles oranges) le texte du signet est affiché : Signet 1, Signet 2, etc.

        Décaler la position d'une liste non ordonnée


        On déplace alors l'élément ulà droite de 50 % avec la position : propriété relative ; . Lorsqu'un élément est décalé d'un pourcentage dans ces conditions, il est important de se rappeler que la largeur totale des éléments qu'il contient n'est pas sa largeur. Dans notre cas, le décalage est de la moitié de la fenêtre du navigateur (ou de l'espace disponible pour l'affichage), ce qui fait que notre menu commence au milieu de la fenêtre et s'étend partiellement au-delà. Et nous passons à l'étape suivante.

        Déplacer la position de tous les éléments de menu


        Il ne reste plus qu'à déplacer tous les éléments li laissé de 50%. C'est 50% de la largeur de notre élément ul (le conteneur qui contient le menu). Ainsi, les onglets sont décalés exactement au centre de la fenêtre.

        Quelques remarques importantes

        Il y a quelques points importants à garder à l'esprit lors de l'utilisation de cette méthode de centrage :

        • Puisque l'élément ul sort partiellement de la fenêtre, cela conduit à l'affichage d'ascenseurs. Par conséquent, vous devez utiliser la règle overflow:hidden; pour l'élément div de menu centré. Ainsi, la partie saillante de l'élément div sera coupé.
        • Puisque l'élément ul n'est pas aligné sur des tabulations, vous ne pouvez pas utiliser de styles visuels pour cela. Laissez l'élément ul sans couleur d'arrière-plan ni bordure pour le rendre complètement invisible. Et les styles pour les signets ne doivent être utilisés que pour les éléments li.
        • Si vous devez définir des styles spéciaux pour le premier et le dernier onglet, vous devez ajouter une classe pour le premier et le dernier élément li afin que vous puissiez les coiffer individuellement.

        Conclusion

        La solution proposée est compatible avec tous les navigateurs, n'utilise pas JavaScript et prend en charge redimensionnable texte.

        1. Menu jQuery dynamique vertical

        2. Effet frais. Menu dansant.

        4. Liste déroulante utilisant jQuery

        Excellent style de l'élément d'interface sous la forme d'une liste déroulante.

        Lorsque vous passez la souris sur le bouton, un panneau apparaît du haut.

        6. Plugin jQuery "MobilyBlocks" pour afficher un menu circulaire

        7. Menu utilisant des sprites

        Menu javascript animé avec effet lumineux.

        Menu jQuery frais et agréable.

        9. Menu jQuery GarageDoor

        10. Menu de défilement vertical jQuery

        Mise en œuvre du menu avec grande quantité points. Défile lorsque vous déplacez le curseur de la souris vers le haut ou vers le bas.

        11. Style de liste déroulante jQuery

        12. Module de navigation de page

        Défilement fluide jusqu'à la section souhaitée sur la page. Plug-in de navigation sur une page jQuery.

        13. Plug-in de menu de contenu animé

        Nouveau plug-in jQuery. Excellente mise en œuvre de la navigation animée sur le site. Lorsque vous naviguez dans les éléments du menu, un bloc apparaît avec une description et liens possibles, tandis qu'en fonction de l'élément sélectionné, l'arrière-plan de la page change, qui s'étire pour remplir tout l'écran, quelle que soit la taille de la fenêtre du navigateur. Assurez-vous de consulter la page de démonstration.

        14. Plug-in jQuery Sweet Menu

        Menu animé avec des éléments mobiles.

        15. Menu jQuery fixe

        Lors du défilement vers le bas de la page, le menu reste fixe en haut de l'écran.

        16. Menus défilants du kit de curseur

        Pour implémenter un menu vertical avec un grand nombre d'éléments. Les éléments peuvent être défilés à l'aide de la molette de la souris ou à l'aide des liens "Previos" et "Next".

        17. Menu CSS3 élégant

        18. Nouveau menu CSS3 de style Apple

        Nouveau menu dans À la pomme. Il a l'air plus sombre qu'avant, mais pas moins joli.

        19. Menu jQuery d'origine

        Menu déroulant avec effet de fond. Les sous-éléments du menu se développent vers le haut. Lorsque vous survolez un élément de menu, l'image d'arrière-plan change.

        20. Menu jQuery animé

        Menu animé. Les éléments de menu sont présentés sous forme d'icônes et de descriptions. de superbes effets lorsque vous passez la souris sur un élément de menu. Il y a 8 effets fournis, pour les voir tous, suivez les liens Exemple1-Exemple8 sur la page de démonstration.

        21. "Menu déroulant" Menu déroulant XML

        Menus à défilement vertical et horizontal. Bonne décisionà en grand nombreéléments du menu.

        22. Menu contextuel sur le site jQuery

        Le menu apparaît au clic clic-droit passez la souris sur une certaine zone.

        23. Menu circulaire à deux niveaux pour le site

        Lorsqu'un élément de menu est sélectionné, les éléments du sous-menu s'affichent à droite.

        24. Menu jQuery CSS3 avec effet de flou "Menu Blur" CSS3

        Le menu jQuery CSS3 d'origine se décline en 7 styles différents. Lorsque vous déplacez le curseur de la souris sur l'un des éléments du menu, le reste semble flou.

        25. Quelques menus animés spectaculaires jQuery CSS3

        10 menus animés créatifs. Menus CSS3 horizontaux et verticaux avec divers effets et transitions.

        L'archive contient également l'original Fichier PSD menu.

        27. Menu Ligne Magique

        L'arrière-plan ou le soulignement de l'élément de menu suit la souris avec un léger retard, tandis que l'arrière-plan change de couleur en douceur lorsque vous vous déplacez d'un élément à l'autre. Très bel effet, semble inhabituel. Attention : l'effet ne fonctionne pas dans l'opéra

        28 bulles d'images

        Grand effet lorsque vous passez la souris sur l'une des images. L'effet rappelle quelque peu jQDock, décrit ci-dessus.

        31. Menus jQuery intéressants avec différents effets

        horizontal, menu vertical. Effets intéressants.

        32. Grand menu jQuery dans le style d'Apple

        34. Menu jQuery avec effet intéressant

        36. Menu frais avec effet jQuery intéressant

        Un effet très intéressant. Parfait pour les sites Web de portefeuille.

        Un effet intéressant des vignettes contextuelles au survol.

        40. Liste déroulante avec défilement automatique

        Bel effet de transition entre les éléments.

        42. Grand menu jQuery

        43. Joli grand menu jQuery

        44. Menus défilants jQuery

        Les éléments de menu sont affichés sous forme de vignettes.

        46. ​​Menu de navigation radiale jQuery

        47. Menus CSS et jQuery

        Une barre de navigation avec un champ de recherche qui devient translucide lorsque vous faites défiler la page.

        48. Menu jQuery horizontal

        49. Menu jQuery vertical

        Excellent menu vertical. Au survol, un élément de menu apparaît.

        50. Menu jQuery horizontal

        Effet intéressant lors du survol d'un élément de menu.

        52. Menu déroulant jQuery

        Lorsque vous déplacez le curseur de la souris sur le menu, ses éléments apparaissent. Les éléments qui apparaissent sont affichés sous la forme d'un arc dont vous pouvez définir le rayon lors de la configuration du plugin. Dans certains navigateurs, vous ne verrez pas l'affichage dans un arc, le menu s'affichera droit, mais il ne gâchera toujours pas impression généraleà partir de cette implémentation de menu jQuery.

        53. Barre de navigation CSS et jQuery

        Un effet intéressant lorsque vous passez la souris sur un élément de menu.

        54. Panneau contextuel jQuery

        Menu animé frais dans les tons gris.

        58. Navigation de site en colonne avec jQuery

        Une solution intéressante pour la navigation, qui se présente sous la forme Rayures verticales. Lorsque vous passez votre souris sur ces barres, une image de l'élément et une liste de sous-menus apparaissent. Lorsque vous cliquez sur un élément de sous-menu, une page avec une description apparaît. Cette implémentation est parfaite pour les sites promotionnels ou les présentations. Assurez-vous de consulter la démo du plugin.

        59. Navigation sur le site jQuery

        La navigation sur le site se présente sous la forme de 4 images, au survol desquelles vous remarquerez un effet animé intéressant.

        60. La barre de navigation défile avec le contenu

        Barre de navigation. Cliquer sur la flèche fait défiler la page. La navigation défile avec le contenu de la page.

        61. Panneau jQuery avec divers services sociaux

        62. Menu jQuery animé soigné

        63. Menu pinceau aquarelle jQuery

        De l'auteur : Bienvenue sur notre blog de création de site Web. Il s'agit d'une série d'articles consacrés à la nouvelle spécification, et aujourd'hui, je voudrais vous dire comment créer un menu en html5 et en quoi ce processus diffère de celui des versions précédentes du langage.

        Quelles sont les différences

        Tout d'abord, je voudrais dire que la spécification n'est pas si nouvelle - elle a commencé sa formation en 2009. En fait, depuis lors, il y a eu un développement constant - de nouvelles fonctionnalités apparaissent dans html5, navigateurs modernes de plus en plus prennent en charge ces mêmes fonctionnalités, il sera donc bientôt possible de parler de la prise en charge complète de cette technologie, bien que ce ne soit pas quelque chose d'unifié, c'est plutôt un ensemble de nouvelles fonctionnalités, chacune étant indépendante.

        Eh bien, quelle est la différence entre la création de la navigation principale (menu), puisque vous lisez un article sur ce sujet, il doit certainement y avoir quelques différences. Eh bien, comment le menu a-t-il été créé avant ? Habituellement utilisé pour cela liste à puces, qui a été placé dans un conteneur supplémentaire pour toute la navigation - une div régulière.

        Ainsi, avec l'avènement de nouvelles balises, vous pouvez désormais le faire plus correctement - au lieu de la balise div, enveloppez le menu dans nav - un nouvel élément sémantique qui a été créé spécifiquement pour collecter les liens les plus importants, les regrouper.

        Vous pouvez mettre à la fois une liste et juste un ensemble de liens dans nav. Il me semble que c'est une solution encore plus simple et plus correcte, bien que dans de nombreux modèles, vous puissiez toujours voir l'implémentation du menu en utilisant les balises ul, li, a.

        Fait intéressant, le conteneur de navigation est conçu spécifiquement pour les liens prioritaires sur la page. En fait, il peut y avoir plus d'un conteneur de ce type sur une page, mais cela vaut la peine d'y mettre uniquement les liens qui forment réellement la navigation principale (par exemple, le menu principal supérieur et son double dans le pied de page).

        Comment faire un menu horizontal en utilisant html5

        Vous n'avez même pas besoin de cadre dans la liste, tout sera initialement affiché sur une seule ligne, car les liens sont des éléments en ligne.

        Une autre chose est qu'ils sont très limités dans leur conception en raison de leurs propriétés en ligne. Vous ne pourrez opérer qu'avec des propriétés telles que : couleur, taille de police, marges. Si vous souhaitez définir un Couleur de l'arrière plan, créez des séparateurs et ajoutez des retraits (ou déterminez la taille de chaque élément de menu), cela ne fonctionnera pas avec la chaîne.

        Ici, nous devons convertir nos points en éléments de bloc. Pour ce faire, ils doivent écrire une propriété :

        bloc de visualisation ;

        Maintenant, ils vont de haut en bas, c'est-à-dire que notre navigation est devenue verticale. Pour le redevenir horizontal, vous devez ajouter certaines propriétés. Par exemple, au lieu d'un type de bloc, définissez-leur un type de ligne de bloc ou définissez-les sur (flottant : gauche). En savoir plus sur ces méthodes.

        Navigation verticale

        Habituellement, pour faire un menu vertical en html5, une liste est utilisée, mais le balisage que je vous ai donné ci-dessus est également bon pour nous. Comme vous l'avez vu, si vous convertissez les liens en liens de bloc, ils s'aligneront automatiquement les uns après les autres de haut en bas, car deux blocs ne peuvent pas se tenir sur la même ligne.

        Vous pouvez désormais leur postuler les bonnes règles motif. Les blocs ont beaucoup plus de propriétés que les éléments en ligne, vous avez donc beaucoup plus d'options. Par exemple, j'ai ajouté ceux-ci :

        a( text-decoration: none; color: #fff; padding: 5px; font-size: 22px; display: block; background: linear-gradient(to right, rgba(96,108,136,1) 0%,rgba(63,76,107 ,1) 100 % ); largeur : 200 px ; alignement du texte : centré )

        texte - décoration : aucun ;

        couleur : #fff;

        rembourrage : 5px

        taille de police : 22px ;

        bloc de visualisation ;

        arrière-plan : dégradé linéaire (à droite, rgba (96, 108, 136, 1) 0 %, rgba (63, 76, 107, 1) 100 % );

        largeur : 200px

        texte - aligner : centré

        Bonjour chers visiteurs de mon blog ! Aujourd'hui, nous allons parler du menu horizontal principal du site, à savoir comment aligner menu horizontal dans le centre. Oui, à première vue, ce qui est si difficile ici - j'ai défini les retraits nécessaires, je l'ai ajusté et c'est tout. Mais il y a quelques nuances ici. Le site, tout d'abord, est dynamique, c'est-à-dire de nouveaux contenus apparaissent constamment sur le site, de nouveaux blocs avec des informations apparaissent, etc. Ainsi, certains éléments du menu principal peuvent apparaître/disparaître. Dans cet esprit, tout ce que vous avez à faire est de vous assurer que lorsque vous ajoutez ou supprimez un élément de menu, le menu reste également au centre. Bien sûr, il n'est pas toujours nécessaire de le centrer, tout dépend du design. Mais si vous voulez toujours mettre le menu horizontal au centre, alors en appliquant quelques astuces simples en css, nous pouvons obtenir le résultat souhaité.

        Structure des articles

        Menu horizontal au centre sans éléments déroulants

        Examinons d'abord l'exemple d'un menu horizontal qui n'a pas d'éléments déroulants.

        Code HTML

        code css

        *, *::after, *::before ( -webkit-box-sizing : border-box ; -moz-box-sizing : border-box ; -o-box-sizing : border-box ; -ms-box- sizing: border-box; box-sizing: border-box; margin: 0; padding: 0; ) #mainmenu ( background: #444; position: relative; overflow: hidden; height: 40px; margin: 30px 0 ) #mainmenu ul ( style de liste : aucun ; marge : 0 ; rembourrage : 0 ; position : relative ; gauche : 50 % ; flottant : gauche ; police : 14px Arial, Helvetica, sans-serif ; hauteur : 40px ) #mainmenu ul li ( position : relatif ; gauche : -50 % ; flottant : gauche ; marge : 0 10px ; hauteur : 40px ) hauteur : 40px; ) #mainmenu ul li a:hover ( background-color: #666; )

        Prenons tout dans l'ordre, tout est simple ici. Nous créons un conteneur "mainmenu" où nous mettons notre menu sous forme de liste non ordonnée.

        Maintenant c'est fini style css. Tout d'abord, nous réinitialisons toutes les marges et le rembourrage à zéro pour tous les navigateurs. Ensuite, en utilisant la propriété "float:left", nous déplaçons notre liste non ordonnée vers la gauche, puis le positionnement relatif la décale de 50 % vers la droite. La largeur de la liste "ul" sera égale à la somme des longueurs de tous les éléments "li" qui s'y trouvent. Ainsi, si nous divisons mentalement la fenêtre du navigateur en deux, notre menu ira à droite de la ligne de séparation. Pour aligner, nous appliquerons également aux éléments "li" positionnement relatif et décalez-les vers la gauche de 50%, en spécifiant la propriété "gauche : -50%". Et pourtant, j'ai failli oublier, notre conteneur "mainmenu" doit spécifier la propriété "débordement caché", sinon on obtient bande horizontale faire défiler.

        Ça y est, notre menu est maintenant centré. Vous pouvez maintenant ajouter ou soustraire des points, cela n'affectera pas le positionnement. Vous pouvez également utiliser ce menu sur vos sites Web en modifiant simplement les styles en fonction de votre conception.

        Menu horizontal au centre avec des éléments déroulants

        Examinons maintenant les sous-éléments déroulants. Ici, la situation est un peu différente et un peu plus compliquée, car dans le premier cas, nous n'aurons pas de sous-éléments supprimés, car nous avons spécifié la propriété "overflow: hidden" au bloc "mainmenu". Cela signifie que les éléments en dehors de ce bloc ne seront pas affichés. Mais il y a une issue.

        J'ai donc modifié le code précédent et supprimé la propriété "overflow:hidden".

        Code HTML

        Code CSS

        *, *::after, *::before ( -webkit-box-sizing : border-box ; -moz-box-sizing : border-box ; -o-box-sizing : border-box ; -ms-box- sizing: border-box; box-sizing: border-box; margin: 0; padding: 0; ) #mainmenu ( position: relative; background: #444444; height: 40px; margin: 30px 0; padding: 0; float: gauche ; largeur : 100 % ; z-index : 10 , sans-serif ; style de liste : aucun ; rembourrage : 0 ; marge : 0 ) /** Points principaux **/ #mainmenu > ul > li ( position : relative ; gauche : 50 % ; float : gauche ; hauteur : 40 px ; rembourrage : 0 ; marge : 0 : 40px; ) #mainmenu > ul > li:first-child > a ( border: none ) #mainmenu > ul > li:hover > a, #mainmenu > ul > li.hover > a, #mainmenu > ul > li. active > a ( color: #fff ) #mainmenu > ul > li:hover, #mainmenu > ul > li.ho ver, #mainmenu > ul > li.active ( background: #666 ) /* Liste déroulante des sous-éléments */ #mainmenu ul li ul ( position : absolu ; gauche : 0 ; haut : 40px ; affichage : aucun ; style de liste : aucun ; visibilité : masquée ; rembourrage : 0 ; marge : 0 ; width: 200px ) #mainmenu > ul > li ul li ( background-color: #666; position: relative; left: 0; display: list-item; float: none; height: auto; margin: 0; text-align: gauche ; ) #mainmenu ul li ul li a ( border-bottom : 1px solide #999 ; affichage : bloc ; couleur : #fff ; rembourrage : 10px 15px ; texte-décoration : aucun ; ) #mainmenu ul li ul li.parent a ( position : relative ; ) #mainmenu ul li ul > li.parent > a::before ( border-top : 1px solid #fff ; border-right : 1px solid #fff ; content : "" ; display : block ; position : absolu ; droite : 15 px ; haut : 50 % ; transformation : translateY(-50 %) rotation (45 degrés) ; hauteur : 6 px ; largeur : 6 px ; ) #mainmenu ul li ul li:hover, #mainmenu ul li ul li.hover ( background-color: #444 ) #mainmenu ul li:hover ul, #mainmenu ul li.hover ul ( display: block ) /* Éléments déroulants de deuxième niveau */ #mainmenu ul li:hover > ul ( opacity: 1; visibilité : visible; margin: 0; ) #mainmenu ul li ul li ul ( top: 0; left: 200px; margin: 0 0 0 20px; width: 180px )

        Nous avons maintenant le menu défini au centre et les sous-éléments disparaissent au survol.

        Menu d'alignement central avec flexbox

        Menu Aligner au centre vous pouvez également appliquer une nouvelle règle en css - flexbox. En général, je veux consacrer un article séparé aux astuces avec flexbox, ça vaut le coup, ça simplifie grandement la vie du codeur. En général, nous n'irons pas en profondeur ici ... je ne donnerai ici que code css pour les menus déroulants. Le code HTML est le même que ci-dessus.

        Code CSS

        *, *::after, *::before ( -webkit-box-sizing : border-box ; -moz-box-sizing : border-box ; -o-box-sizing : border-box ; -ms-box- sizing: border-box; box-sizing: border-box; margin: 0; padding: 0; ) #mainmenu ( position: relative; background: #444444; height: 40px; margin: 30px 0; padding: 0; width: 100 % ; z-index : 10 ) #mainmenu ul ( display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit- box-direction : normal ; -webkit-flex-direction : ligne ; -ms-flex-direction : ligne ; flex-direction : ligne ; hauteur : 40 px ; text-align : centre ; police : 15 px Arial, Helvetica, sans-serif ; style de liste : aucun ; rembourrage : 0 ; marge : 0 ; -webkit-box-pack : centre ; -webkit-justify-content : centre ; -ms-flex-pack : centre ; justification-contenu : centre ; ) / ** Points principaux **/ #mainmenu > ul > li ( position: relative; height: 40px; padding: 0; margin: 0 ) #mainmenu > ul > li > a ( border-left: 1px solid #666; display: bloc;couleur : #fff ; décoration de texte : aucune ; rembourrage : 020px ; hauteur de ligne : 40px ) #mainmenu > ul > li:first-child > a ( border: none ) #mainmenu > ul > li:hover > a, #mainmenu > ul > li.hover > a, #mainmenu > ul > li.active > a ( color: #fff ) #mainmenu > ul > li:hover, #mainmenu > ul > li.hover, #mainmenu > ul > li.active ( background: #666 ) /* Liste déroulante des sous-éléments */ #mainmenu ul li ul ( position : absolue ; gauche : 0 ; haut : 40 pixels ; affichage : aucun ; style de liste : aucun ; visibilité : masqué ; rembourrage : 0 ; marge : 0 ; largeur : 200 pixels ) #mainmenu > ul > li ul li ( background- color : #666 ; position : relative ; left : 0 ; display : list-item ; float : none ; height : auto ; margin : 0 ; text-align : left ; ) #mainmenu ul li ul li a ( border-bottom : 1px solide #999 ; affichage : bloc ; couleur : #fff ; rembourrage : 10px 15px ; texte-décoration : aucun ; ) #mainmenu ul li ul li.parent a ( position : relative ; ) #mainmenu ul li ul > li.parent > a::before ( border-top : 1px solid #fff ; border-right : 1px solid #fff ; content : " ; affichage : bloc ; position : absolue ; droite : 15px ; haut : 50 % ; t transformation : translateY(-50 %) rotate(45deg) ; hauteur : 6px ; largeur : 6px ) #mainmenu ul li ul li:hover, #mainmenu ul li ul li.hover ( background-color: #444 ) #mainmenu ul li:hover ul, #mainmenu ul li.hover ul ( display: block ) /* Liste déroulante éléments second niveau */ #mainmenu ul li:hover > ul ( opacité : 1 ; visibilité : visible ; marge : 0 ; ) #mainmenu ul li ul li ul ( haut : 0 ; gauche : 200px ; marge : 0 0 0 20px; largeur : 180px )

        Comme vous pouvez le voir, les règles n'ont changé que pour la liste des parents - #mainmenu ul. La seule chose était d'ajouter des préfixes pour Versions précédentes navigateurs. Je note que seuls les navigateurs modernes comprennent correctement la règle flexbox. Si vous ciblez des navigateurs plus anciens, l'option flex devra être reportée. Vous pouvez voir quels navigateurs comprennent bien flexbox