div 외부에서 오버플로되는 테이블


94

너비가 명시 적으로 선언 된 테이블이 부모 외부에서 오버플로되는 것을 중지하려고합니다 div. 나는을 사용하여 어떤 식 으로든 이것을 할 수 있다고 생각 max-width하지만 이것이 작동하지 않는 것 같습니다.

다음 코드 (창이 매우 작음)는이를 발생시킵니다.

<style type="text/css">
  #middlecol {
    width: 45%;
    border-right:2px solid red;
  }
  #middlecol table {
    max-width:100% !important;
  }
</style>

<div id="middlecol">
  <center>
    <table width="400" cellpadding="3" cellspacing="0" border="0" align="center">
      <tr>
        <td bgcolor="#DDFFFF" align="center" colspan="2">
          <strong>Notification!</strong>
        </td>
      <tr>
        <td width="50">
          <img src="http://www.example.com/img.png" width="50" height="50" alt="" border="0">
        </td>
        <td>
          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
        </td>
      </tr>
    </table>
  </center>
 </div>

빨간색 선은의 오른쪽 테두리이며 div브라우저 창을 작게 만들면 표가 맞지 않음을 알 수 있습니다.


2
주제를 벗어남 : <center>. 수년 동안 사용되지 않습니다. 게다가, 당신은 이미 align="center"당신의 테이블에 있습니다.
ЯegDwight 2010

이것은 불행히도 내가 통제 할 수없는 것입니다. div 내부의 콘텐츠는 실제로 내가 생성하지 않은 파일에서 포함됩니다. CSS 만 만질 수 있지만 가능하다면 <center>를 제거하겠습니다.
waiwai933 2010

답변:


24

다음을 수행하여 되돌립니다.

<style type="text/css">
  #middlecol {
    border-right: 2px solid red;
    width: 45%;
  }

  #middlecol table {
    max-width: 400px;
    width: 100% !important;
  }
</style>

또한 다음과 같이 조언합니다.

  • center태그를 사용하지 마십시오 (사용되지 않음).
  • width, bgcolor속성을 사용하지 말고 CSS ( widthbackground-color)로 설정하십시오.

(렌더링 된 테이블을 제어 할 수 있다고 가정)


너비를 100 %로 설정하면 여백을 무시합니다. 가로 막대 스크롤을 일으키는 원인
Jesse

208

를 사용하여 테이블이 상위 div 이상으로 확장되는 것을 방지 할 수 있습니다 table-layout:fixed.

아래 CSS는 테이블을 둘러싼 div의 너비로 확장되도록합니다.

table 
{
    table-layout:fixed;
    width:100%;
}

여기서이 트릭을 찾았 습니다 .


63
모든 컬럼이 힘은 ... 아주 유용하지 같은 폭이어야합니다
Serj 세이건

11
실제로 열을 다른 너비로 만들 수 있습니다. <col>s 또는 첫 번째 행의 <td>s 에 너비를 지정하기 만하면됩니다 (대 텍스트 크기에 따라 흐름을 허용). MDN에서 : "고정 : 테이블 및 열 너비는 테이블 및 열 요소의 너비 또는 셀의 첫 번째 행 너비로 설정됩니다. 후속 행의 셀은 열 너비에 영향을주지 않습니다."
philfreo

1
정말 고맙습니다. 이것은 당신이 저에게 해준 큰 도움이었습니다 ...
Parthan_akon

67

조잡한 해결 방법 display: table은 포함하는 div에 설정 하는 것입니다.


8
이것은 훌륭합니다. 정확히 제가 찾던 것입니다. 다른 사람들을 돕기 위해 Google 가능한 문자열이 있습니다. CSS를 사용하여 상위 div를 오버플로에 맞추거나 배경을 맞추고 오버플로 테이블 콘텐츠를 덮으려고했습니다. 이것은 완벽하게 작동했습니다. 정말 감사합니다!
trisweb

부록으로, 이것이 적용되는 컨텍스트에주의를 기울이십시오. 이것은 동작과 같은 테이블 레이아웃을 전달하는 데 사용되므로 테이블 행, 테이블 셀과 같은 다른 스타일 속성이 존재합니다. 테이블 형식 레이아웃은 플로팅되지 않습니다. 시간에 display : table 속성만으로는 충분하지 않습니다
questzen

또한 답변을 찾기 위해 몇 시간을 파고 나서 여기에 왔습니다. 검색 엔진 용 문자열 : div 내부의 테이블이 스크롤되지 않습니다. 테이블이있는 Div가 스크롤되지 않습니다. div 안에 테이블이 나타나는 스크롤바가 없습니다.
anevaude

2
몇 가지 시도했지만 display : table 을 상위 상위 div에 추가했습니다. 문제가 해결되었습니다. 감사합니다.
Günay Gültekin 2015

긴 헤더 이름과 긴 셀 내용이있는 테이블에 가장 적합한 솔루션입니다. 감사!.
EGE 바 이라크

34

위에서 언급 한 모든 솔루션을 시도했지만 작동하지 않았습니다. 나는 다른 하나 아래에 3 개의 테이블이 있습니다. 마지막 하나가 넘쳤습니다. 다음을 사용하여 수정했습니다.

/* Grid Definition */
table {
    word-break: break-word;
}

엣지 모드의 IE11의 경우 다음으로 설정해야합니다. word-break:break-all


12

처음에는 James Lawruk의 방법을 사용했습니다. 그러나 이것은의 모든 너비를 변경했습니다 td.

나를위한 해결책 white-space: normal은 열 (로 설정 됨 white-space: nowrap) 에서 사용 하는 것이 었습니다 . 이렇게하면 텍스트가 항상 끊어집니다. 를 사용 word-wrap: break-word하면 단어 중간 정도라도 필요할 때 모든 것이 중단됩니다.

CSS는 다음과 같습니다.

td, th {
    white-space: normal; /* Only needed when it's set differntly somewhere else */
    word-wrap: break-word;
}

이것은 word-wrap: break-word표의 단어를 읽기 어렵게 만들 수 있으므로 항상 바람직한 해결책은 아닙니다 . 그러나 테이블을 올바른 너비로 유지합니다.


5

나는 위의 거의 모든 것을 시도했지만 나를 위해 작동하지 않았습니다 ... 다음은

word-break: break-all;

상위 div (테이블의 컨테이너)에 추가됩니다.



-3

있다 width="400"테이블에, 그것을 제거하고 작동합니다 ...

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