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 :

Incompatibilté entre inline-block et max-width


Sujet :

CSS

  1. #1
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut Incompatibilté entre inline-block et max-width
    Bonjour

    J'ai 2 divs que je voudrais placer l'un en-dessous de l'autre, pour cela j'utilise la propriété inline-block pour chacun des divs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    .div1 {
    display: inline-block ;
    }
     
    .div2 {
    display: inline-block ;
    }
    Et ça marche. Sauf que lorsque j'ajoute un max-width, les 2 divs se retrouvent sur la même ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .div1 {
    display: inline-block ;
    max-width: 100px;
    }
     
    .div2 {
    display: inline-block ;
    max-width: 100px;
    }
    Comment régler ce problème?

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Si tu souhaites placer des blocs l'un en dessous de l'autre, c'est le comportement par défaut d'un block
    Le fait de le passer en inline-block va justement provoquer le fait qu'ils sont juste à côté l'un de l'autre.

    Donc si tu veux forcer leur superposition, utilise plutôt "display:block"; (et si tu utilises des <div> tu n'as rien à faire car ce sont déjà des display: block par défaut )

  3. #3
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    Sauf que quand je mets "block" au lieu de "inline-block", le "max-width" agrandit le div au maximum, même lorsque le contenu est petit.

    Voici des captures d'écran:

    1er cas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    .div1 {
    background-color:red;
    max-width:780px;	
    display: block ;
    }
     
    .div2 {
    background-color:yellow;
    max-width:780px;
    display: block ;
    }
    Nom : div1.PNG
Affichages : 124
Taille : 6,0 Ko

    2e cas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    .div1 {
    background-color:red;
    max-width:780px;	
    display: inline-block ;
    }
     
    .div2 {
    background-color:yellow;
    max-width:780px;
    display: inline-block ;
    }
    Nom : div2.PNG
Affichages : 122
Taille : 6,0 Ko

    Donc j'aurais pu utiliser un <br> juste après le 1er div mais je souhaiterai m'en passer.

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Je pense qu'il y a une partie de ton code que tu ne nous montre pas et c'est ça qui provoque le problème.

    Voici un essai réalisé sur base de ton code : https://tests.pierre-roels.com/max-width.php
    On voit bien que les max-width sont respectés, peu importe ce qu'il y a dedans

    Et voici le code complet de la page :
    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
    <style>
        .div1, .div2 {
            display: block;
            padding: 15px;
        }
        .div1 {
            background-color:red;
            max-width:780px;        
        }
     
        .div2 {
            background-color:yellow;
            max-width:380px;
        }
    </style>
    <div class="div1">div1</div>
    <div class="div2">Lorem ipsum dolor sit amet</div>

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ce n'est pourtant pas bien compliqué...

    1- La solution la plus simple : un simple <br /> !
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div class="div1">div1</div>
    <br />
    <div class="div2">Lorem ipsum dolor sit amet</div>


    2- Une autre solution serait de mettre un <div> vide entre les deux :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div class="div1">div1</div>
    <div></div>
    <div class="div2">Lorem ipsum dolor sit amet</div>

    3- ou encadrer chacun par des <div> :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div>
      <div class="div1">div1</div>
    </div>
    <div>
      <div class="div2">Lorem ipsum dolor sit amet</div>
    </div>
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      .div1, .div2 {
        display: inline-block;
        padding: 15px;
        max-width:780px;        
      }
      .div1 { background-color:red; }
      .div2 { background-color:yellow; }

    N.B. Contrairement au <br />, cette 3ème solution est plus "flexible", et permet éventuellement de modifier facilement la mise en page selon la largeur de fenêtre.
    Dernière modification par Invité ; 25/10/2019 à 11h56.

  6. #6
    Membre régulier Avatar de abdennour bouaicha
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2009
    Messages : 98
    Points : 112
    Points
    112
    Par défaut
    salut,
    met dans chaque balise float:none; c'est elle qui force la div a ne pas être à cote d'un autre élément ,par contre float:left ou float:right met le div a gauche ou a droite de l’élément qui le suit dans le code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    .div1{
            float:none;
    }
    .div2{
            float:none;
    }

  7. #7
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    Merci beaucoup, toutes les méthodes que vous m'avez proposées marchent.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Tiens,

    une 4ème solution *, très simple :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div class="div1"><span>div1</span></div>
     
    <div class="div2"><span>Lorem ipsum dolor sit amet</span></div>
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    .div1 > span, .div2 > span {
      display:inline-block;
      padding: 15px;
    }
    .div1 > span {
      background:red;
      font-size:140%;
      color:white;
    }
    .div2 > span {
      background:yellow;
      color:red;
    }

    * une variante de la 3ème, en mettant les classes sur les div parents.

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

Discussions similaires

  1. Inline-block et Width
    Par Thunderburst dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 08/02/2013, 11h16
  2. Max-width dans une image sous IE?
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 23/12/2005, 02h04
  3. Emuler un min/max-width ou un min/max-height
    Par Perceval dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 18/09/2005, 18h43
  4. internet explorer et max-width
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 13/08/2005, 23h50
  5. basculer entre 2 blocks visible et invisible
    Par popressay dans le forum Oracle
    Réponses: 7
    Dernier message: 27/08/2004, 16h40

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