462 votes

Comment placer deux divs l'un à côté de l'autre ?

Considérez le code suivant :

#wrapper {
    width: 500px;
    border: 1px solid black;
}
#first {
    width: 300px;
    border: 1px solid red;
}
#second {
    border: 1px solid green;
}

<div id="wrapper">
    <div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
    <div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
</div>

J'aimerais que les deux divisions se trouvent l'une à côté de l'autre à l'intérieur de la division enveloppe. Dans ce cas, la hauteur de la division verte doit déterminer la hauteur du wrapper.

Comment puis-je réaliser cela via CSS ?

5 votes

34 votes

#wrapper { display: flex; }

0 votes

17voto

meo Points 10534

Voici la solution :

#wrapper {
    width: 500px;
    border: 1px solid black;
    overflow: auto; /* so the size of the wrapper is alway the size of the longest content */
}
#first {
    float: left;
    width: 300px;
    border: 1px solid red;
}
#second {
    border: 1px solid green;
    margin: 0 0 0 302px; /* considering the border you need to use a margin so the content does not float under the first div*/
}

votre démo mise à jour ;

http://jsfiddle.net/dqC8t/1/

0 votes

Merci. Si j'omets overflow: auto; il fonctionne toujours. Pouvez-vous donner un exemple où cela est nécessaire ?

0 votes

Oui bien sûr : enlevez l'overflow auto et faites en sorte que le contenu du premier soit plus long que le contenu du second, vous verrez que la taille du conteneur ne s'adapte que lorsque vous mettez l'overflow auto dessus, ou si vous utilisez un élément de compensation : jsfiddle.net/dqC8t/3

0 votes

OK, je vois, merci ! Cependant, je n'ai pas aimé margin: 0 0 0 302px; car il dépend de width: 300px; . Mais, merci quand même !

10voto

C'est la bonne réponse CSS3. J'espère que cela vous aidera un peu maintenant :D Je vous recommande vraiment de lire le livre : https://www.amazon.com/Book-CSS3-Developers-Future-Design/dp/1593272863 En fait, j'ai trouvé cette solution en lisant ce livre. :D

#wrapper{
  display: flex;
  flex-direction: row;
  border: 1px solid black;
}
#first{
  width: 300px;
  border: 1px solid red;
}
#second{
  border: 1px solid green;
}

<div id="wrapper">
    <div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
    <div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
</div>

10voto

NotAFlyingGoose Points 103

C'est très facile - vous pouvez le faire de la manière forte

.clearfix:after {
   content: " "; 
   visibility: hidden;
   display: block;
   height: 0;
   clear: both;
}

#first, #second{
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}

#wrapper {
    width: 500px;
    border: 1px solid black;
}
#first {
    border: 1px solid red;
    float:left;
    width:50%;
}
#second {
    border: 1px solid green;
    float:left;
    width:50%;
}

<div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
    <div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
</div>

ou le moyen le plus simple

#wrapper {
  display: flex;
  border: 1px solid black;
}
#first {
    border: 1px solid red;
}
#second {
    border: 1px solid green;
}

<div id="wrapper">
    <div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
    <div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
</div>

Il y a aussi un million d'autres façons.
Mais j'ai choisi la solution de facilité. Je voudrais aussi vous dire que beaucoup de réponses sont incorrectes. Mais les deux méthodes que j'ai montrées fonctionnent au moins en HTML 5.

9voto

Shailesh Points 133

Essayez d'utiliser les changements de code ci-dessous pour placer deux divs l'un devant l'autre

#wrapper {
  width: 500px;
  border: 1px solid black;
  display:flex;
}

Lien vers JSFiddle

7voto

Friend Points 464
  1. Ajouter float:left; dans les deux divs.

  2. Ajouter display:inline-block; propriété.

  3. Ajouter display:flex; dans la division parent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X