<td> 태그로 텍스트 줄 바꿈


136

<td>요소에 추가 된 일부 텍스트를 래핑하고 싶습니다 . 나는 시도했다 style="word-wrap: break-word;" width="15%". 그러나 그것은 텍스트를 감싸지 않습니다. 너비를 100 %로 지정해야합니까? 너비를 15 % 만 사용할 수 있도록 표시 할 다른 컨트롤이 있습니다.


1
어떤 HTML을 사용하고 있습니까? <td> 일부 텍스트 ... </ td>입니까, 아니면 TD에 <p> 또는 <span>이 있습니까? 또한 랩핑하지 않는다고 말하면 텍스트가 테이블 너비의 "15 %"보다 길면 TD 너비가 커지는 것으로 가정합니다.
scunliffe 2016 년

내 HTML에는 <td> 동적 텍스트. </ td>가 있으며 TD 확장에 대해 가정 한 내용은 정확합니다.

답변:


221

TD 텍스트를 감싸려면

첫 번째 설정 테이블 스타일

table{
    table-layout: fixed;
}

그런 다음 TD 스타일을 설정하십시오

td{
    word-wrap:break-word
}

5
크롬에서 작동하지 않기 때문에 제대로 처리되지 않았다고 생각합니다 ... :-( 웹킷에 대한 솔루션?
MarcoS

4
Chrome에서 완벽하게 작동했습니다.
Alejandro Riedel

17
재미있는 ... 크롬, 내가 사용했다 white-space: normal(대신의 작업에 포장 얻을 수있는 TD 스타일 word-wrap:break-word)

3
Jim의 답변과 동일한 경험이 있음을 확인할 수 있습니다. 어떤 이유로 Chrome이white-space:normal;
petrosmm

1
white-space: pre-wrap공백을 보존해야하는 경우 사용하십시오 .
eicksl

47

HTML 테이블은 "table-layout : fixed"CSS 스타일을 지원하여 사용자 에이전트가 열 너비를 내용에 맞추지 못하게합니다. 그것을 사용하고 싶을 수도 있습니다.


7
이 솔루션을 시도했지만 Chrome에서 작동하지 않는 것 같습니다. 셀 너비의 두 배가 넘는 하이퍼 링크로 동적으로 채워지는 테이블이 있습니다. 'table-layout : fixed'는 테이블 확장 문제를 해결하지만 텍스트를 줄 바꿈하지는 않습니다. 대신 페이지 오른쪽으로 계속 늘어나고 있습니다. 뭔가 빠졌습니까?
VOIDHand

30

나는 당신이 22 개의 테이블을 잡았다 고 생각합니다. 표는 내용을 표 형식으로 정리하는 데 유용하며 포함 된 내용의 요구를 충족시키기 위해 "신축"작업을 훌륭하게 수행합니다.

기본적으로 표 셀은 내용에 맞게 확장되므로 텍스트가 더 넓어집니다.

몇 가지 해결책이 있습니다.

1.) TD에서 최대 너비를 설정할 수 있습니다.

<td style="max-width:150px;">

2.) 텍스트를 줄 바꿈 요소 (예 : 범위)에 넣고 제한을 설정할 수 있습니다.

<td><span style="max-width:150px;">Hello World...</span></td>

이전 버전의 IE는 최소 / 최대 너비를 지원하지 않습니다.

IE는 기본적으로 최대 너비를 지원하지 않으므로 강제로 해킹하려면 해킹을 추가해야합니다. 해킹을 추가하는 방법은 여러 가지가 있습니다.

페이지로드시 IE6의 경우에만 테이블의 렌더링 너비 (픽셀)를 얻은 다음 15 %를 가져 와서 해당 열의 첫 번째 TD (또는 헤더가있는 경우 TH)의 너비로 픽셀로 다시 적용하십시오 .


나는 두 가지 방법이 있습니다. 그러나 텍스트를 줄 바꿈 할 수는 없습니다. IE6.0을 사용하고 있습니다

1
아, IE6. 이것은 복잡성을 추가합니다. IE6 핵으로 대답을 수정하겠습니다.
scunliffe 2016 년

11

table-layout:fixed확장 셀 문제를 해결하지만 새로 만들 수 있습니다. IE는 기본적으로 오버플로를 숨기지 만 Mozilla는 상자 외부에서 오버플로를 렌더링합니다.

또 다른 해결책은 다음을 사용하는 것입니다. overflow:hidden;width:?px

<table style="table-layout:fixed; width:100px">
 <tr>
   <td style="overflow:hidden; width:50px;">fearofthedarkihaveaconstantfearofadark</td>
   <td>
     test
   </td>
 </tr>
</table>


9

이것은 일부 CSS 프레임 워크 (재료 디자인 라이트 (MDL))와 함께 나를 위해 일했습니다.

table {
  table-layout: fixed;
  white-space: normal!important;
}

td {
  word-wrap: break-word;
}

8

사용하십시오 word-break그것을 스타일링없이 사용할 수 있습니다 tabletable-layout: fixed

table {
  width: 140px;
  border: 1px solid #bbb
}

.tdbreak {
  word-break: break-all
}
<p>without word-break</p>
<table>
  <tr>
    <td>LOOOOOOOOOOOOOOOOOOOOOOOOOOOOGGG</td>
  </tr>
</table>

<p>with word-break</p>
<table>
  <tr>
    <td class="tdbreak">LOOOOOOOOOOOOOOOOOOOOOOOOOOOOOGGG</td>
  </tr>
</table>


3

이것은 정말 잘 작동합니다 :

<td><div style = "width:80px; word-wrap: break-word"> your text </div></td> 

모든 너비에 동일한 너비를 사용 <div하거나 각 경우에 너비를 조정하여 원하는 곳에서 텍스트를 분리 할 수 ​​있습니다.

이 방법으로 고정 테이블 너비 또는 복잡한 CSS로 속일 필요가 없습니다.


1
CSS를 대신 사용하려고했을 수도 있지만 특히 현대적인 HTML에서는 특히 모든 복사 된 div에 대해 동일한 스타일을 반복해서 반복하는 경우 인라인 스타일을 피할 수 있습니다.
TankorSmash

3

나는 내 것들 중 일부를 가지고 있었다 td:

white-space: pre;

이것은 나를 위해 그것을 해결했다.

white-space: pre-wrap;


1

이것이 효과가있을 수도 있지만 장래 어느 시점에서 (즉시 그렇지 않은 경우) 약간의 성가신 것으로 보일 수 있습니다.

<style> 
tbody td span {display: inline-block;
               width: 10em; /* this is the nuisance part, as you'll have to define a particular width, and I assume -without testing- that any percent widths would be relative to the containing `<td>`, not the `<tr>` or `<table>` */
               overflow: hidden; 
               white-space: nowrap; }

</style>

...

<table>

<thead>...</thead>
<tfoot>...</tfoot>

<tbody>

<tr>

<td><span title="some text">some text</span></td> <td><span title="some more text">some more text</span></td> <td><span title="yet more text">yet more text</span></td>

</tr>

</tbody>

</table>

의 이론적 근거 span는 다른 사람들이 지적한 바와 같이 a <td>는 일반적으로 컨텐츠를 수용하기 위해 확장되는 반면에 a <span>는 주어진 너비를 유지 하고 유지할 수 있다는 것입니다. 는 확장의 overflow: hidden원인이 <td>되는 것을 숨기려는 것이지만 숨길 수는 없습니다 .

title범위 의 속성을 사용하여 시각적 셀에 존재하거나 클리핑 된 텍스트를 표시하여 텍스트를 계속 사용할 수 있도록하고 사람들이 볼 수 없도록하거나 원하지 않는 경우 왜 그것을 가지고 있는지 확인하는 것이 좋습니다 우선, 나는 추측한다 ...).

또한 td {...}td가 묵시적 너비를 채우기 위해 확장 (또는 잠재적으로 수축하지만 의심 스럽습니다)에 너비를 table-width/number-of-cells정의하면 지정된 너비가 생성되지 않는 것 같습니다 같은 문제.

단점은 프리젠 테이션에 사용되는 추가 마크 업입니다.


1

실제로 텍스트 줄 바꿈은 테이블에서 자동으로 수행됩니다. 테스트하는 동안 사람들이 저지른 실수는 "ggggggggggggggggggggggggggggggggggggggggggggggggg"와 같은 긴 문자열을 가정하여 랩핑하지 않는다고 불평하는 것입니다. 실제로 영어로 된이 단어는 길지 않으며, 그 단어가 있더라도 그 단어 안에서 사용될 가능성은 희미합니다 <td>.

"사전 결정은 미리 결정된 상황에서 미신적이다"와 같은 문장으로 테스트 해보십시오.


맞습니다. OP가 원하는 것과 정확히 반대되는 "white-space : nowrap"을 사용하도록 제안하는 이유를 이해할 수 없습니다.
mluisbrown

29
영어로 된이 단어는 오래 걸리지 않지만 filepath를 표시한다고 가정하면, 연속적이고 매우 길어질 것입니다.
krisp may

2
.. 또는 쉼표로 구분 된 긴 숫자 목록 (예 : 불행히도 공백이없는 경우).
Aditya Sanghi

4
.. 또는 63 개 문자 (확장 및 WWW 제외)까지 갈 수있다 긴 도메인 이름 http://www.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com/
Brainfeeder

"단어"가 매우 긴 URL 일 때이 문제를 해결하려고합니다. 예를 들어 "ggggggggggggggggggggggggggggggggggggggggggggggggg"의 주석은 긴 URL을 고려하지 않습니다.
geekandglitter

0

클래스를 TD에 적용하고 적절한 너비를 적용한 다음 (너비가없는 나머지 너비를 가정하여 너비 중 하나를 남겨 두어야 함) 적절한 스타일을 적용하십시오. 아래 코드를 복사하여 편집기에 붙여넣고 브라우저에서보고 작동하는지 확인하십시오.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
<!--
td { vertical-align: top; }
.leftcolumn { background: #CCC; width: 20%; padding: 10px; }
.centercolumn { background: #999; padding: 10px; width: 15%; }
.rightcolumn { background: #666; padding: 10px; }
-->
</style>
</head>

<body>
<table border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td class="leftcolumn">This is the left column. It is set to 20% width.</td>
    <td class="centercolumn">
        <p>Hi,</p>
        <p>I want to wrap a text that is added to the TD. I have tried with style="word-wrap: break-word;" width="15%". But the wrap is not happening. Is it mandatory to give 100% width ? But I have got other controls to display so only 15% width available.</p>
        <p>Need help.</p>
        <p>TIA.</p>
    </td>
    <td class="rightcolumn">This is the right column, it has no width so it assumes the remainder from the 15% and 20% assumed by the others. By default, if a width is applied and no white-space declarations are made, your text will automatically wrap.</td>
  </tr>
</table>
</body>
</html>

OP는 명시 적으로 명시하지는 않지만 비 공백 동적 내용을 래핑하는 데 문제가 있다고 생각합니다. 이 경우 위의 해결책이 작동하지 않습니다 -jsfiddle.net/qZrFW
user66001

-1
<!DOCTYPE html>
<html>
<head>
<style>
table, th, td {
    border: 1px solid black;
}
</style>
</head>
<body>

<table>
  <tr>
    <th>Poem</th>
    <th>Poem</th>
  </tr>
  <tr>
    <td nowrap>Never increase, beyond what is necessary, the number of entities required to explain anything</td>
    <td>Never increase, beyond what is necessary, the number of entities required to explain anything</td>
  </tr>
</table>

<p>The nowrap attribute is not supported in HTML5. Use CSS instead.</p>

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