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 :

Centrage du menu horizontal et fusion des marges


Sujet :

Centrer un élément en CSS

  1. #1
    Membre éclairé
    Homme Profil pro
    Retraité informatique
    Inscrit en
    Juin 2012
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 519
    Points : 705
    Points
    705
    Par défaut Centrage du menu horizontal et fusion des marges
    Bonjour
    Je suis confronté à 2 problèmes que je n'arrive pas à résoudre et comprendre.
    Voir sur: http://codepen.io/JefReb/pen/xjKcC
    1) Cela ressemble à une fusion des marges, mais je n'arrive pas trouver où.
    Dans l'exemple, le bandeau jaune présente un décalage en haut qui est équivalent à un margin-top:20px indiqué nul part.
    Si je rajoute un margin-top:20px à #bandeau, celui-ci se colle bien en haut de fenêtre.
    Pourquoi?

    2) Je n'arrive pas à centrer de façon harmonieuse le menu par rapport au bandeau.
    Je ne trouve pas la façon de centrer ce menu horizontal par rapport au bandeau (ou autre conteneur).
    Bien sûr, comme il est en float:left, le nombre d'item conditionne la largeur de la liste.
    Mais comment le centrer automatiquement si je rajoute un item sans avoir à calculer un margin-left pour <ul>?

    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
    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
    /* ======     Mettons nos défauts           ====== */
    html, body 	{ 
    margin:0; padding:0; font-size:1em; font-weight:normal; }
    body 		{
    font-family:"Times New Roman", Times, verdana, arial,sans-serif;
     }
    /* ====== Classe pour la largeur de la page ====== */
    .largeur 	{ 
    width:800px;          /* largeur                      */
    margin:0 auto;        /* pour centrer dans la fenêtre */
    }
    /* ====== Définition du bandeau                        ====== */
    #bandeau    { 
    height:100px;          /* hauteur  */
    margin:0; padding:0;   /* marges internes et externes */ 
    background-color:yellow;
    text-align:center;
    }
    /* ====== Définition du menu horizontal    ====== */
    #hornav     {
    height:25px;
    margin:0; padding:0;
    margin-top:2px;
    text-align:center; 
    vertical-align:middle;
    font-weight:bold;
    border: 1px solid black; 
    }			  
    ul#hormenu  	 { 
    margin:0; padding:0; 
    list-style-type:none; 
    text-align:center; 
    }					
    ul#hormenu li 	 { 
    float:left;          /* alignement horizontal grâce au flottant    */
    text-decoration:none;
    border-right:3px solid transparent;  /* espacement des éléments   */
    } 				   			        
    ul#hormenu a 	 { 
    display:block; 
    width:150px; 
    height:25px; 
    line-height:25px; 
    background-color:rgba(193,196,197,0.5);
    color:black; 
    }
    ul#hormenu li:hover>a { 
    text-decoration:underline;
    color:blue; 
    }
    Code html:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div id="bandeau" class="largeur"><h1>Bandeau</h1></div>
    <div id="hornav" class="largeur">
       <ul id="hormenu">
        <li><a href="#" title="item1" target="_parent">item1</a></li>
        <li><a href="#" title="item2" target="_parent">item2</a></li>
        <li><a href="#" title="item3" target="_parent">item3</a></li>
        <li><a href="#" title="item4" target="_parent">item4</a></li>
       </ul>
    </div>

    Merci pour vos lumières
    Jef

  2. #2
    Membre émérite
    Avatar de Candygirl
    Femme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 912
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Points : 2 907
    Points
    2 907
    Par défaut
    Hello,

    Pour ton premier problème, il s'agit bien d'une fusion de marge qui provient de la marge par défaut du h1

    Pour centrer ton menu en float, tu peux jouer avec deux positions relatives:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ul#hormenu {
      float:right;
      position:relative;
      right:50%;
    }
     
    ul#hormenu li 	 { 
      position:relative;
      left:50%;
    }
    Autrement, plus simple mais un peu moins rétrocompatible, tu peux utiliser un display:inline-block associé à ton text-align:center.

  3. #3
    Membre éclairé
    Homme Profil pro
    Retraité informatique
    Inscrit en
    Juin 2012
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 519
    Points : 705
    Points
    705
    Par défaut
    Merci Candy,
    Pour le h1, je n'y aurais pas pensé, car j'étais obnubilé par la fusion des marges avec <p>

    Pour le centrage du menu horizontal, c'est très bien, mais il manque quelque chose que je viens de trouver:
    un display:inline-block pour <li>

    voir: http://codepen.io/JefReb/pen/xjKcC

    Merci pour ton aide. J'attends un petit peu avant de clore le topic, dans le cas où quelqu'un d'autre aurait une autre idée.
    Encore merci
    Jef

  4. #4
    Membre émérite
    Avatar de Candygirl
    Femme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 912
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Points : 2 907
    Points
    2 907
    Par défaut
    Citation Envoyé par JefReb Voir le message
    Pour le centrage du menu horizontal, c'est très bien, mais il manque quelque chose
    Je suppose que tu avais viré par inadvertance le float:left des li.

    Si tu choisis l'option du inline-block, tu peux supprimer les position relative left, right et les float. Le double position relative n'est utile que pour centrer des éléments en float.

    Avec le inline-block ton text-align:center; sur le #hornav suffit au centrage.

  5. #5
    Membre éclairé
    Homme Profil pro
    Retraité informatique
    Inscrit en
    Juin 2012
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 519
    Points : 705
    Points
    705
    Par défaut
    Aarg, merci Candy,
    C'est exacte, j'avais bêtement recopié ta réponse où il n'y avait plus le float:left pour li.
    Je clos donc le topic. Merci encore

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

Discussions similaires

  1. Menu horizontal - Adapter la taille des sous-menus
    Par sourisbleue dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 18/05/2011, 12h55
  2. Centrage Menu horizontal dans CSS
    Par Lolo92160 dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 11/12/2009, 11h01
  3. Probleme avec alignement des items d'un menu horizontal sous IE
    Par van___fanel dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 05/12/2007, 18h00
  4. H1 qui déborde d'un DIV ? (Fusion des marges)
    Par Johnbob dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 18/05/2007, 15h30
  5. Fusion des marges
    Par mitsein dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 29/08/2005, 13h59

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