Al usar inline-block
elementos, 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-size
a 0
, y luego añadir un poco de valor a inline-block
los 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:rem
font-size
html
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-cell
o el usofloat
.parent { font-size:0; } child {font-size: 1rem; }
. Con rems ahora es más fácilborder
esté 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