Mise à jour : comme c'est 2021, utilisez flexbox ou encore mieux - Mise en page de la grille CSS au lieu de inline-block
.
Lorsque vous utilisez inline-block
il y aura toujours un élément whitespace
question entre ces éléments (cet espace fait environ ~ 4px de large).
Donc, vos deux divs
qui ont tous deux une largeur de 50 %, et que whitespace
(~ 4px) est plus de 100% en largeur, et donc il se 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 y a plusieurs façons de résoudre ce problème :
1. Pas d'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. Utiliser les 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éfinir les parents font-size
a 0
puis en ajoutant une valeur à 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. En utilisant une marge négative entre eux ( non souhaitable )
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. Baisse 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. Sauter certains Balises de fermeture HTML (merci @thirtydot pour le 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 blocs en ligne sur CSS Tricks
- Suppression des espaces blancs entre les éléments d'un bloc en ligne par David Walsh
- Comment supprimer l'espace entre les éléments inline-block ?
En @MarcosPérezGude a déclaré El meilleur est d'utiliser rem
et ajouter une valeur par défaut à font-size
sur le html
(comme dans HTML5Boilerplate ). Exemple :
html{
font-size: 1em;
}
.ib-parent{ /* ib -> inline-block */
font-size: 0;
}
.ib-child{
display: inline-block;
font-size: 1rem;
}