{"id":1665,"date":"2012-01-08T23:11:08","date_gmt":"2012-01-08T22:11:08","guid":{"rendered":"https:\/\/www.creativejuiz.fr\/blog\/?p=1665"},"modified":"2018-07-15T21:48:03","modified_gmt":"2018-07-15T19:48:03","slug":"creer-menu-horizontal-centre-css-sans-javascript","status":"publish","type":"post","link":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/creer-menu-horizontal-centre-css-sans-javascript","title":{"rendered":"Cr\u00e9er un menu horizontal centr\u00e9 en CSS (sans JavaScript)"},"content":{"rendered":"<p>C&rsquo;est une chose qui peut para\u00eetre tr\u00e8s simple \u00e0 faire, mais sur laquelle beaucoup de personnes se sont cass\u00e9s les dents.<br \/>\nAujourd&rsquo;hui encore je trouve des solutions en JavaScript qui permettent d&rsquo;attribuer une marge \u00e0 gauche de l&rsquo;\u00e9l\u00e9ment <code>ul<\/code> pour centrer les <code>li<\/code> qu&rsquo;il contient.<!--more--><br \/>\nVoyons en quelques lignes de <abbr>CSS<\/abbr> comment faire fonctionner un centrage de liens dans un menu horizontal sur tous les navigateurs.<\/p>\n<h2>Solution avec <code>li<\/code> en <code>inline<\/code><\/h2>\n<p>Vous savez sous doute que l&rsquo;affichage des \u00e9l\u00e9ments de liste se fait par d\u00e9faut en <code>display: list-item;<\/code>, qui procure \u00e0 la liste ce comportement particulier, notamment l&rsquo;attribution de puces de liste.<br \/>\nGr\u00e2ce \u00e0 CSS, nous allons red\u00e9finir cette propri\u00e9t\u00e9 par d\u00e9faut en passant sa valeur \u00e0 <code>inline<\/code>.<\/p>\n<p>Consid\u00e9rons le code HTML suivant :<\/p>\n<pre class=\"code\"><code class=\"language-markup\">&lt;ul id=\"nav\"&gt;&lt;!--\r\n\t--&gt;&lt;li&gt;&lt;a href=\"#\"&gt;Accueil&lt;\/a&gt;&lt;\/li&gt;&lt;!--\r\n\t--&gt;&lt;li&gt;&lt;a href=\"#\"&gt;Services&lt;\/a&gt;&lt;\/li&gt;&lt;!--\r\n\t--&gt;&lt;li&gt;&lt;a href=\"#\"&gt;\u00c0 propos&lt;\/a&gt;&lt;\/li&gt;&lt;!--\r\n\t--&gt;&lt;li&gt;&lt;a href=\"#\"&gt;Contact&lt;\/a&gt;&lt;\/li&gt;\r\n&lt;\/ul&gt;<\/code><\/pre>\n<p>Les commentaires HTML entre chaque \u00e9l\u00e9ment de liste permettent de supprimer l&rsquo;espace blanc (<code>white-space<\/code>) ind\u00e9sirable, visible sur certaines mises en forme.<\/p>\n<p>Il nous faut maintenant simplement annuler les styles par d\u00e9faut de la liste pour obtenir des liens align\u00e9s sans puce de liste.<\/p>\n<pre class=\"code\"><code class=\"language-css\">#nav {\r\n\tpadding: 0; margin: 0;\r\n}\r\n#nav li {\r\n\tdisplay: inline;\r\n\tlist-style: none; \/* n\u00e9cessaire pour IE7 *\/\r\n}<\/code><\/pre>\n<p><code>Inline<\/code> suffit pour la plupart des navigateurs, mais IE7 a tout de m\u00eame besoin que la valeur <code>list-style<\/code> soit \u00e0 <code>none<\/code> pour que la suppression des puces soit effective.<\/p>\n<p>Avec cela, nos liens sont coll\u00e9s, et surtout le texte est align\u00e9 \u00e0 gauche.<br \/>\nIl nous faut donc compl\u00e9ter notre code pour corriger l&rsquo;alignement et l&rsquo;espacement des liens.<\/p>\n<pre id=\"ex1\" class=\"code\"><code class=\"language-css\">#nav {\r\n\tpadding: 0; margin: 0;\r\n\ttext-align: center; \/* centrer le texte *\/\r\n}\r\n#nav li {\r\n\tdisplay: inline;\r\n\tlist-style: none;\r\n}\r\n#nav a {\r\n\tdisplay:inline-block;\r\n\tmargin: 0 30px;\r\n}<\/code><\/pre>\n<p>La ligne 2 nous permet d&rsquo;annuler les marges par d\u00e9faut de la liste. La Ligne suivante (3) permet de centrer nos \u00e9l\u00e9ments de liste maintenant tous align\u00e9s. Les derni\u00e8res d\u00e9clarations (lignes 9 \u00e0 12) ajoutent de l&rsquo;espace entre les liens.<\/p>\n<p class=\"center\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-1786\" title=\"\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/01\/menu-horizontal-css-centre.png\" alt=\"\" width=\"595\" height=\"56\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/01\/menu-horizontal-css-centre.png 595w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/01\/menu-horizontal-css-centre-300x28.png 300w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><\/p>\n<p><a class=\"demonstration\" href=\"\/blog\/doc\/menu-css-horizontal-centre.html\">D\u00e9monstration simple<\/a> <a class=\"demonstration\" href=\"\/blog\/doc\/menu-css-horizontal-centre.html#ex2\">D\u00e9monstration styl\u00e9e<\/a><\/p>\n<h2>Solution avec <code>li<\/code> en <code>inline-block<\/code><\/h2>\n<p>Pourquoi proposer cette deuxi\u00e8me solution ?<\/p>\n<ol>\n<li><a href=\"https:\/\/www.creativejuiz.fr\/blog\/les-tutoriels\/display-inline-block-une-valeur-trop-peu-utilise\"><code>inline-block<\/code> est trop peu connu<\/a><\/li>\n<li>inline-block permettrait d&rsquo;ajouter des effets suppl\u00e9mentaires autour des liens<\/li>\n<li>\u00e7a ne change pas grand chose \u00e0 votre code<\/li>\n<\/ol>\n<p>Le code HTML ne change pas, et le code CSS non plus, hormis la ligne 6 du code pr\u00e9c\u00e9dent, o\u00f9 il vous suffit de remplacer <code>inline<\/code> par <code>inline-block<\/code>.<br \/>\nLe seul souci que l&rsquo;on va avoir c&rsquo;est un probl\u00e8me de compatibilit\u00e9 avec IE. Pour cela, je vous renvoie sur l&rsquo;article du blog, si vous ne l&rsquo;avez pas d\u00e9j\u00e0 lu :<br \/>\n<a href=\"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/display-inline-block-une-valeur-trop-peu-utilisee\">Display : inline-block, une valeur trop peu utilis\u00e9e<\/a><\/p>\n<p>Le comportement est quasiment identique qu&rsquo;avec la valeur <code>inline<\/code>, la diff\u00e9rence \u00e9tant la possibilit\u00e9 de redimensionner l&rsquo;\u00e9l\u00e9ment et de lui appliquer des styles applicables \u00e0 des \u00e9l\u00e9ments de type <code>block<\/code>.<\/p>\n<p>Si vous avez des questions l&rsquo;espace de commentaires est l\u00e0 pour vous \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>C&rsquo;est une chose qui peut para\u00eetre tr\u00e8s simple \u00e0 faire, mais sur laquelle beaucoup de personnes se sont cass\u00e9s les dents. Aujourd&rsquo;hui encore je trouve des solutions en JavaScript qui permettent d&rsquo;attribuer une marge \u00e0 gauche de l&rsquo;\u00e9l\u00e9ment ul pour centrer les li qu&rsquo;il contient.<\/p>\n","protected":false},"author":4,"featured_media":1788,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bluesky_dont_syndicate":"","_bluesky_syndication_accounts":"","_bluesky_syndication_text":"","footnotes":""},"categories":[17,9],"tags":[407,408,288,406,354,157],"coauthors":[597],"class_list":["post-1665","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-css-css3","category-tutoriels","tag-centrage","tag-centre","tag-css2-1","tag-horizontal","tag-liste","tag-menu"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/1665","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/comments?post=1665"}],"version-history":[{"count":3,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/1665\/revisions"}],"predecessor-version":[{"id":6560,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/1665\/revisions\/6560"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media\/1788"}],"wp:attachment":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media?parent=1665"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/categories?post=1665"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/tags?post=1665"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/coauthors?post=1665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}