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>
Je voudrais que les deux divs soient côte à côte à l'intérieur du div wrapper. Dans ce cas, la hauteur du div vert doit déterminer la hauteur de l'emballage.
Comment pourrais-je y parvenir via CSS?
#wrapper { display: flex; }
Réponses:
Faites flotter une ou les deux divisions internes.
Floating one div:
ou si vous flottez les deux, vous devrez encourager le div wrapper à contenir les deux enfants flottants, ou il pensera qu'il est vide et ne mettra pas la bordure autour d'eux
Flottant les deux divs:
la source
overflow:auto
sur le #wrapper Pour que la taille s'adapte toujours à la taille du contenu. (Sans avoir besoin d'un clair: les deux éléments)overflow: hidden
fait un excellent travail ici! Cependant, c'est toujours une sorte de magie pour moi. J'ai pensé que celaoverflow: hidden
devrait cacher le contenu s'il ne correspond pas à son conteneur. Mais ici, le comportement est un peu différent. Pourriez-vous nous en parler davantage?overflow
propriété effacera les flotteurs à la fois verticaux et horizontaux, c'est pourquoi dans mon premier exemple,#second
n'a pas besoin d'une marge gauche, la propriété overflow fonctionne tant que sa valeur n'est pasvisible
.. Je préfère masqué à auto pour ceux au cas où des scénarios une barre de défilement n'est pas générée par accident (ce que fera automatiquement) .. de toute façon il n'y aura pas de contenu caché un scénario comme celui-ci car il ne sera caché que s'il dépasse la largeur de 500px mais tant qu'il n'y aura pas de contenu en hauteur envelopper dans la largeur comme d'habitude .. pas de cachette;)Ayant deux divs,
vous pouvez également utiliser la
display
propriété:Exemple jsFiddle ici .
Si
div1
dépasse une certaine hauteur,div2
sera placé à côté endiv1
bas. Pour résoudre ce problème, utilisezvertical-align:top;
surdiv2
.Exemple jsFiddle ici .
la source
div
s sont faits,inline
vous ne devez pas garder d'espaces, de nouvelles lignes, etc. entre eux dans votre HTML. Sinon, les navigateurs afficheront un espace entre eux. Voir ce violon : vous ne pouvez pas garder les deuxdiv
s sur la même ligne à moins de mettre leurs balises sans rien entre les deux.Vous pouvez placer les éléments les uns à côté des autres en utilisant la propriété CSS float:
Vous devez vous assurer que le div wrapper permet le flottement en termes de largeur et que les marges, etc. sont définies correctement.
la source
Essayez d'utiliser le modèle flexbox. Il est facile et court à écrire.
Live Jsfiddle
CSS:
la direction par défaut est la ligne. Ainsi, il s'aligne les uns à côté des autres à l'intérieur du #wrapper. Mais il n'est pas pris en charge IE9 ou moins que ces versions
la source
flex
. Je vous remercie!voici la solution:
votre démo mise à jour;
http://jsfiddle.net/dqC8t/1/
la source
overflow: auto;
cela fonctionne toujours. Pourriez-vous donner un exemple où cela est nécessaire?margin: 0 0 0 302px;
car cela dépendwidth: 300px;
. Mais merci quand même!!Option 1
Utilisez
float:left
sur les deuxdiv
éléments et définissez un% de largeur pour les deux éléments div avec une largeur totale combinée de 100%.Utiliser
box-sizing: border-box;
sur les éléments div flottants. La valeur border-box force le remplissage et les bordures dans la largeur et la hauteur au lieu de les agrandir.Utilisez clearfix sur le
<div id="wrapper">
pour effacer les éléments enfants flottants, ce qui rendra l'échelle div du wrapper à la hauteur correcte.http://jsfiddle.net/dqC8t/3381/
Option 2
Utiliser
position:absolute
sur un élément et une largeur fixe sur l'autre élément.Ajouter une position: relative à l'
<div id="wrapper">
élément pour que les éléments enfants se positionnent absolument sur l'<div id="wrapper">
élément.http://jsfiddle.net/dqC8t/3382/
Option 3
Utilisez
display:inline-block
sur les deuxdiv
éléments et définissez un% de largeur pour les deux éléments div avec une largeur totale combinée de 100%.Et encore (même que l'
float:left
exemple) utiliserbox-sizing: border-box;
sur les éléments div. La valeur border-box force le remplissage et les bordures dans la largeur et la hauteur au lieu de les agrandir.REMARQUE: les éléments de bloc en ligne peuvent avoir des problèmes d'espacement car ils sont affectés par les espaces dans le balisage HTML. Plus d'informations ici: https://css-tricks.com/fighting-the-space-between-inline-block-elements/
http://jsfiddle.net/dqC8t/3383/
Une dernière option serait d'utiliser la nouvelle option d'affichage nommée flex, mais notez que la compatibilité du navigateur pourrait entrer en jeu:
http://caniuse.com/#feat=flexbox
http://www.sketchingwithcss.com/samplechapter/cheatsheet.html
la source
float
ne flotte pas mon bateau.inline-block
rochers. (Désolé.)Essayez d'utiliser les modifications de code ci-dessous pour placer deux divisions l'une en face de l'autre
Lien JSFiddle
la source
C'est très facile - vous pouvez le faire à la dure
ou la manière simple
Il y a aussi un million d'autres façons.
Mais je le ferais simplement avec la facilité. Je voudrais également vous dire que beaucoup de réponses ici sont incorrectes, mais les deux façons dont j'ai montré au moins fonctionnent en HTML 5.
la source
C'est la bonne réponse CSS3. J'espère que cela vous aide en quelque sorte 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 fait cette solution en lisant ce livre maintenant . :RÉ
la source
Ajoutez une
float:left;
propriété dans les deux divisions.Ajouter une
display:inline-block;
propriété.Ajouter une
display:flex;
propriété dans la div parent.la source
Mon approche:
CSS:
la source
la source
Dans l'interface utilisateur matérielle et react.js, vous pouvez utiliser la grille
la source