내용에 관계없이 항상 테이블 열 너비를 고정하도록 강제


89

나는 html 테이블과 table-layout: fixed너비가 설정된 td가 있습니다. 열은 여전히 ​​확장되어 공백이없는 텍스트의 내용을 포함합니다. div에서 각 td의 내용을 래핑하는 것 외에 이것을 수정하는 방법이 있습니까?

예 : http://jsfiddle.net/6p9K3/29/

<table>
    <tbody>
        <tr>
            <td style="width: 50px;">Test</td>
            <td>Testing 1123455</td>
        </tr><tr>
            <td style="width: 50px;">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</td>
            <td>B</td>
        </tr>
    </tbody>
</table>

table
{
    table-layout: fixed;
}

td
{
    border: 1px solid green;
    overflow: hidden;
}

이 예에서 AAAAAAAAAAAA ...가있는 열이 명시 적으로 50px 너비로 설정 되었음에도 불구하고 확장되는 것을 볼 수 있습니다.


답변:



22

다음 CSS를 살펴보십시오.

word-wrap:break-word;

웹 브라우저는 기본적으로 "단어"를 분해하지 않아야하므로 브라우저의 정상적인 동작을 경험하게됩니다. 그러나 이것을 word-wrap CSS 지시어로 재정의 할 수 있습니다.

전체 테이블의 너비를 설정 한 다음 열의 너비를 설정해야합니다. "너비 : 100 %;" 요구 사항에 따라 정상이어야합니다.

자동 줄 바꿈을 사용하는 것은 원하는 것이 아닐 수 있지만 레이아웃을 변형하지 않고 모든 데이터를 표시하는 데 유용합니다.


2
이것은 Arie Shaw의 답변과 결합되어 내가 찾고 있던 행동을 얻었습니다. 열은 텍스트에 관계없이 항상 동일한 너비이며 공백이 없어도 텍스트를 줄 바꿈합니다.
datadamnation 2013 년

나는 이와 같은 것을 찾고 있지만 테이블이 table-layout : fixed로 설정되지 않은 경우 작동하지 않는 것 같습니다. 그러나 table-layout fixed는 테이블 헤드 th에 colspan이 있으면 CSS 스타일이 지정되지 않습니다. 테이블에서 자동 줄 바꿈을 만드는 방법은 무엇입니까? stackoverflow.com/questions/42371945/…
Manuel

13

CSS 전에 테이블을 단단하게 만드십시오. 테이블의 너비를 계산 한 다음 각 td가 명시적인 너비를 갖는 '제어'행을 사용하여 모두 테이블 태그의 너비에 합산합니다.

먼저 올바른 HTML을 사용하여 모든 곳에서 작동하기 위해 수백 개의 html 이메일을 처리해야하고, 그다음에 w / css 스타일링은 모든 IE, 웹킷 및 모질라의 많은 문제를 해결할 것입니다.

그래서:

<table width="300" cellspacing="0" cellpadding="0">
  <tr>
    <td width="50"></td>
    <td width="100"></td>
    <td width="150"></td>
  </tr>
  <tr>
    <td>your stuff</td>
    <td>your stuff</td>
    <td>your stuff</td>
  </tr>
</table>

300px 너비로 테이블을 유지합니다. 너비보다 더 큰 이미지보기


1
w3school는 HTML5에서 지원되지 말한다
v.oddou

width속성은 더 이상 사용되지 않습니다. CSS width속성을 사용하거나 권장되는 HTML 5 방법을 사용 <colgroup>하여 열 너비를 설정 <col>하고 <table>태그 바로 뒤 와 <thead>, <tbody>또는 <tr>요소 앞에 요소를 사용합니다.
S. Esteves

9

당신은 추가 할 수 있습니다 div받는 td그 후 스타일. 예상대로 작동합니다.

<td><div>AAAAAAAAAAAAAAAAAAA</div></td>

그런 다음 CSS.

td div { width: 50px; overflow: hidden; }

3

"overflow : hidden"또는 "overflow-x : hidden"(너비 만)으로 작업 할 수도 있습니다. 여기에는 정의 된 너비 (및 / 또는 높이?)와 "디스플레이 : 블록"도 필요합니다.

"Overflow : Hidden"은 정의 된 상자에 맞지 않는 전체 내용을 숨 깁니다.

예:

http://jsfiddle.net/NAJvp/

HTML :

<table border="1">
    <tr>
        <td><div>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</div></td>
        <td>bbb</td>
        <td>cccc</td>
    </tr>
</table>

CSS :

td div { width: 100px; overflow-y: hidden; }

편집 : 나에 대한 수치심, 나는 이미 "오버플로"를 사용하고 있습니다. 요소에 "display : block"을 설정하지 않았기 때문에 작동하지 않는 것 같습니다.


0

max-width : 50px로 설정하려고합니다.


및 너비 : 50px; 정말로 고정 된 너비를 원한다면.
Adrian P.

0

백분율을 사용하거나 열 머리글에 지정할 수도 있습니다.

<table width="300">  
  <tr>
    <th width="20%">Column 1</th>
    <th width="20%">Column 2</th>
    <th width="20%">Column 3</th>
    <th width="20%">Column 4</th>
    <th width="20%">Column 5</th>
  </tr>
  <tr>
    <!--- row data -->
  </tr>
</table>

백분율이있는 보너스는 더 낮은 코드 유지 관리입니다. 열 너비를 다시 지정할 필요없이 테이블 너비를 변경할 수 있습니다.

주의 사항 : 픽셀 단위로 지정된 표 너비는 HTML 5에서 지원되지 않는다는 것을 이해합니다. 대신 CSS를 사용해야합니다.


-1

이것은 나를 위해 작동합니다

td::after { 
content: ''; 
display: block; 
width: 30px;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.