TD 내에서 위치 상대 / 절대 위치를 사용하십니까?


108

다음 코드가 있습니다.

<td style="position: relative; min-height: 60px; vertical-align: top;">
    Contents of table cell, variable height, could be more than 60px;

    <div style="position: absolute; bottom: 0px;">
        Notice
    </div>
</td>

이것은 전혀 작동하지 않습니다. 어떤 이유로 position : relative 명령이 TD에서 읽히지 않고 알림 DIV가 내 페이지 하단의 콘텐츠 컨테이너 외부에 배치됩니다. TD의 모든 내용을 다음과 같은 DIV에 넣으려고했습니다.

<td>
    <div style="position: relative; min-height: 60px; vertical-align: top;">
        Contents of table cell, variable height, could be more than 60px;

        <div style="position: absolute; bottom: 0px;">
            Notice
        </div>
    </div>
</td>

그러나 이것은 새로운 문제를 야기합니다. 테이블 셀 내용의 높이가 가변적이므로 알림 DIV가 항상 셀 맨 아래에있는 것은 아닙니다. 표 셀이 60px 마커를 넘어 확장되지만 다른 셀은 확장되지 않는 경우 다른 셀에서 알림 DIV는 하단이 아닌 60px 아래에 있습니다.


테이블을 사용하는 이유가 있습니까? 나머지 표 내용이이 셀의 내용을 이동할 것이라고 가정합니다. 테이블이 필요한 경우 valign = top 및 bottom으로 valign = bottom 인 상단 두 행을 사용할 수 있습니다.
Wayne

레이아웃 목적으로 테이블을 사용하는 경우에는 반대하는 것이 좋습니다. 표를 사용하여 데이터를 표시하는 것은 좋지만 레이아웃에 적합하지 않습니다.
Kyle

5
달력을위한 것이므로 테이블 그리드가 필수적입니다. 8wayrun.com/events/monthly/1.2011
Jason Axelrod

답변:


189

이는 CSS 2.1 에 따르면 position: relative테이블 요소에 대한 효과 가 정의되지 않았기 때문 입니다. 이러한 예시, position: relative크롬 (13)에 원하는 효과를 가지고 있지만 파이어 폭스에 4. 여기에 귀하의 솔루션은을 추가하는 div콘텐츠 중심과를 넣어 position: relative그에 div대신의 td. 다음은 position: relative(1)이 상품에 div, (2)가 td(불가)에, 그리고 마지막으로 (3)이 div내부에 td(다시 좋습니다)로 얻은 결과를 보여줍니다 .

Firefox 4에서

<table>
  <tr>
    <td>
      <div style="position:relative;">
        <span style="position:absolute; left:150px;">
          Absolute span
        </span>
        Relative div
      </div>
    </td>
  </tr>
</table>


29
div 높이는 100 %가 아니므로 bottom : 0에 대한 상대적 위치는 효과가 없습니다.
Softlion 2011 년

1
이 예에서 "절대 범위"는 기본적으로 테이블 사용을 쓸모 없게 만드는 td 높이에 영향을주지 않습니다.
Dror 2013 년

@Softlion : 방법의 전체 내용을 포장에 대한 td돌며 div로 설정 width: 100%하고 height: 100%, 사업부에 TD에서 어떤 패딩을 적용하고,로 설정 relative? 아이디어는 그 자체 td처럼 작동 하는 얇은 컨테이너 레이어를 바로 위에 만드는 td것이지만 div. 그것은 나를 위해 일했습니다.
CamilB 2013 년

1
HTML 소스에 대한 링크가 작동하지 않습니다. 업데이트 / 새로 고침 할 수 있습니까?
Peter VARGA

1
2019 년 이후에이 답변을 찾은 사람들을 위해 : CSS2.1은 실제로 position:relative내부 테이블 부분에 대한 효과 가 정의되지 않았다고 말했지만 테이블 부분 자체의 동작을 의미 했습니다 (예 : 테두리가 td어떻게 동작 해야하는지 명확하지 않음). )의 경우를 통해 이동 position:relative하는 경우 border-collapse:collapse. 절대적으로 배치 된 후손의 블록포함 할 수 있는 가능성에서 제외하지 않았습니다 . 파이어 폭스의 동작으로 2014 년 고정 단지 버그, 밝혀졌다 그래서
일리아 Streltsyn을

5

이 트릭도 적합하지만이 경우 정렬 속성 (중간, 하단 등)이 작동하지 않습니다.

<td style="display: block; position: relative;">
</td>

2

테이블 셀의 내용, 가변 높이는 60px 이상일 수 있습니다.

<div style="position: absolute; bottom: 0px;">
    Notice
</div>


1

두 번째 시도와 관련하여 수직 정렬을 사용해 보셨습니까? 어느 한 쪽

<td valign="bottom">

또는 CSS로

vertical-align:bottom

작동하지 않을 것입니다 ... 내가 그렇게했다면 테이블 셀의 내용은 하단에서 60px 간격이 될 것입니다. 상단 대신에.
Jason Axelrod

-2

"display : block;"을 수행하는 경우에도 작동합니다. td에서, td 정체성을 파괴하지만 작동합니다!

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