Eu tenho aqui dois divs:
<div style="display:table-cell" id="div1">
content
</div>
<div style="display:table-cell" id="div2">
content
</div>
Existe uma maneira de abrir espaço entre esses dois divs (que têm display:table-cell
)?
Eu tenho aqui dois divs:
<div style="display:table-cell" id="div1">
content
</div>
<div style="display:table-cell" id="div2">
content
</div>
Existe uma maneira de abrir espaço entre esses dois divs (que têm display:table-cell
)?
Respostas:
Você pode usar a border-spacing
propriedade:
HTML:
<div class="table">
<div class="row">
<div class="cell">Cell 1</div>
<div class="cell">Cell 2</div>
</div>
</div>
CSS:
.table {
display: table;
border-collapse: separate;
border-spacing: 10px;
}
.row { display:table-row; }
.cell {
display:table-cell;
padding:5px;
background-color: gold;
}
Alguma outra opção?
Bem , na verdade não.
Por quê?
margin
propriedade não é aplicável a display: table-cell
elementos.padding
propriedade não cria espaço entre as bordas das células.float
propriedade destrói o comportamento esperado de table-cell
elementos que podem ser tão altos quanto seu elemento pai.position: relative
sobre table-*-group
, table-row
, table-column
, table-cell
, e table-caption
elementos é indefinido.
border-right: 10px solid #FFF
. Isso funcionou bem para mim ao projetar um menu suspenso CSS, quando eu queria algum espaço entre os table-cell
elementos.
Use bordas transparentes, se possível.
https://jsfiddle.net/74q3na62/
HTML
<div class="table">
<div class="row">
<div class="cell">Cell 1</div>
<div class="cell">Cell 2</div>
<div class="cell">Cell 3</div>
</div>
</div>
CSS
.table {
display: table;
border: 1px solid black;
}
.row { display:table-row; }
.cell {
display: table-cell;
background-clip: padding-box;
background-color: gold;
border-right: 10px solid transparent;
}
.cell:last-child {
border-right: 0 none;
}
Você poderia usar a border-spacing
propriedade, como a resposta aceita sugere, mas isso não só gera espaço entre as células da tabela, mas também entre as células da tabela e o recipiente da tabela. Isso pode ser indesejado.
Se você não precisa de bordas visíveis nas células de sua tabela, você deve usar transparent
bordas para gerar as margens das células. Bordas transparentes requerem configuração, background-clip: padding-box;
caso contrário, a cor de fundo das células da tabela é exibida na borda.
Bordas transparentes e clipes de fundo são suportados no IE9 ou superior (e em todos os outros navegadores modernos). Se você precisa de compatibilidade com o IE8 ou não precisa de espaço transparente real, você pode simplesmente definir uma cor de borda branca e deixar de background-clip
fora.
<div style="display:table;width:100%" >
<div style="display:table-cell;width:49%" id="div1">
content
</div>
<!-- space between divs - display table-cell -->
<div style="display:table-cell;width:1%" id="separated"></div>
<!-- //space between divs - display table-cell -->
<div style="display:table-cell;width:50%" id="div2">
content
</div>
</div>
Bem, o acima funciona, aqui está minha solução que requer um pouco menos de marcação e é mais flexível.
.cells {
display: inline-block;
float: left;
padding: 1px;
}
.cells>.content {
background: #EEE;
display: table-cell;
float: left;
padding: 3px;
vertical-align: middle;
}
<div id="div1" class="cells"><div class="content">My Cell 1</div></div>
<div id="div2" class="cells"><div class="content">My Cell 2</div></div>
Faça um novo div com qualquer nome (usarei apenas table-split) e dê-lhe uma largura, sem adicionar conteúdo, enquanto o posiciona entre os divs necessários que precisam ser separados.
Você pode adicionar a largura que achar necessária. Usei apenas 0,6% porque é o que eu precisava quando tinha que fazer isso.
.table-split {
display: table-cell;
width: 0.6%
}
<div class="table-split"></div>
position: relative
,.