CSS : 테이블의 행 사이에 간격을 어떻게 생성합니까?


94

결과 테이블을 다음과 같이 보이게 만드는 것을 의미합니다.

[=== 행 ===]
[=== 행 ===]
[=== 행 ===]
[=== 행 ===]

... 그리고 더 비슷합니다 :

[=== 행 ===]

[=== 행 ===]

[=== 행 ===]

[=== 행 ===]

나는 추가를 시도했다

margin-bottom:1em;

td 와 tr 모두에게 있지만 아무것도 얻지 못했습니다. 어떤 아이디어?


2
왜 cellpacing과 cellpadding은 안되나요?
— adatapost

1
셀 간격은 열 사이의 간격도 제공합니다.
— rahul 2009-08-12

4
셀 간격 및 셀 패딩이 유효하지 않습니다 (X) HTML. 그것들을 사용해서는 안됩니다.
— freiksenet

8
@freiksenet : 당신이 틀렸어요. 완벽하게 유효한 엄격한 HTML4 ( w3.org/TR/html401/struct/tables.html#h-11.2.1 ), XHTML1 ( w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ) 및 XHTML1 .1 ( w3.org/MarkUp/DTD/xhtml-table-1.mod ).
— mercator 2009-08-12

답변:


214

당신이 필요로하는 모든:

table {
    border-collapse: separate;
    border-spacing: 0 1em;
}

그것은 당신이 1em 수직 간격을 원하고 수평 간격이 없다고 가정합니다. 이 작업을 수행하는 경우 줄 높이 제어도 살펴 봐야합니다.

사람들이 제공 한 답변 중 일부가 국경 붕괴 : 붕괴와 관련되어 있다는 것은 다소 이상합니다. 그 효과는 질문이 요청한 것과 정반대입니다.


아 맞다, 나는 더 넓은 간격을 갖도록 특정 열을 얻으려고했기 때문에 테이블에 적용 할 생각은 없었다
— Jonathan.

4
이 솔루션을 사용하면 특정 행에 간격을 선택적으로 적용 할 수 없습니다.
— Flimm

15
질문은 그것을 요구하지 않았습니다.
— John Haugeland 2014

이것은 좋은 생각이지만 첫 번째 행의 상단 간격을 채우기 위해 표준이 아니지만 작동하는 해결 방법을 찾아야했습니다. 주기 thead, tbody {position: relative; top: -{border-spacing-value} }.
— Farzad YZ

3
당신을 사랑한다고 말할 수 있습니까? 세상에. 당신은 내 $$ 저장
— NikosKeyz

93
table {
    border-collapse: collapse;
}

td {
    padding-top: .5em;
    padding-bottom: .5em;
}

먼저 border-collapse를 설정하지 않으면 셀이 반응하지 않습니다. 설정된 TR 요소에 테두리를 추가 할 수도 있습니다.

이것이 레이아웃의 경우 DIV 및 최신 레이아웃 기술을 사용하는 것으로 이동하지만 이것이 표 형식의 데이터라면 스스로를 두 드리십시오. 나는 여전히 데이터를 위해 웹 애플리케이션에서 테이블을 많이 사용합니다.


테스트 했습니까? td의 패딩은 붕괴 유무에 관계없이있을 수 있습니다. 테두리는 축소와 함께 작동하지만 IE에서는 작동하지 않습니다.
— Kobi

이것은 효과가 있었다. 여백이 작동하지 않는다는 것이 귀찮지 만이 경우에는 중요하지 않습니다. 감사.
— MGOwen

30
이것은 정말 나쁜 접근법입니다. 셀이 떨어져 있기를 원하기 때문에 셀을 함께 융합하여 셀 위치를 지정하는 것이 아니라 셀의 위치를 ​​지정하도록 셀 상자를 수정합니다. 두 번째로 세포에 배경이 필요하면 엉망입니다. 올바른 접근 방식은 테두리 분리가 아니라 테두리 분리입니다. 테두리 분리를 사용하여 테두리 분리를 정의합니다.
— John Haugeland 2013 년

1
브라우저에는 이미 모든 사람들이 픽셀 단위의 정확한 레이아웃에 사용하는 HTML 버전에 대해 구현 된 테이블 간격이 있기 때문에 구현 된 CSS2의 거의 첫 번째 부분입니다. 네, 확신합니다. :)
— John Haugeland 2015

1
사양을 읽은 사람 외에는 아무도 모르는 CSS의 이상한 모서리 중 하나입니다. (그들 중 의외로 많은 수 있습니다 마찬가지로 기본적으로는 실제로 사용되는 방법을 사용해서는 안됩니다 떠..)
— 존 하 우즈 랜드

7

다른 답변 중 어느 것도 만족스럽지 않은 경우 언제든지 빈 행을 만들고 CSS로 적절하게 스타일을 지정하여 투명하게 만들 수 있습니다.


왜 반대 투표입니까? 다른 답변은 문제가 있습니다. rpflo의 답변은 border-collapse를 사용하고 셀의 패딩을 확장하여 셀 사이에 간격을 만드는 대신 더 크게 보이도록 요구합니다. John Haugeland의 대답은 특정 행에 간격을 선택적으로 적용하는 것을 허용하지 않습니다. 계속할 수는 있지만이 답변은 다른 답변이 없었을 때 내 사용 사례에 적합한 옵션 중 하나입니다.
— Flimm

2
CSS로 개별 행의 높이를 지정하는 익명 사용자의 반대 투표 방식은 테이블에 더미 콘텐츠를 추가하는 것보다 훨씬 우수합니다. 개별 행을 제어해야 할 가능성이 있습니다.
— John Haugeland 2014-08-15

가짜 행은 또한 테이블 행이 테이블 행이 될 것으로 예상하는 도구를 혼동합니다 (예 : 비활성화 된 사용자를위한 중요한 접근성 도구, 내보내기 / 정렬 / 재 포맷 등을위한 일반적인 플러그인). 일반적으로 가짜 물건을 집어 넣는 대신 스타일을 사용하여 스타일을 제어하는 ​​데는 여러 가지 이유가 있습니다. 자세한 정보는 시맨틱 마크 업에 대해 읽어보십시오.
— MGOwen

@MGOwen이 시나리오에서 실패 할 접근성 도구와 실패 방법의 이름을 지정할 수 있습니까? 저는 이제 구체적인 사항을 언급하지 않는 접근성 조언에 회의적입니다. 실제로 누구에게도 도움이되지 않는 나쁜 접근성 조언이 많이 있습니다 (예를 들어 HTML 5 에 대한 문서 개요 조언 은 모두 잘못되었습니다 . 접근성 도구는 그렇지 않습니다. 사람들이 일한다고 말하는 방식으로 일하십시오).
— Flimm

4

당신이 국경을, 또는 국경을 가지고 있으며 세포 내부의 간격을하지 않으려면, 당신은 사용할 수 있습니다 padding, 또는 line-height. 내가 아는 한 여백은 셀과 행에 영향을 미치지 않습니다.
셀 간격에 대한 CSS 속성은 다음과 같습니다.border-spacing 이지만 IE6 / 7에서는 작동하지 않습니다 (따라서 군중에 따라 사용할 수 있음).

다른 모든 방법이 실패하면 cellspacing마크 업에서 이전 속성을 사용할 수 있지만 이렇게하면 열 사이의 간격도 제공됩니다. 일부 CSS 재설정 은 브라우저 간 지원을 받으려면 어쨌든 설정해야한다고 제안합니다.

/ * cellspacing="0"마크 업에 테이블이 여전히 필요 합니다 * /


2

이것은 방법입니다 (불가능하다고 생각했습니다) :

먼저 테이블에 세로 테두리 간격 (예 : 5px) 만 지정하고 가로 테두리 간격을 0으로 설정합니다. 그런 다음 각 행 셀에 적절한 테두리를 지정해야합니다. 예를 들어 각 행의 맨 오른쪽 셀에는 위쪽, 아래쪽 및 오른쪽에 테두리가 있어야합니다. 맨 왼쪽 셀에는 위쪽, 아래쪽 및 왼쪽에 테두리가 있어야합니다. 그리고이 2 개 사이의 다른 셀은 위쪽과 아래쪽에만 테두리가 있어야합니다. 이 예와 같이 :

<table style="border-spacing:0 5px; color:black">
    <tr>
        <td style="border-bottom:thin black solid; border-top:thin black solid; border-left:thin black solid;">left-most cell</td>
        <td style="border-bottom:thin black solid; border-top:thin black solid;">other cell</td>
        <td style="border-bottom:thin black solid; border-top:thin black solid;">other cell</td>
        <td style="border-bottom:thin black solid; border-top:thin black solid;">other cell</td>
        <td style="border-bottom:thin black solid; border-top:thin black solid; border-right:thin black solid;">right-most cell</td>
    </tr>
    <tr>
        <td style="border-bottom:thin black solid; border-top:thin black solid; border-left:thin black solid;">left-most cell</td>
        <td style="border-bottom:thin black solid; border-top:thin black solid;">other cell</td>
        <td style="border-bottom:thin black solid; border-top:thin black solid;">other cell</td>
        <td style="border-bottom:thin black solid; border-top:thin black solid;">other cell</td>
        <td style="border-bottom:thin black solid; border-top:thin black solid; border-right:thin black solid;">right-most cell</td>
    </tr>
    <tr>
        <td style="border-bottom:thin black solid; border-top:thin black solid; border-left:thin black solid;">left-most cell</td>
        <td style="border-bottom:thin black solid; border-top:thin black solid;">other cell</td>
        <td style="border-bottom:thin black solid; border-top:thin black solid;">other cell</td>
        <td style="border-bottom:thin black solid; border-top:thin black solid;">other cell</td>
        <td style="border-bottom:thin black solid; border-top:thin black solid; border-right:thin black solid;">right-most cell</td>
    </tr>
</table>

1

제 생각에는 가장 쉬운 방법은 태그에 패딩을 추가하는 것입니다.

td {
 padding: 10px 0
}

이것이 당신을 도울 것입니다! 격려!


이렇게하면 테이블 행 내부에 추가 공간이 생깁니다. 표 행에 좋지 않은 색상이있는 경우.
— Kokodoko

1

간단히 사용할 수 있습니다 padding-top및 padding-bottomA의 td요소입니다.

단위 는이 목록에서 무엇이든 할 수 있습니다.

여기에 이미지 설명 입력

데모 코드 :

td
{
  padding-top: 10px;
  padding-bottom: 10px;
}
<table>
  <tr>
    <th>Firstname</th>
    <th>Lastname</th>
  </tr>
  <tr>
    <td>Peter</td>
    <td>Griffin</td>
  </tr>
  <tr>
    <td>Lois</td>
    <td>Griffin</td>
  </tr>
</table>


0

공간이 td와 동일한 배경색을 갖기를 원하면 TD의 패딩이 작동합니다.

제 경우에는 헤더 행과 그 위에있는 항목 사이의 공백이 필요했습니다.

이 스타일링을 단일 셀에 적용하여 원하는 분리를 얻을 수있었습니다. 모든 셀에 추가 할 필요는 없습니다 ... 틀림없이 가장 우아하지는 않지만 구분자 행보다 더 우아 할 수 있습니다.

<td colspan="10"> 
    <div class="HeaderRow" 
         style="margin-top:10px;">
            <%# Eval("VendorName")%>
     </div>
</td>  

-1

테이블을 사용하여 디자인을 고수하는 경우 가장 좋은 아이디어는 내용이없고 테이블의 각 행 사이에 지정된 높이가있는 빈 행을 제공하는 것입니다.

div를 사용하여 이러한 복잡성을 피할 수 있습니다. 각 div에 여백을 제공하십시오.


1
표 (예 : 표 형식 데이터)를 사용하는 데는 여전히 좋은 이유가 있습니다. 맞습니다. 빈 행은 확실히 어리석은 경로입니다. : P 그러나 해결책이 있습니다.
— Ryan Florence

-1

CSS를 사용하여 각 행의 높이를 수정할 수도 있습니다.

<head>
 <style>
 tr {
   height:40px;
 }
</style>
</head>

<body>
<table>

<tr> <td>One</td> <td>Two</td> </tr>
<tr> <td>Three</td> <td>Four</td> </tr>
<tr> <td>Five</td> <td>Six</td> </tr>

</table>
</body>

<td>요소 의 높이를 수정할 수도 있으며 동일한 결과를 제공합니다.


-1

<tr>바로 아래에 다른 하나를 만들고 내용에 약간의 공간이나 높이를 추가하십시오.<td>

여기에 이미지 설명 입력

예를 들어 바이올린을 확인하십시오.

https://jsfiddle.net/jd_dev777/wx63norf/9/


이것은 나쁜 습관으로 간주됩니다. 그 이유 중 하나는 도구 (예 : 장애인 사용자를위한 리더)가 테이블 행이 테이블 행일 것으로 예상하고 실제 행과 혼합 된 "가짜"행을 내보내거나 읽거나 해석하기 때문입니다. 위의 2014 년에 이와 동일한 답변이 처음으로 주어졌습니다.
— MGOwen

1
@MGOwen 귀하의 제안에 감사드립니다. 완전히 동의 함
— Jaydeep Chauhan

-4

tr에 다음 규칙을 추가하면 작동합니다.

float: left

샘플 (IE9 오프 코스에서 열기 :)) : http://jsfiddle.net/zshmN/

편집 : 이것은 많은 사람들이 지적한 합법적이거나 올바른 해결책이 아니지만 옵션이없고 필요한 것이 있으면 IE9에서 작동합니다.

따라서 투표를 거부하는 모든 분들께 올바른 해결책도 알려주십시오.


3
이 접근 방식은 셀에 다른 차원의 데이터가 포함 된 경우 열의 자동 정렬을 방지합니다. 테이블 마크 업은 본질적으로 무의미합니다. 제공된 예제에서는 충분히 작동하지만 권장되는 기술은 아닙니다. 내가 의미하는 바를 확인하기 위해 셀의 텍스트를 변경하십시오.
— verism 2013

안녕하세요 @verism, 죄송하지만 요점을 이해하지 못했습니다. 좀 더 설명해 주 시겠어요? 또는이 방법을 광범위하게 사용하고 실패한 시나리오를 처리하고 싶으 므로이 방법이 실패하는 바이올린을 제공 할 수 있습니다.
— Sandeep Choudhary 2013

열에 대한 명확한 묘사가 없습니다. 이는 표 형식 데이터가 시각적 구조를 잃고 읽기가 더 어려워 짐을 의미합니다. jsfiddle.net/verism/zshmN/5
— verism

@verism ya 이것은 하나의 문제이지만 고정 너비 열을 정의 할 수 있습니다. 나는 이것이 좋은 해결책이 아니라는 것을 알고 있지만 IE9에서 작동하는 다른 해결책을 찾지 못했습니다
— Sandeep Choudhary

1
CSS 사양에 따라 플로팅 테이블 행이 합법적이지 않습니다. CSS2 섹션 17에서는 display : table-row 요소가 display : table-row-group, -header-group 또는 -footer-group 요소 내에 있어야합니다. 그러나 섹션 9에 따른 부동 알고리즘은 익명 블록 부모를 삽입합니다. 이는 테이블 행에 더 이상 합법적 인 상위 레이아웃이 없으며 브라우저가 수행 할 작업을 추측하고 있음을 의미합니다. 이것은 잘못된 것입니다.
— John Haugeland 2014-08-27
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.