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 occupant toute la largeur de l'écran


Sujet :

Dimensionnement en CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de labarre2002
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 250
    Par défaut Menu horizontal occupant toute la largeur de l'écran
    Bonjour


    je réalise un menu qui doit occuper toute la largeur de l'écran

    voici le résultat de mon travail


    Nom : 12.jpg
Affichages : 479
Taille : 22,3 Ko

    le souci est le retour a la ligne d un lien de mon menu a savoir l’élément "Boissons"

    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
    <header>
    <nav class="menu">
    <ul>
    <li> <a href="#">Burger</a> </li>
    <li> <a href="#">Sandwich</a> </li>
    <li> <a href="#">Chawarma</a> </li>
    <li> <a href="#">Salades</a> </li>
    <li> <a href="#">BBQ</a> </li>
    <li> <a href="#">Boissons</a> </li>
     
     
    </ul>
     
    </nav>


    le CSS:
    Code css : 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
    .menu ul li{
    list-style-type: none;
    display: inline-block;
    padding:0 13px 0 0;
     
    }
     
     
     
     a:link {
        text-decoration: none;
        color: black;
       }
     
      .menu li:hover {
        background-color: #f3ebe0;
      }
     
    li{
        width:16.66%;
     
        text-align: center;
    }


    Merci pour de m apporter d’éventuelles éléments de réponse.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    16.66 * 6 = 100%, oui mais c'est sans compter les fameux « whitespace » qui existe entre les éléments en ligne

    Pour une solution, voir

  3. #3
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 495
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 495
    Par défaut
    pourquoi ne pas passer par du flex ?
    voir meme du grid (qui prend en compte les margin/paddings)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Membre éclairé Avatar de labarre2002
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 250
    Par défaut
    BOnsoir

    pour vos reponses

    @NoSmoking Merci pour tes reponses croustillantes (toujours quelque chose de nouveau a decouvrir).

    en appliquant
    je n ai plus le retour a la ligne

    Nom : azerty.jpg
Affichages : 426
Taille : 17,6 Ko

    a present je souhaite que mon menu occupe toute la largeur

    Merci davance .

  5. #5
    Membre éprouvé Avatar de two3d
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2012
    Messages : 126
    Par défaut
    Comme la proposé Doksuri, le flex ou grid est une bonne solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ul{
       display:flex;
       justify-content:space-[ce que tu veux]
    }

  6. #6
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 495
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 495
    Par défaut
    si besoin, la solution grid du coup...
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    .menu ul {
      width: 100%;
      margin: 0;
      padding: 0;
      display: grid;
      grid-template-columns: repeat(6, 1fr);
    }
    .menu li { display: block; }
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut Pour complément
    Citation Envoyé par labarre2002
    en appliquant display:table-cell
    Tu as peut-être choisi la « meilleur moins bonne solution »

    Le lien que j'ai posté est surtout pour montrer l'existence des « whitespace » et comment éventuellement s'en débarrasser.

    Ce qui importe est de cibler correctement ce que tu souhaites faire, et dans ton cas, menu largeur 100% avec items centrés, il y plusieurs façons de faire, comme toujours serais-je tenté de dire !

    Pour commencer ton menu peut tout à fait ce résumer au HTML suivant :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <nav class="menu">
      <a href="#">Burger</a>
      <a href="#">Sandwich</a>
      <a href="#">Chawarma</a>
      <a href="#">Salades</a>
      <a href="#">BBQ</a>
      <a href="#">Boissons</a>
    </nav>
    ...sémantiquement parlant c'est suffisant inutile d'ajouter une liste <ul>.

    Le CSS à appliquer serait le suivant :
    • avec display:table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    .menu-table {
      display: table;
      width: 100%;
    }
    .menu-table a {
      display: table-cell;
      width: calc( 100% / 6);
    }
    • avec display:inline-flex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    .menu-inline-flex {
      display: inline-flex;
      flex-wrap: wrap;
      width: 100%;
    }
    .menu-inline-flex a {
      flex: 1;
    }
    • avec display:flex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    .menu-flex {
      display: flex;
      flex-wrap: wrap;
    }
    .menu-flex a {
      flex: 1;
    }
    ... pratiquement le même que inline-flex, la width en moins.

    • avec display:display-grid :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .menu-grid {
      display: grid;
      grid-template-columns: repeat(6,1fr);
    }
    ... déconcertant de simplicité !

    Voilà c'était juste un petit récapitulatif !

    Nota : si, de plus, tu veux faire apparaître un « menu hamburger » il te faudra gérer cela via les média-queries.

  8. #8
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 495
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 495
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Nota : si, de plus, tu veux faire apparaître un « menu hamburger » il te faudra gérer cela via les média-queries.
    ce sera l'occastion d'introduire les @contanier developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries c'est la meme chose que les media-queries, mais ca ne se base pas sur la taille de l'ecran, mais sur la taille du container
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  9. #9
    Membre chevronné
    Homme Profil pro
    web a11y
    Inscrit en
    Avril 2014
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : web a11y
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 191
    Par défaut ul : si si, pour l'accessibilité
    Citation Envoyé par NoSmoking Voir le message
    ...sémantiquement parlant c'est suffisant inutile d'ajouter une liste <ul>.
    Pour la sémantique du bien-voyant, peut-être, mais pas pour le mal/non-voyant.

    D'après le référentiel d'accessibilité qui nous concerne (RGAA), tout ce qui se présente visuellement comme liste doit aussi l'être comme tel dans le code. Les bonnes pratiques peuvent être consultées avec les "aria practices", par exemple pour le menu.

    Il y a une raison : la navigation virtuelle avec les aides, en particulier les lecteurs d'écrans. Avec un lecteur d'écran, on peut naviguer entre éléments du même type, p.ex. de titre en titre, de lien en lien, de liste en liste, etc. D'où l'intérêt de la balise <ul> (en y ajoutant un "nom accessible", tel un aria-label, mais là je déborde).

+ Répondre à la discussion
Cette discussion est résolue.

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. Menu horizontal sur toute la largeur disponible
    Par userparis dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 26/12/2013, 17h30
  3. Template qui occupe toute la largeur
    Par azady dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 16/05/2011, 16h46
  4. [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
  5. Réponses: 3
    Dernier message: 15/01/2008, 20h31

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