Lors de l'utilisation d' inline-block
éléments, il y aura toujours un whitespace
problème entre ces éléments (cet espace mesure environ 4 px de large).
Donc, vos deux divs
, qui ont tous deux une largeur de 50%, plus cela whitespace
(~ 4px) a plus de 100% de largeur, et donc ça casse. Exemple de votre problème:
body{
margin: 0; /* removing the default body margin */
}
div{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div>
<div class="right">bar</div>
Il existe plusieurs façons de résoudre ce problème:
1. Aucun espace entre ces éléments
body{
margin: 0; /* removing the default body margin */
}
div{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div><div class="right">bar</div>
2. Utilisation des commentaires HTML
body{
margin: 0; /* removing the default body margin */
}
div{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div><!--
--><div class="right">bar</div>
3. Définissez les parents font-size
sur 0
, puis ajoutez de la valeur aux inline-block
éléments
body{
margin: 0; /* removing the default body margin */
}
.parent{
font-size: 0; /* parent value */
}
.parent > div{
display: inline-block;
width: 50%;
font-size: 16px; /* some value */
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="parent">
<div class="left">foo</div>
<div class="right">bar</div>
</div>
4. Utiliser une marge négative entre eux ( pas préférable )
body{
margin: 0; /* removing the default body margin */
}
div{
display: inline-block;
width: 50%;
margin-right: -4px; /* negative margin */
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div>
<div class="right">bar</div>
5. Abaissement de l'angle de fermeture
body{
margin: 0; /* removing the default body margin */
}
div{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div
><div class="right">bar</div>
<hr>
<div class="left">foo</div><div class="right">
bar</div>
6. Ignorer certaines balises de fermeture HTML (merci @thirtydot pour la référence )
body{
margin: 0; /* removing the default body margin */
}
ul{
margin: 0; /* removing the default ul margin */
padding: 0; /* removing the default ul padding */
}
li{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<ul>
<li class="left">foo
<li class="right">bar
</ul>
Références:
- Combattre l'espace entre les éléments de bloc en ligne sur les astuces CSS
- Supprimer les espaces entre les éléments de bloc en ligne par David Walsh
- Comment supprimer l'espace entre les éléments de bloc en ligne?
Comme @ MarcosPérezGude dit , la meilleure façon est d'utiliser rem
, et ajouter une certaine valeur par défaut font-size
sur l' html
étiquette (comme dans HTML5Boilerplate ). Exemple:
html{
font-size: 1em;
}
.ib-parent{ /* ib -> inline-block */
font-size: 0;
}
.ib-child{
display: inline-block;
font-size: 1rem;
}
Mise à jour : comme nous sommes près de 2018., utilisez flexbox ou encore mieux - disposition en grille CSS .
flexbox
,table/table-row/table-cell
ou l' utilisationfloat
.parent { font-size:0; } child {font-size: 1rem; }
. Avec rems, c'est maintenant le plus simpleborder
- vous également qu'il est éteint. Cela peut ajouter de l'espace si vous faites flotter les div.la bonne réponse en css3 est:
dans le nœud parent, et:
en div (ou autre) à 50%
exemple: http://jsfiddle.net/YpTMh/19/
ÉDITER:
il y a un autre moyen avec:
pour le nœud parent et le remplacer dans le nœud enfant
la source
C'est parce que l'espace entre vos deux divs est interprété comme un espace. Si vous mettez vos
<div>
balises en ligne comme indiqué ci-dessous, le problème est corrigé :la source
Parce qu'il y a un espace entre les éléments. Si vous supprimez tous les espaces, ils s'adapteront .
la source
Soit les faire bloquer au lieu de bloquer en ligne. Cela rendra les div en ignorant les espaces entre eux.
ou supprimer l'espace entre les balises
ou ajouter
à l'un des divs afin d'atténuer l'espace occupé par un seul espace rendu.
la source
Veuillez vérifier le code ci-dessous:
la source
Exemple Flexbox - cela serait utilisé pour la classe parente contenant les deux éléments côte à côte.
Tiré de Centrage vertical d'un div à l'intérieur d'un autre div
la source
Cela peut être fait en ajoutant l'affichage css: inline au div qui contient les éléments en ligne.
Tout en supprimant l'espace blanc en utilisant une marge avec une valeur négative, il devient nécessaire de l'ajouter à cet élément particulier. Comme l'ajouter à une classe affectera les endroits où cette classe a été utilisée.
Il serait donc plus sûr d'utiliser display: inline;
la source
ajouter float: gauche; aux deux balises div.
la source