CSS에서 cellpadding과 cellspacing을 설정 하시겠습니까?


3317

HTML 테이블에서 cellpaddingand cellspacing는 다음과 같이 설정할 수 있습니다.

<table cellspacing="1" cellpadding="1">

CSS를 사용하여 어떻게 동일한 작업을 수행 할 수 있습니까?


6
일반적인 제안으로, 이러한 솔루션을 시도하기 전에 style.css가 테이블에서 "재설정"되는지 확인하십시오. 예 : 설정 테이블이없는 경우 width:auto다음 border-collapse예상대로 작동하지 않을 수 있습니다.
PJ Brunet

1
테이블에 테두리 간격을 사용하고 td에 패딩을 사용하십시오.
Anubhav

답변:


3554

기초

CSS에서 " padding셀 패딩"을 제어하기 위해 간단히 테이블 셀에서 사용할 수 있습니다 . 예를 들어 "셀 패딩"10px :

td { 
    padding: 10px;
}

"셀 간격"의 경우 border-spacingCSS 속성을 테이블에 적용 할 수 있습니다 . 예를 들어 "셀 간격"10px :

table { 
    border-spacing: 10px;
    border-collapse: separate;
}

이 숙박 시설은 구식 "간격"으로 할 수없는 별도의 수평 및 수직 간격을 허용합니다.

IE <= 7의 문제

이것은 거의 운이 좋지 않은 Internet Explorer 7을 통해 Internet Explorer를 제외하고 거의 모든 인기있는 브라우저에서 작동합니다. 이 브라우저는 여전히 border-collapse인접한 테이블 셀의 경계를 병합하는 속성을 지원하기 때문에 "거의"라고 말합니다 . 셀 간격 을 제거하려는 경우 (즉, cellspacing="0") border-collapse:collapse동일한 효과를 가져야합니다. 테이블 셀 사이에 공간이 없습니다. 이 지원은 cellspacing테이블 요소 의 기존 HTML 속성을 무시하지 않기 때문에 버그가 있습니다 .

간단히 말해 Internet Explorer 5-7 이외의 브라우저의 경우 border-spacing처리합니다. Internet Explorer의 경우 상황이 옳은 경우 (0 셀 간격을 원하고 테이블에 아직 정의되어 있지 않은 경우)을 사용할 수 있습니다 border-collapse:collapse.

table { 
    border-spacing: 0;
    border-collapse: collapse;
}

참고 : 테이블과 브라우저에 적용 할 수있는 CSS 속성에 대한 훌륭한 개요는이 환상적인 Quirksmode 페이지를 참조하십시오 .


27
cellpadding = "0"은 border-collapse : collapse 및 border-spacing이 테이블에 적용 되더라도 Chrome 13.0.782.215에서 차이를 만들 수 있습니다.
휘트니 랜드

7
@LeeWhitney 테이블 셀에 padding : 0을 설정해야합니다.
Martin Ørding-Thomsen

7
주제를 조금 벗어 났지만 셀 패딩 및 셀 간격 속성은 HTML5에서 제거되었으므로 CSS가 이제 유일한 방법입니다.
Ignas2526

12
안녕 셀 패딩에 대한 섹션을 포함하여 명확성을 기하기 위해 답변을 업데이트했습니다. 더 유용하기를 바랍니다.
Eric Nguyen

4
사실 @vapcguy, 테이블을 스타일링 할 수있는 무한 가변적 인 다른 상황에서는보다 구체적인 선택기를 정의해야합니다. 위의 예는 예입니다.
Eric Nguyen

942

기본

브라우저의 기본 동작은 다음과 같습니다.

table {border-collapse: collapse;}
td    {padding: 0px;}

         여기에 이미지 설명을 입력하십시오

셀 패딩

셀의 내용과 셀 벽 사이의 간격을 설정합니다

table {border-collapse: collapse;}
td    {padding: 6px;}

        여기에 이미지 설명을 입력하십시오

세포 간격

테이블 셀 사이의 공간을 제어합니다

table {border-spacing: 2px;}
td    {padding: 0px;}

        여기에 이미지 설명을 입력하십시오

양자 모두

table {border-spacing: 2px;}
td    {padding: 6px;}

        여기에 이미지 설명을 입력하십시오

둘 다 (특별)

table {border-spacing: 8px 2px;}
td    {padding: 6px;}

        여기에 이미지 설명을 입력하십시오

참고 :border-spacing 설정되어 있으면 border-collapse테이블의 속성이 separate입니다.

직접 해보십시오!

여기에서 이것을 달성하는 오래된 HTML 방법을 찾을 수 있습니다.


1
테이블 주위의 간격이 어떻게 사라 집니까? "테두리 간격 : 8px 12px"를 설정하면 테이블 경계와 외부 셀 사이에 간격이 추가됩니다. 그러나 이것은 이미지에 표시되지 않으며 왼쪽으로 플러시됩니다.
Kaz

1
@ 2astalavista 불행히도 누군가가 외부 간격의 효과를 삭제하려는 경우 이러한 CSS 속성으로는 작동하지 않습니다.
Kaz

@Kaz 그 성가신 부분을 숨기려면 마이너스 마진을 사용해야 할 수도 있습니다.

2
TD의 기본 패딩은 일반적으로 0이 아니라 1px입니다.
Jan M

341
table
{
    border-collapse: collapse; /* 'cellspacing' equivalent */
}

table td, table th
{
    padding: 0; /* 'cellpadding' equivalent */
}

2
지나치게 일반적인 것을 피하기 위해 정보를 ID에 적용했지만 실제로 이것은 나를 위해 일할 수있는 유일한 것입니다.
Kzqai

20
그건 cellspacing=0해당. 에 해당하는 cellspacing=1것은 완전히 다릅니다. 허용 된 답변을 참조하십시오.
TRiG

3
table tdtable th단지 수 tdth각각? 어느 쪽이든 작동하지만 더 작은 선택기는 약간 더 빠른 매칭을 의미합니다.
Cole Johnson

1
@Cole 사실, 나는 그것이해야한다고 생각 table > tr > td하고 table > tr > th. 이것은 거의 trand 만큼 빠르며 th중첩 테이블이 있으면 작동합니다. 그냥 내 2C
leviathanbadger

@ aboveyou00이지만 table선택기가 필요합니까? IIRC, a <td>는 내부가 아닌 한 유효하지 않습니다 <tr>.
Cole Johnson

114

테이블 셀에 여백을 설정해도 실제로 아는 한 효과가 없습니다. 에 해당하는 실제 CSS cellspacingborder-spacing-이지만 Internet Explorer에서는 작동하지 않습니다.

border-collapse: collapse언급 한대로 셀 간격을 안정적으로 0으로 설정 하는 데 사용할 수 있지만 다른 값의 경우 브라우저 간 유일한 방법은 cellspacing속성 을 계속 사용하는 것입니다.


47
오늘날 시대에는 그 현실이 N도 수준으로 흡수됩니다.
John K

7
이것은 거의 정확하지만 border-collapse테이블에 아직 cellspacing정의 된 속성 이없는 경우 IE 5-7에서만 작동합니다 . 도움이되는 경우이 페이지의 다른 답변의 모든 올바른 부분을 병합하는 포괄적 인 답변을 작성했습니다.
Eric Nguyen

솔직히 말하면 누가 Internet Explorer에 관심이 있습니까? 웹 사이트를 사용하는 사람은 품질이 낮은 브라우저 를 사용하는 데있어 고장난 웹 사이트가 자신의 잘못이라는 것을 알아야 합니다. 웹 사이트는이를 처리 할 필요가 없습니다. Internet Explorer를 분실하십시오. 그것에 대한 지원을 잊어 버려. 우리는 그것을 필요로하지 않으며 개발하기가 고통 스럽습니다.

99

이 핵은 Internet Explorer 6 이상, Chrome , Firefox 및 Opera에서 작동합니다 .

table {
    border-collapse: separate;
    border-spacing: 10px; /* cellspacing */
    *border-collapse: expression('separate', cellSpacing = '10px');
}

table td, table th {
    padding: 10px; /* cellpadding */
}

*선언은 Internet Explorer 6 및 7이고, 다른 브라우저는 제대로을 무시합니다.

expression('separate', cellSpacing = '10px')returns 'separate'하지만 JavaScript에서 예상 한 것보다 많은 인수를 전달할 수 있으므로 모든 명령문이 평가되므로 두 명령문이 모두 실행됩니다.


*은 (렌더링 엔진으로 사용하는 단어) 전망 2007 이상에서 인식하지 못하는 것을 그 시도 응답 이메일, 노트에 대한 campaignmonitor.com/css
ptim

71

셀 간격 값이 0이 아닌 사람들을 위해 다음 CSS가 효과적이지만 Firefox에서만 테스트 할 수 있습니다.

호환성에 대한 자세한 내용 은 다른 곳에 게시Quirksmode 링크를 참조 하십시오. 이전 Internet Explorer 버전에서는 작동하지 않을 수 있습니다.

table {
    border-collapse: separate;
    border-spacing: 2px;
}

54

이 문제에 대한 간단한 해결책은 다음과 같습니다.

table
{
    border: 1px solid #000000;
    border-collapse: collapse;
    border-spacing: 0px;
}
table td
{
    padding: 8px 8px;
}

49

또한, 원하는 경우 cellspacing="0", 추가하는 것을 잊지 마세요 border-collapse: collapse당신에 table의 스타일 시트.


43

셀의 내용을 div로 감싸면 원하는 모든 것을 할 수 있지만 균일 한 효과를 얻으려면 열의 모든 셀을 감싸 야합니다. 예를 들어, 왼쪽 및 오른쪽 여백을 넓히려면 다음을 수행하십시오.

CSS는

div.cellwidener {
  margin: 0px 15px 0px 15px;
}
td.tight {
  padding: 0px;
}
<table border="0">
  <tr>
    <td class="tight">
      <div class="cellwidener">My content</div>
    </td>
  </tr>
</table>

예, 번거 롭습니다. 예, Internet Explorer에서 작동합니다. 사실, Internet Explorer에서만 이것을 테스트했습니다. 이것이 우리가 직장에서 사용할 수있는 전부이기 때문입니다.


나는 더 많은 투표를 할 수 있으면 좋겠다. 다른 것들을 반복하지 않은 첫 번째 예제와 그 효과를 페이지의 모든 테이블 대신 단일 테이블이나 셀로 제한하는 방법을 보여주는 예제!
vapcguy 2019

23

그냥 사용하는 border-collapse: collapse테이블을 위해, 그리고 padding에 대한 thtd.


21

이 스타일을위한 테이블에 대한 전체 재설정 - 의 cellpadding , cellspacing국경 .

내 reset.css 파일 에이 스타일이 있습니다.

table{
    border:0;          /* Replace border */
    border-spacing: 0px; /* Replace cellspacing */
    border-collapse: collapse; /* Patch for Internet Explorer 6 and Internet Explorer 7 */
}
table td{
    padding: 0px; /* Replace cellpadding */
}

20

사실은. CSS에 대한 모든 흥분에 cellpadding="0" cellspacing="0"대해 더 이상 사용되지 않기 때문에 사용할 수도 있습니다 ...

의 마진을 제안하는 다른 사람 <td>은 분명히 이것을 시도하지 않았습니다.


35
실제로는 html5에서 더 이상 사용되지 않습니다.
Kzqai

18
table th,td {
    padding: 8px 2px;
}
table {
    border-collapse: separate;
    border-spacing: 2px;
}

17

테이블 데이터에 CSS 패딩 규칙을 사용하면됩니다.

td { 
    padding: 20px;
}

테두리 간격의 경우 :

table { 
    border-spacing: 1px;
    border-collapse: collapse;
}

그러나 상자 모델의 diff 구현으로 인해 Internet Explorer와 같은 이전 버전의 브라우저에서는 문제가 발생할 수 있습니다.


15

내가 W3C 분류에서 이해 <table>하는 것은 데이터를 '전용'으로 표시하기위한 것입니다.

나는 그것이 훨씬 쉽게 만들 발견을 바탕으로 <div>배경을 가진 모든 것을하고 데이터가 사용 위에 떠있는 테이블이 position: absolute;background: transparent;...

Chrome, Internet Explorer (6 이상) 및 Mozilla Firefox (2 이상)에서 작동합니다.

여백은 컨테이너 요소 등의 사이에 스페이서를 만드는 데 사용 (또는 어쨌든 의미)되어 <table>, <div><form>,하지 <tr>, <td>, <span>또는 <input>. 컨테이너 요소 이외의 용도로 사용하면 향후 브라우저 업데이트를 위해 웹 사이트를 조정하는 데 바쁠 수 있습니다.


7
OP는 그가 무엇을 사용하고 있는지 언급하지 않았습니다.
Alfabravo


12

CSS 패딩 속성을 사용하여 테이블 셀 안에 패딩을 쉽게 설정할 수 있습니다. 테이블의 cellpadding 속성과 동일한 효과를 생성하는 유효한 방법입니다.

table,
th,
td {
  border: 1px solid #666;
}

table th,
table td {
  padding: 10px;
  /* Apply cell padding */
}
<!DOCTYPE html>
<html lang="en">
<head>

  <meta charset="utf-8">
  <title>Set Cellpadding in CSS</title>

</head>

<body>

  <table>
    <thead>
      <tr>
        <th>Row</th>
        <th>First Name</th>
        <th>Last Name</th>
        <th>Email</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>1</td>
        <td>Clark</td>
        <td>Kent</td>
        <td>clarkkent@mail.com</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Peter</td>
        <td>Parker</td>
        <td>peterparker@mail.com</td>
      </tr>
      <tr>
        <td>3</td>
        <td>John</td>
        <td>Rambo</td>
        <td>johnrambo@mail.com</td>
      </tr>
    </tbody>
  </table>

</body>
</html>

마찬가지로 CSS border-spacing 속성을 사용하여 cellspacing 특성과 같은 인접한 표 셀 테두리 사이의 간격을 적용 할 수 있습니다. 그러나 테두리 간격을 설정하려면 border-collapse 속성 muse의 값이 분리됩니다. 이것이 기본값입니다.

table {
  border-collapse: separate;
  border-spacing: 10px;
  /* Apply cell spacing */
}

table,
th,
td {
  border: 1px solid #666;
}

table th,
table td {
  padding: 5px;
  /* Apply cell padding */
}
<!DOCTYPE html>
<html lang="en">
<head>

  <meta charset="utf-8">
  <title>Set Cellspacing in CSS</title>

</head>

<body>

  <table>
    <thead>
      <tr>
        <th>Row</th>
        <th>First Name</th>
        <th>Last Name</th>
        <th>Email</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>1</td>
        <td>Clark</td>
        <td>Kent</td>
        <td>clarkkent@mail.com</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Peter</td>
        <td>Parker</td>
        <td>peterparker@mail.com</td>
      </tr>
      <tr>
        <td>3</td>
        <td>John</td>
        <td>Rambo</td>
        <td>johnrambo@mail.com</td>
      </tr>
    </tbody>
  </table>

</body>
</html>


10

이 시도:

table {
    border-collapse: separate;
    border-spacing: 10px;
}
table td, table th {
    padding: 10px;
}

또는 이것을 시도하십시오 :

table {
    border-collapse: collapse;
}
table td, table th {
    padding: 10px;
}

9

나는 !important국경 붕괴 후처럼 사용했다.

border-collapse: collapse !important;

그리고 그것은 IE7에서 저에게 효과적입니다. cellspacing 속성을 재정의하는 것 같습니다.


9
!important복잡한 상황에서 다른 CSS 설정 을 재정의하는 데 필요합니다 (그리고 대부분 잘못된 접근법).
Jukka K. Korpela

1
또한 Dan의 대답을 반복하면 !important다른 대답 대신 주석으로 포함될 수있는을 추가합니다 .
vapcguy

8
<table>
    <tr>
        <th>Col 1</th>
        <th>Col 2</th>
        <th>Col 3</th>
    </tr>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
    </tr>
</table>

cell-padding에 의해 제공 될 수 padding있는 동안 CSS에 cell-spacing설정하여 설정할 수 있습니다 border-spacing테이블.

table {
    border-spacing: 10px;
}
td {
    padding: 10px;
}

바이올린 .


6
td {
    padding: npx; /* For cellpadding */
    margin: npx; /* For cellspacing */
    border-collapse: collapse; /* For showing borders in a better shape. */
}

경우 margin작동하지 않았다, 설정하려고 displaytrblock다음 이익률은 작동합니다.


5

표의 경우 셀 간격과 셀 공간은 HTML 5에서 더 이상 사용되지 않습니다.

이제 셀 간격을 사용하려면 테두리 간격을 사용해야합니다. 셀 패딩에는 border-collapse를 사용해야합니다.

그리고 이것을 HTML5 코드에서 사용하지 않아야합니다. 항상 CSS 3 파일에서이 값을 사용하십시오.



4

HTML 테이블에서 cellpaddingand cellspacing는 다음과 같이 설정할 수 있습니다.

대한 세포 패딩 :

간단한 td/th셀을 호출하십시오 padding.

예:

table {
    border-collapse: collapse;
}

td {
  border: 1px solid red;
  padding: 10px;
}

대한 세포 간격

간단하게 불러 table border-spacing

예:

/********* Cell-Spacing   ********/
table {
    border-spacing: 10px;
    border-collapse: separate;
}

td {
  border: 1px solid red;
}

CSS 소스 별 더 많은 표 스타일 링크 여기에서 CSS 별 더 많은 표 스타일 을 얻을 수 있습니다 .


3

CSS에서 border-spacingand를 사용하여 이와 같이 간단하게 할 수 있습니다 padding.

table {
  border-collapse: collapse;
}

td, th {
  padding: 1em;
  border: 1px solid blue;
}
<table>
  <tr>
    <th>head_1</th>
    <th>head_2</th>
    <th>head_3</th>
    <th>head_4</th>
  </tr>
  <tr>
    <td>txt_1</td>
    <td>txt_2</td>
    <td>txt_3</td>
    <td>txt_4</td>
  </tr>
</table>


경계선이 축소되면 경계선 간격 규칙이 무시됩니다.
dgrogan

0

스타일을 테이블 자체에 직접 추가하는 것은 어떻습니까? 이것은 tableCSS에서 사용 하는 대신 페이지에 여러 테이블이있는 경우 BAD 접근 방식입니다.

<table style="border-collapse: separate;border-spacing: 2px;">
    <tr>
        <td style="padding: 4px 4px;">Some Text</td>
    </tr>
</table>

2
스타일이 콘텐츠와 분리되어야하기 때문에 테이블 태그에 "style"을 넣는 것은 CSS에 "table # someId"를 넣는 것보다 나쁩니다. 그러나 문제의 주요 요점은 더 이상 사용되지 않는 HTML을 적절한 CSS로 변환하는 방법입니다. 올바르게 수행했지만 실제로 답변에 아무것도 추가하지 않았으며 관련이없는 문제에 집중하고 있습니다.
Teepeemm

1
아무것도 추가되지 않았습니까? 내가 추가 여기에 다른 모든 대답은 기본적으로 사용 말한다 방법에 초점을했다 td { padding: ... }table { border-spacing: ... }대신 테이블에 직접 적용하는. 그것들은 아무것도 추가하지 않습니다. 내가 말했듯이, 당신이 당신의 페이지에 여러 테이블을 가지고 있고 그들에게 영향을주고 싶지 않을 때, 당신은 이것을 원하지 않습니다! "스타일 시트 사용!"이라는 답의 전체 페이지가 필요하지 않습니다. 마지막으로 원하는 경우는 하나의 셀 또는 테이블에 대해서만 서식을 지정하기를 원하기 때문입니다. 그것은 그것을 적용 table하거나 td바람직하지 않을 때이며 완전히 새로운 클래스를 만드는 것은 지나친 것입니다.
vapcguy

1
다른 모든 답변은 스타일 시트를 사용합니다. 원래 질문은 "CSS로 어떻게 할 수 있습니까?"였기 때문입니다. 질문이 "CSS 가이 하나의 테이블에만 영향을 줄 수있는 방법"이라면, 귀하의 답변이 더 적절할 것입니다 (아직도 여전히 선호합니다 table#someId).
Teepeemm

2
기술적으로 인라인 스타일은 여전히 ​​CSS이며 스타일 시트를 사용하지 않지만 요점을 알 수 있습니다.
vapcguy

1
클래스의 아이디어는 재사용 가능성을위한 것이기 때문입니다. 일회성으로, 그것은 의미가없고 과잉입니다 (IMHO).
vapcguy

0

나는 이것이 특정 테이블의 모든 셀에 영향을 줄 것을 제안합니다.

table.tbl_classname td, th {
    padding: 5px 5px 5px 4px   ;
 }


0

아래 코드를 확인하여 a를 index.html만들고 실행하십시오.

<!DOCTYPE html>
<html>
   <head>
      <style>
         table{
         border-spacing:10px;
         }
         td{
         padding:10px;
         }
      </style>
   </head>
   <body>
      <table cellspacing="0" cellpadding="0">
         <th>Col 1</th>
         <th>Col 2</th>
         <th>Col 3</th>
         <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
         </tr>
      </table>
   </body>
</html>

출력 :

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.