Ao usar inline-block
elementos, sempre haverá um whitespace
problema entre esses elementos (esse espaço tem cerca de 4 px de largura).
Então, seus dois divs
, que têm 50% de largura, mais whitespace
(~ 4px) têm mais de 100% de largura, e então quebram. Exemplo do seu problema:
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>
Existem algumas maneiras de corrigir isso:
1. Sem espaço entre esses elementos
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. Usando comentários 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. Defina os pais font-size
como 0
e, em seguida, adicione algum valor aos inline-block
elementos
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. Usando uma margem negativa entre eles ( não preferível )
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. Abaixando o ângulo de fechamento
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. Ignorando certas tags de fechamento HTML (obrigado @thirtydot pela referência )
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>
Referências:
- Combatendo o espaço entre os elementos do bloco embutido em truques CSS
- Remover espaços em branco entre elementos de bloco embutido por David Walsh
- Como remover o espaço entre os elementos do bloco embutido?
Como disse @MarcosPérezGude , a melhor forma é usar e adicionar algum valor padrão na tag (como no HTML5Boilerplate ). Exemplo:rem
font-size
html
html{
font-size: 1em;
}
.ib-parent{ /* ib -> inline-block */
font-size: 0;
}
.ib-child{
display: inline-block;
font-size: 1rem;
}
Atualização : como é quase 2018., use flexbox ou ainda melhor - layout de grade CSS .
flexbox
,table/table-row/table-cell
ou o usofloat
.parent { font-size:0; } child {font-size: 1rem; }
. Com rems agora é mais fácilborder
está desligado. Isso pode adicionar espaço se você estiver flutuando os divs.boa resposta em css3 é:
no nó pai e:
em div (ou outro) em 50%
exemplo: http://jsfiddle.net/YpTMh/19/
EDITAR:
existe outra maneira com:
para o nó pai e substituí-lo no nó filho
fonte
É porque o espaço em branco entre seus dois divs está sendo interpretado como um espaço. Se você colocar suas
<div>
tags em linha conforme mostrado abaixo, o problema será corrigido :fonte
Porque existe um espaço entre os elementos. Se você remover todos os espaços em branco, eles se encaixarão .
fonte
Faça-os bloquear em vez de bloquear em linha. Isso fará com que os divs ignorem os espaços entre eles.
ou remova o espaço entre as tags
ou adicionar
para um dos divs para reduzir o espaço ocupado por um único espaço renderizado.
fonte
Verifique o código abaixo:
fonte
Exemplo de Flexbox - isso seria usado para a classe pai que contém os dois elementos lado a lado.
Tirado da centralização vertical de um div dentro de outro div
fonte
Isso pode ser feito adicionando css display: inline ao div que contém os elementos inline.
Ao remover o espaço em branco usando margem com valor negativo, torna-se necessário adicioná-lo a este elemento específico. Como adicioná-lo a uma classe afetará os locais onde essa classe foi usada.
Portanto, seria mais seguro usar display: inline;
fonte
add float: left; para ambas as tags div.
fonte