div 사이의 공간-테이블 셀 표시


97

여기에 두 개의 div가 있습니다.

<div style="display:table-cell" id="div1">
    content
</div>

<div style="display:table-cell" id="div2">
    content
</div>

이 두 div 사이에 공간을 만드는 방법이 display:table-cell있습니까?

답변:


192

border-spacing속성 을 사용할 수 있습니다 .

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;
}

JSBin 데모

다른 옵션이 있습니까?

글쎄 ,별로.

왜?

  • margin속성 display: table-cell 요소에 적용 할없습니다 .
  • padding 속성은 셀의 가장자리 사이에 공간을 만들지 않습니다.
  • float속성 table-cell은 부모 요소만큼 높을 수있는 요소 의 예상되는 동작을 파괴합니다 .

다른 옵션이 있습니까? 물론 position: relative입니다..
Jongosi

따르면 @Jongosi 사양 : 효과 position: relativetable-*-group, table-row, table-column, table-celltable-caption요소는 정의되지 않는다.
Hashem Qolami 2014-06-16

3
배경과 같은 색상의 단면 테두리를 만들 수도 있습니다. border-right: 10px solid #FFF. 이것은 table-cell요소 사이에 약간의 공간이 필요할 때 CSS 드롭 다운 메뉴를 디자인 할 때 잘 작동했습니다 .
armadadrive

1
순전히 간격을 위해 셀을 추가 할 수도 있습니다. 이상적이지는 않지만 최소한 오른쪽 셀에서 테두리 간격을 끄려고하는 골칫거리는 피할 수 있습니다.
Daniel

또한 "패딩"이 "셀"의 한 가장자리에만 있기를 원했기 때문에 투명한 테두리에 rgba (0,0,0,0)의 테두리 색상을 사용한 것을 제외하고 armadadrive의 솔루션을 사용해야했습니다. 배경색 / 이미지에 대해 걱정할 필요가 없습니다. 오른쪽 테두리 : 10px 단색 rgba (0,0,0,0);
JAX

20

가능하면 투명한 테두리를 사용하십시오.

JSFiddle 데모

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;
}

설명

border-spacing수락 된 답변에서 알 수 있듯이 속성을 사용할 수 있지만 이것은 테이블 셀 사이뿐만 아니라 테이블 셀과 테이블 컨테이너 사이에도 공간을 생성합니다. 이것은 원치 않는 것일 수 있습니다.

표 셀에 눈에 띄는 테두리가 필요하지 않은 경우 transparent테두리를 사용 하여 셀 여백을 생성 해야 합니다. 투명 테두리는 설정이 필요합니다. background-clip: padding-box;그렇지 않으면 테이블 셀의 배경색이 테두리에 표시되기 때문입니다.

투명 테두리 및 배경 클립은 IE9 이상 (및 기타 모든 최신 브라우저)에서 지원됩니다. IE8 호환성이 필요하거나 실제 투명 공간이 필요하지 않은 경우 흰색 테두리 색상을 설정하고 제외 할 수 있습니다 background-clip.


'border-right'설정은 실제로 사이에 공간을 제공하기에 충분하며 "테이블"선언이 필요하지 않습니다.
forsberg

0
<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>

0

글쎄, 위의 내용이 작동합니다. 여기에 마크 업이 약간 덜 필요하고 더 유연한 솔루션이 있습니다.

.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>


-6

이름이 무엇이든간에 새 div를 만들고 (테이블 분할을 사용합니다) 콘텐츠를 추가하지 않고 너비를 지정하고 분리해야하는 필요한 div 사이에 배치합니다.

필요한 너비를 추가 할 수 있습니다. 0.6 %를 사용했습니다. 왜냐하면 이것을해야 할 때 필요했기 때문입니다.

.table-split {
  display: table-cell;
  width: 0.6%
}
<div class="table-split"></div>


10
이것은 끔찍한 해결책입니다.

1
이것은 실제 테이블 요소가 레이아웃 목적으로 사용되었을 때 일반적인 전략이었으며 방법론이 이제 쓸모 없게 된 이유의 일부입니다.
rakitin

이 CSS로 수행 할 수있는 것처럼에만 HTML 사용은 피할 수 있어야
토니 미셸 Caubet
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.