92 votes

Deux éléments inline-block, d'une largeur de 50 % chacun, ne tiennent pas côte à côte sur une seule ligne.

<!DOCTYPE html>
<html>
<head>
<title>Width issue</title>
<style type="text/css">
body {
    margin: 0;
}
#left {
    width: 50%;
    background: lightblue;
    display: inline-block;
}
#right {
    width: 50%;
    background: orange;
    display: inline-block;
}
</style>
</head>
<body>
    <div id="left">Left</div>
    <div id="right">Right</div>
</body>
</html>

JSFiddle : http://jsfiddle.net/5EcPK/

Le code ci-dessus tente de placer la division #left et la division #right, côte à côte, sur une seule ligne. Mais comme vous pouvez le voir dans l'URL JSFiddle ci-dessus, ce n'est pas le cas.

Je parviens à résoudre le problème en réduisant la largeur de l'une des divisions à 49 %. Voir http://jsfiddle.net/mUKSC/ . Mais ce n'est pas une solution idéale car un petit espace apparaît entre les deux divs.

Une autre façon de résoudre le problème est de faire flotter les deux divs. Voir http://jsfiddle.net/VptQm/ . Cela fonctionne bien.

Mais ma question initiale demeure. Pourquoi, lorsque les deux divs sont conservés en tant qu'éléments inline-block, ils ne tiennent pas côte à côte ?

2voto

Vaneet Thakur Points 89

Veuillez vérifier le code ci-dessous :

body {
    margin: 0;
}
#left {
    width: 50%;
    background: lightblue;
    display: inline-block;
    float:left;
}
#right {
    width: 50%;
    background: orange;
    display: inline-block;
    float:left;
}

<div id="left">Left</div>
<div id="right">Right</div>

1voto

Vish Points 171

Pour ce faire, il suffit d'ajouter la propriété css display:inline à la division qui contient les éléments en ligne.

En supprimant l'espace blanc en utilisant la marge avec une valeur négative, il devient nécessaire de l'ajouter à cet élément particulier. En effet, l'ajouter à une classe affectera les endroits où cette classe a été utilisée.

Il serait donc plus sûr d'utiliser display:inline ;

1voto

nbixler Points 458

Exemple de Flexbox : cette classe serait utilisée pour la classe parentale contenant les deux éléments côte à côte.

.parentclass {
  display: flex;
  justify-content: center;
  align-items: center; 
}

Tiré de Centrage vertical d'une div à l'intérieur d'une autre div

0voto

Tatenda Points 21

Ajouter float : left ; aux deux balises div.

div {
  float: left;
}

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