Al usar inline-blockelementos, siempre habrá un whitespace problema entre esos elementos (ese espacio tiene aproximadamente ~ 4px de ancho).
Entonces, sus dos divs, que tienen 50% de ancho, más que whitespace(~ 4px) tiene más del 100% de ancho, por lo que se rompe. Ejemplo de su problema:
body{
  margin: 0; 
}
div{
  display: inline-block;
  width: 50%;
}
.left{
  background-color: aqua;
}
.right{
  background-color: gold;
}
<div class="left">foo</div>
<div class="right">bar</div>
 
 
Hay algunas formas de solucionarlo:
1. No hay espacio entre esos elementos
body{
  margin: 0; 
}
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. Usar comentarios HTML
body{
  margin: 0; 
}
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. Establecer los padres font-sizea 0, y luego añadir un poco de valor a inline-blocklos elementos
body{
  margin: 0; 
}
.parent{
  font-size: 0;  
}
.parent > div{
  display: inline-block;
  width: 50%;
  font-size: 16px; 
}
.left{
  background-color: aqua;
}
.right{
  background-color: gold;
}
<div class="parent">
  <div class="left">foo</div>
  <div class="right">bar</div>
</div>
 
 
4. Usar un margen negativo entre ellos ( no es preferible )
body{
  margin: 0; 
}
div{
  display: inline-block;
  width: 50%;
  margin-right: -4px; 
}
.left{
  background-color: aqua;
}
.right{
  background-color: gold;
}
<div class="left">foo</div>
<div class="right">bar</div>
 
 
5. Ángulo de caída de cierre
body{
  margin: 0; 
}
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. Omitir ciertas etiquetas de cierre HTML (gracias @thirtydot por la referencia )
body{
  margin: 0; 
}
ul{
  margin: 0; 
  padding: 0; 
}
li{
  display: inline-block;
  width: 50%;
}
.left{
  background-color: aqua;
}
.right{
  background-color: gold;
}
<ul>
  <li class="left">foo
  <li class="right">bar
</ul>
 
 
Referencias:
- Luchando contra el espacio entre elementos de bloques en línea en trucos CSS
 
- Eliminar espacios en blanco entre elementos de bloques en línea por David Walsh
 
- ¿Cómo eliminar el espacio entre elementos de bloques en línea?
 
Como dijo @ MarcosPérezGude  , la mejor manera es usar y agregar algún valor predeterminado a la etiqueta (como en HTML5Boilerplate ). Ejemplo:remfont-sizehtml
html{
    font-size: 1em;
}
.ib-parent{             
    font-size: 0;
}
.ib-child{
    display: inline-block;
    font-size: 1rem;
}
Actualización : como es casi 2018., use flexbox o incluso mejor: diseño de cuadrícula CSS .
     
                
flexbox,table/table-row/table-cello el usofloat.parent { font-size:0; } child {font-size: 1rem; }. Con rems ahora es más fácilborderesté apagado. Esto puede agregar espacio si está flotando los divs.buena respuesta en css3 es:
white-space: nowrap;en el nodo principal y:
white-space: normal; vertical-align: top;en div (u otro) al 50%
ejemplo: http://jsfiddle.net/YpTMh/19/
EDITAR:
hay otra forma con:
font-size: 0;para el nodo principal y anularlo en el nodo secundario
fuente
Es porque el espacio en blanco entre sus dos divs se interpreta como un espacio. Si coloca sus
<div>etiquetas en línea como se muestra a continuación, el problema se corrige :<div id="left"></div><div id="right"></div>fuente
Porque hay un espacio entre los elementos. Si elimina todos los espacios en blanco, encajarán .
<div id="left">Left</div><div id="right">Right</div>fuente
O haz que se bloqueen en lugar de bloquear en línea. Esto hará que los divs ignoren los espacios entre ellos.
display:block;o eliminar el espacio entre las etiquetas
<div id='left'></div><div id='right'></div>o agregar
margin: -1en;a uno de los divs para mitigar el espacio ocupado por el espacio único renderizado.
fuente
Por favor verifique el siguiente código:
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>fuente
Ejemplo de Flexbox: esto se usaría para la clase principal que contiene los dos elementos uno al lado del otro.
.parentclass { display: flex; justify-content: center; align-items: center; }Tomado de centrar verticalmente un div dentro de otro div
fuente
Se puede hacer agregando la pantalla css: inline al div que contiene los elementos en línea.
Si bien se elimina el espacio en blanco utilizando un margen con un valor negativo, es necesario agregarlo a este elemento en particular. Ya que agregarlo a una clase afectará los lugares donde se ha utilizado esta clase.
Por lo tanto, sería más seguro usar display: inline;
fuente
agregar flotador: izquierda; a ambas etiquetas div.
div { float: left; }fuente