테이블 행 채우기


85
<html>
    <head>
        <title>Table Row Padding Issue</title>
        <style type="text/css">
            tr {
                padding: 20px;
            }
        </style>
    </head>
    <body>
        <table>
            <tbody>
                <tr>
                    <td>
                        <h2>Lorem Ipsum</h2>
                        <p>Fusce sodales lorem nec magna iaculis a fermentum lacus facilisis. Curabitur sodales risus sit amet
                        neque fringilla feugiat. Ut tellus nulla, bibendum at faucibus ut, convallis eget neque. In hac habitasse 
                        platea dictumst. Nullam elit enim, gravida eu blandit ut, pellentesque nec turpis. Proin faucibus, sem sed 
                        tempor auctor, ipsum velit pellentesque lorem, ut semper lorem eros ac eros. Vivamus mi urna, tempus vitae 
                        mattis eget, pretium sit amet sapien. Curabitur viverra lacus non tortor luctus vitae euismod purus 
                        hendrerit. Praesent ut venenatis eros. Nulla a ligula erat. Mauris lobortis tempus nulla non 
                        scelerisque.</p>
                    </td>
                </tr>
            </tbody>
        </table>
    </body>
</html>

패딩은 다음과 같습니다. 내부의 td가 어떻게 영향을받지 않는지 확인하십시오. 해결책은 무엇입니까? 테이블 행 채우기 문제


1
사용 <div>하고 <p>테이블 대신
나트륨

35
표시되는 데이터는 표이며, 표에 있어야
스펜서

답변:


119

요령은 td요소에 패딩을 제공 하지만 첫 번째 요소에는 예외를 만드는 것입니다 (예, 해키이지만 때로는 브라우저의 규칙에 따라 플레이해야합니다).

td {
  padding-top:20px;
  padding-bottom:20px;
  padding-right:20px;   
}

td:first-child {
  padding-left:20px;
  padding-right:0;
}

First-child는 비교적 잘 지원됩니다 : https://developer.mozilla.org/en-US/docs/CSS/:first-child

을 사용하여 수평 패딩에 대해 동일한 추론을 사용할 수 있습니다 tr:first-child td.

대안 적으로 사용하여 첫 번째 열을 제외 연산자 . 하지만 현재로서는 이에 대한 지원이 좋지 않습니다. not

td:not(:first-child) {
  padding-top:20px;
  padding-bottom:20px;
  padding-right:20px;       
}

단일 항목을 제외하려면 : not 연산자를 사용합니다. 같은 TR :하지 (#first_row)
제프

@CengizFrostclaw 실제로, 그것은 더 간결한 것입니다. 그러나 지원은 그다지 좋지 않습니다.
Joeri Hendrickx 2013 년

오, 당신이 맞을지도 모릅니다. 잘 모르겠습니다. : not 연산자가 더 지원되는 연산자라고 생각하는 것이 이치에 맞습니다.하지만 Chrome에서만 테스트합니다. : D
jeff

8
이것은 '해키'가 아닙니다. 이것이 바로 이러한 선택기가 설계된 것입니다
spinners

@spinners 이것은 해키입니다. RTL 레이아웃에서는 작동하지 않습니다. 더미를 만듭니다 <td>.
Adam Leggett

26

CSS 1CSS 2 사양, 패딩을 포함한 모든 요소에 사용할 수 있었다 <tr>. 그러나 테이블 행 ( <tr>)에 대한 패딩 지원은 CSS 2.1CSS 3 사양 에서 제거되었습니다 . 여백 속성과 몇 가지 다른 테이블 요소 (머리글, 바닥 글 및 열)에도 영향을 미치는이 성가신 변경의 원인을 찾지 못했습니다.

업데이트 : 년 2 월 2015 년, 이 스레드www-style@w3c.org메일 링리스트는 테이블 행에 대해 패딩 및 테두리의 지원을 추가하는 방법에 대해 논의했다. 이것은 표준 상자 모델을 테이블 행 및 테이블 열 요소에도 적용합니다. 그것은 그러한 예를 허용 할 것 입니다. 스레드는 복잡한 레이아웃 엔진이 있기 때문에 CSS 표준에 테이블 행 패딩 지원이 존재하지 않았 음을 제안하는 것 같습니다. 2014 년 9 월 30 일 Editor 's Draft of CSS basic box model, padding and border properties are exist for all elements including table-row and table-column elements. 결국 W3C 권장 사항이되면 html + css 예제가 마침내 브라우저에서 의도 한대로 작동 할 수 있습니다.


2
그 이유에 대해서도 매우 관심이 있습니다!
Dan

8

td 패딩 제공


4
유일한 것은 tr 내부에 2 td가 있으면 2 td 사이에 패딩이 생기는 것입니다.
Spencer

5

옵션 1

다음과 같이 행 (tr)에 투명한 테두리를 추가하여 해결할 수도 있습니다.

HTML

<table>
    <tr> 
         <td>1</td>
    </tr>
    <tr> 
         <td>2</td>
    </tr>
</table>

CSS

tr {
    border-top: 12px solid transparent;
    border-bottom: 12px solid transparent;
}

규칙적인 테두리가 필요한 경우이 방법은 슬프게도 작동하지 않지만 매력처럼 작동합니다.

옵션 2

행은 셀을 그룹화하는 방법으로 작동하므로이를 수행하는 올바른 방법은 다음을 사용하는 것입니다.

table {
    border-collapse: inherit;
    border-spacing: 0 10px;
}

1

이것은 매우 오래된 게시물이지만 최근에 직면 한 비슷한 문제에 대한 해결책을 게시해야한다고 생각했습니다.

답변 : tr 요소를 블록 요소 로 표시하여이 문제를 해결했습니다. 즉 , tr 요소에 대해 display : block 의 CSS를 지정합니다 . 아래 코드 샘플에서이를 확인할 수 있습니다.

<style>
  tr {
    display: block;
    padding-bottom: 20px;
  }
  table {
    border: 1px solid red;
  }
</style>
<table>
  <tbody>
    <tr>
      <td>
        <h2>Lorem Ipsum</h2>
        <p>Fusce sodales lorem nec magna iaculis a fermentum lacus facilisis. Curabitur sodales risus sit amet neque fringilla feugiat. Ut tellus nulla, bibendum at faucibus ut, convallis eget neque. In hac habitasse platea dictumst. Nullam elit enim, gravida
          eu blandit ut, pellentesque nec turpis. Proin faucibus, sem sed tempor auctor, ipsum velit pellentesque lorem, ut semper lorem eros ac eros. Vivamus mi urna, tempus vitae mattis eget, pretium sit amet sapien. Curabitur viverra lacus non tortor
          luctus vitae euismod purus hendrerit. Praesent ut venenatis eros. Nulla a ligula erat. Mauris lobortis tempus nulla non scelerisque.
        </p>
      </td>
    </tr>
  </tbody>
</table>
<br>
<br>This TEXT IS BELOW and OUTSIDE the TABLE element. NOTICE how the red table border is pushed down below the end of paragraph due to bottom padding being specified for the tr element. The key point here is that the tr element must be displayed as a block
in order for padding to apply at the tr level.


7
이것은 테이블 레이아웃이 일반적으로 작동하는 방식과 완전히 관련이 있습니다. 이 작업을 수행하는 경우 테이블을 사용해서는 안됩니다 div. 일반 .
caesay

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