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 :

Un margin:auto qui sort de sa boîte


Sujet :

CSS

  1. #1
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut Un margin:auto qui sort de sa boîte
    Hello,

    J'ai un petit problème avec un margin:auto. Pour une mise en situation, voici mon code :

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
      <title>Mon titre</title>
      <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    </head>
    <body>
     
    <div id="main">
     
      <div id="col_log">LOG</div>
     
      <div id="col_info">
        <div id="how_work">HOW</div>
      </div>
     
    </div>
     
    </body>
    </html>
    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
    #main {
        width : 800px;
        margin : 0 auto;
        background : red;
    }
    #col_log {
        float : right;
        background : green;
        width : 250px;
    }
    #how_work {
        margin : 0 auto;
        width : 500px;
        background : blue;
        overflow : hidden;
    }
    Je souhaite donc avoir une colonne à droite (ici en float:right) et le contenu à gauche qui prend le reste de la place disponible.

    Si je mets un élément en margin:auto dans le contenu de gauche, il va se centrer par rapport à la largeur du conteneur sans se soucier de la colonne de droite (le overflow:hidden ici ne sert qu'à faire passer le div how_work devant la colonne de droite pour montrer qu'ils se chevauchent bien).

    Je ne peux pas mettre mon contenu en float:left ainsi que la conne de droite également pour des raisons techniques.

    Ma question est donc : Comment faire pour centrer un élément block dans mon col_info sans qu'il se centre par rapport au div main ?


  2. #2
    Membre émérite Avatar de Erwan31
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2 177
    Points : 2 444
    Points
    2 444
    Par défaut
    Salut,
    je comprends pas ce qui est en gras :
    (le overflow:hidden ici ne sert qu'à faire passer le div how_work devant la colonne de droite pour montrer qu'ils se chevauchent bien).
    C'est pourtant la solution non?

  3. #3
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Non non. Si tu enlèves l'overflow:hidden, les deux blocs se chevauchent quand même, sauf que c'est le bloc de droite qui passe au-dessus, donc on peut moins se rendre compte du problème.

    J'ai donc mis un overflow:hidden sur le bloc how_work pour que ce soit lui qui passe au-dessus et qu'on se rende mieux compte qu'il est centré dans le div main et non dans le div col_info.

  4. #4
    Membre émérite Avatar de Erwan31
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2 177
    Points : 2 444
    Points
    2 444
    Par défaut
    Bisunurs la largeur de main et de col info est la même (sur Firefox 3 beta et IE7)
    et le div how_work n'est ni centré par rapport à main ni par rapport à col info.

    EDIT Ah ok Bisunurs en effet Safari se comporte différemment à ce niveau là.

  5. #5
    Membre émérite Avatar de Erwan31
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2 177
    Points : 2 444
    Points
    2 444
    Par défaut
    Si tu mets l'overflow directement sur col_info ça fonctionne. Est ce que cette situation te convient?

  6. #6
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Citation Envoyé par Erwan31 Voir le message
    EDIT Ah ok Bisunurs en effet Safari se comporte différemment à ce niveau là.
    Bizarre, c'était ce comportement que j'avais sur Firefox2 et IE7 aussi, pas que sur Safari.

    Citation Envoyé par Erwan31 Voir le message
    Si tu mets l'overflow directement sur col_info ça fonctionne. Est ce que cette situation te convient?
    Il me semblait avoir essayé cette solution, mais apparemment non, et elle fonctionne impeccablement, merci !

    Je suis tout de même surpris par ce comportement sans l'overflow ...

  7. #7
    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 : 51
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Points : 2 907
    Points
    2 907
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Je suis tout de même surpris par ce comportement sans l'overflow ...
    Je le trouve assez logique. En l'absence d'un nouveau contexte de formatage le contenu de ton col_info se déroulerait sur le côté de ton menu puis passerait en-dessous pour occuper tout l'espace à disposition dans le #main. Il est donc assez normal que ton margin parte du #main.

    Tu aurais aussi pu appliquer un margin-right à ton #col_info pour obtenir ce résultat. On voit souvent ce genre de montage, avec un centre extensible, dans le flux, positionné avec des marges de la largeur des menus latéraux flottants (perso je trouve la solution d'un nouveau contexte de formatage plus efficace).
    Les bons réflexes:
    • avant de poser une question:
      règles | faq | tutoriels | recherche
    • clarté, politesse, vocabulaire et orthographe soignés = efficacité
    • remercier ceux qui ont pris le temps d'aider et si c'est le cas

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 46
    Points : 46
    Points
    46
    Par défaut
    J'ai été trop lent ! dommage mais je le propose quand meme :

    moi j'avais ca comme solution en plus de ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #col_info {
    	position: absolute;
    	width: 550px;
    }

  9. #9
    Membre émérite Avatar de Erwan31
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2 177
    Points : 2 444
    Points
    2 444
    Par défaut
    +1 avec les explications de CandyGirl
    Attention toutefois à ne pas spécifier de marges sur l'élément en overflow:hidden/auto. Voir ces tests

    @CandyGirl C'est plus effiace que les marges en effet mais il y a des situations ou une marge en pourcentage peut être plus intéressante pour la largeur d'une colonne de texte en cas de redimensionnement du viewport ou de visualisation sur de petits écrans.

  10. #10
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    @CandyGirl : Merci pour tes explications, c'est beaucoup plus clair maintenant.
    Et en effet j'ai vu beaucoup de designs avec une marge de la taille du bloc flottant.

    Pour info et après tests, si on renseigne une largeur au non flottant et qu'on utilise la méthode du nouveau contexte de formatage, le Three Pixels Jog apparaît sur IE6.

  11. #11
    Membre émérite Avatar de Erwan31
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2 177
    Points : 2 444
    Points
    2 444
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Pour info et après tests, si on renseigne une largeur au non flottant et qu'on utilise la méthode du nouveau contexte de formatage, le Three Pixels Jog apparaît sur IE6.
    Ah là là ces maudit Bug IE 6...
    Pour info IE7 dépasse depuis peu IE6 en pourcentage d'utilisateurs et ça continue à grimper rapidement
    Vivement qu'on en vienne à dire enfin "qui'IE6 est devenu trop minoritaire, j'prends plus en compte" et alors fini les three pixel jog, doubled float et Cie.
    Mais IE7 n'est pas au top quand même.

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

Discussions similaires

  1. Valeur negative qui sort des tenebres ?
    Par Battosaiii dans le forum C
    Réponses: 9
    Dernier message: 14/03/2006, 16h11
  2. Numéro Auto qui se réinitialise à 1 tous les jours!
    Par R0cKW|LDeR dans le forum Access
    Réponses: 11
    Dernier message: 02/02/2006, 22h05
  3. [MP] Messages qui restent dans la boîte d'envoi ?
    Par elitost dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 6
    Dernier message: 18/11/2005, 22h56
  4. margin-auto qui ne marchas sous IE
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 21/10/2005, 20h13

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