IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mise en page CSS Discussion :

Menu horizontal sur toute la largeur disponible


Sujet :

Dimensionnement en CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 144
    Par défaut Menu horizontal sur toute la largeur disponible
    Bonjour, je cherche depuis un moment comment faire un menu horizontale qui :

    - prends toute la largeur disponible, le premier élément étant tout à gauche et le dernier élément tout a droite.
    - qui s'adapte au redimensionnement de la fenêtre et à la résolution des tablettes et pc. Plus la résolution baisse plus l'espace entre les éléments se réduit dans la mesure du possible jusqu'à ce qu'ils basculent les uns en dessous des autres.
    Edit : - les espaces entre chaque éléments du menu sont identiques


    j'ai trouvé sur le forum un topic avec une solution qui s'en approche mais qui n'est selon moi pas satisfaisante :

    http://www.developpez.net/forums/d12...r-d-conteneur/


    puis le code :

    http://codepen.io/gc-nomade/pen/nrbDl

    HTML :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <!DOCTYPE html>
    <html>
        <head>
    		<meta charset="utf-8" />
    		<!-- Feuille de sylte de la page HTML -->
            <link media="screen" rel="stylesheet" href="menulargeur.css" />
        </head> 
        <body> 
    		<h1>Justify-content</h1>
    		<h2>display:flex<br/> (if boxes to align)</h2>
    		<nav class="flex">
    			<ul>
    				<li><a href="#nowhere" title="Lorum ipsum dolor sit amet">Lorem</a></li>
    				<li><a href="#nowhere" title="Aliquam tincidunt mauris eu risus">Aliquam</a></li>
    				<li><a href="#nowhere" title="Morbi in sem quis dui placerat ornare">Morbi</a></li>
    				<li><a href="#nowhere" title="Praesent dapibus, neque id cursus faucibus">Praesent</a></li>
    				<li><a href="#nowhere" title="Pellentesque fermentum dolor">Pellentesque</a></li>
    			</ul>
    		</nav>
     
    		<h2>text-align:justify & pseudo <br/>(for both text and inline-boxes)</h2>
    		<nav class="txtalg-psdo">
    			<ul>
    				<li><a href="#nowhere" title="Lorum ipsum dolor sit amet">Lorem</a></li>
    				<li><a href="#nowhere" title="Aliquam tincidunt mauris eu risus">Aliquam</a></li>
    				<li><a href="#nowhere" title="Morbi in sem quis dui placerat ornare">Morbi</a></li>
    				<li><a href="#nowhere" title="Praesent dapibus, neque id cursus faucibus">Praesent</a></li>
    				<li><a href="#nowhere" title="Pellentesque fermentum dolor">Pellentesque</a></li>
    				<li><a href="#nowhere" title="Praesent dapibus, neque id cursus faucibus">dapibust</a></li>
    				<li><a href="#nowhere" title="Pellentesque fermentum dolor">Fermentum</a></li>
    			</ul>
    		</nav>
     
    		<h2>text-align:justify old method<br/> (for both text and inline-boxes)</h2>
    		<nav class="txt-oldish">
    			<ul>
    				<li><a href="#nowhere" title="Lorum ipsum dolor sit amet">Lorem</a></li>
    				<li><a href="#nowhere" title="Aliquam tincidunt mauris eu risus">Aliquam</a></li>
    				<li><a href="#nowhere" title="Morbi in sem quis dui placerat ornare">Morbi</a></li>
    				<li><a href="#nowhere" title="Praesent dapibus, neque id cursus faucibus">Praesent</a></li>
    				<li><a href="#nowhere" title="Praesent dapibus, neque id cursus faucibus">dapibust</a></li>
    				<li><a href="#nowhere" title="Pellentesque fermentum dolor">Pellentesque</a></li>
    			<li class="extraline"><!-- for old nav as IE5.5-7 --></li>
    			</ul>
    		  <b></b>
    		</nav>
        </body> 
    </html>


    CSS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    /* young browsers */
    .flex ul{
      display:flex;
      justify-content: space-between;
    }
    /* not so old browsers */
    .txtalg-psdo ul {
      text-align:justify;
    }
    .txtalg-psdo ul:after {
      content:'';
      display:inline-block;
      width:100%;
      vertical-align:top;
    }
    /* really old */
     
    .txt-oldish ul {
      text-align:justify;
    }
    .txt-oldish ul li {/* old IE*/
      *display:inline;
      zoom:1;
    }
    .txt-oldish .extraline {
      width:100%;
      vertical-align:top;
      font-size:0;
    }
     
    /* CSS 101  */
    nav {
      /* nothing there if old nav included */
      border:solid ;
    }
     
    ul {
      background:tomato;
      padding:0;
      font-size:0;
    }
     
    li {
      display:inline-block;
      background:pink;
      padding:0.25em 0.5em;
      font-size:1.5em;
      font-size:2vw;
    }
     
     li:nth-child(odd) {
       background:gray;
     }
    a {
      text-decoration:none;
    }
    body {
    color:orange;
      background:purple;
    }
     
    h2 {color:white;
      font-size:1.2em;
    }
     
    h2:first-line {
    color:orange;
      font-size:1.3em;
      text-decoration:underline;
    }
    En ce qui concerne ce code, testé en l'état OK pour Firefox, ne fonctionne pas sur IE10>> En testant j'ai commenté les deux lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /*font-size:0;*/
    /*font-size:2vw;*/
    et ça fonctionne pour IE10. Par contre, le design se dégrade et un espace apparaît en dessous du menu (qui était inexistant sur Firefox avec dans le ul)

    Avez-vous une solution pour ne pas avoir l'espace en dessous le menu en enlevant la ligne de code ci-dessus ?


    Sinon d'une manière plus général, il y a peu être d'autres solutions pour obtenir un menu de ce type.

    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    BOnjour,
    si le nombre de menu (donc de <li>) est connu, il suffit de définir une largeur de <li> en %.

    Ex :
    • 5 menus -> li { width:20%; } /* (100% / 5) = 20% */
    • 6 menus -> li { width:16.66%; } /* (100% / 6) = 16.666% arrondi à 16.66% */
    • ...

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 144
    Par défaut
    Bonjour et merci,

    effectivement cela peut être une solution, le nombre d'éléments est connu, cependant la largeur de chacun varie. Il y a notamment un élément qui est deux fois plus large que d'autres.

    Je pourrais allouer un espace suffisant pour ce dernier et me baser sur cette largeur pour les autres éléments mais il serait difficile par la suite d'obtenir des espaces identiques entre chaque éléments.

    Edit : Désolé, j'aurai dû préciser dans mon premier message que je souhaitai également des espaces identiques entre chaque éléments du menu.

    Merci.

  4. #4
    Membre confirmé Avatar de raydenprod
    Homme Profil pro
    Frontend Developer
    Inscrit en
    Février 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Frontend Developer

    Informations forums :
    Inscription : Février 2013
    Messages : 38
    Par défaut
    Bonjour,

    si j'ai bien compris c'est tout bête...

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <!DOCTYPE html>
    <html lang="fr">
    	<head>
    		<title>Raydenprod - Webdesigner / Front-end Developer </title>
    	<style>
                    *{
                            margin:0;
                            padding:0;
                    }
                    ul{
                      background: green;
                      list-style-type:none;
                      width:100%;
                    }
                    li {
                            background: red;
                            display: inline;
                            margin: 2%;
                    }
    </style>	
    	</head>
    	<body>
    	<ul>
    	  <li>blabla</li>
    	  <li>blablablabla</li>
    	  <li>blablblablablablaa</li>
    	  <li>blablblablablablablblablablablablablaablablblablablablablablaablablablaa</li>
    	</ul>
    	</body>
    </html>

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    Bonjour,
    pas sûr!
    ...le premier élément étant tout à gauche et le dernier élément tout a droite.

  6. #6
    Membre confirmé Avatar de raydenprod
    Homme Profil pro
    Frontend Developer
    Inscrit en
    Février 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Frontend Developer

    Informations forums :
    Inscription : Février 2013
    Messages : 38
    Par défaut
    C'est bien le cas sur mon exemple

Discussions similaires

  1. Menu horizontal prenant toute la largeur et centré
    Par alex2746 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 08/05/2015, 18h22
  2. [VB.NET]TabControl : onglets sur toute la largeur
    Par NicolasJolet dans le forum Windows Forms
    Réponses: 6
    Dernier message: 25/11/2010, 14h46
  3. [CSS 2.1] Menu déroulant : afficher sous menu sur toute la largeur de l'écran
    Par joums dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 09/03/2010, 23h06
  4. Réponses: 1
    Dernier message: 19/01/2007, 20h15
  5. Container sur toute la largeur
    Par lechewal dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 14/06/2006, 09h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo