DIV에서 긴 단어를 줄 바꿈하는 방법은 무엇입니까?


417

좋아, 이건 정말 혼란스러워. div 안에 다음과 같은 내용이 있습니다.

<div style="background-color: green; width: 200px; height: 300px;">

Thisisatest.Thisisatest.Thisisatest.Thisisatest.Thisisatest.Thisisatest.

</div>

그러나 '단어'가 너무 길어서 콘텐츠가 예상대로 DIV를 오버플로합니다.

브라우저가 모든 내용에 맞는 단어를 '파손'시키려면 어떻게해야합니까?


이 질문을 살펴보십시오 : stackoverflow.com/questions/2046530/…
nickf

답변:


609

사용하다 word-wrap:break-word;

IE6에서도 작동하며 이는 놀라운 놀라움입니다.


word-wrap: break-wordoverflow-wrap: break-word;모든 최신 브라우저에서 작동하는 것으로 대체되었습니다 . 죽은 브라우저 인 IE는 word-wrap대신 더 이상 사용되지 않는 표준에 의존 합니다.

word-wrap오늘날의 기존 용도 overflow-wrap는 사양에 대한 별칭이므로 여전히 작동 합니다.


75
실제로, 단어 랩은 IE 발명품입니다. IE에서 작동한다는 것은 놀라운 일이 아닙니다. :)
Savas Vedova

1
이 테이블에서 작동하려면, 당신은을 적용해야 할 수도 있습니다 table-layout: fixed;테이블에
Serj 세이건에게

28
word-wrap: break-word나를 위해 작동하지 않았지만 word-break: break-word@rahul이 제안한대로 작동했습니다.
Yves

1
참고 : 이것은 IE의 부모 div에 제공 한 경우에만 작동합니다 (div의 내부 범위가 아님).
sms

125

브라우저 호환성에 대해 잘 모르겠습니다

word-break: break-all;

또한 당신은 <wbr>태그를 사용할 수 있습니다

<wbr>(단어)는 "원하는 경우 브라우저가 여기에 줄 바꿈을 삽입 할 수 있음"을 의미합니다. 브라우저는 줄 바꿈이 필요하다고 생각하지 않습니다.


23
그 단어 구분에 유의하십시오 : break-all; 단어를 줄 바꿈하는 동안 다른 단어와 함께 줄에있는 문자를 여전히 맞출 수 있으면 중간에 단어가 끊어집니다. 단어를 새 줄로 이동하고 단어가 너무 길어서 컨테이너의 자체 줄에 맞지 않는 경우에만 단어를 끊습니다. 예 : jsfiddle.net/4AKhn/1
alexteg

모두가 모든 것을 깨뜨립니다. 긴 URL 만 있지만 BODY 또는 P가 아닌 특정 클래스와 함께 사용하는 것이 좋습니다
Upendra

로그 테이블 셀에 요청 URI와 같은 것을 표시하려고 할 때 거대하고 긴 셀로 전체 테이블을 중단하는 것을 중지해야 할 때 이것은 완벽하고 바람직합니다. '단어'의 중간에 침입하는 것이 바람직합니다.;) 받아 들여진 대답은 이와 관련하여 쪼그리고 있지 않습니다.
IncredibleHat

@ Skelly1983 IE12와 같은 것은 없습니다
TylerH

@TylerH 나는 이것을 알고 있습니다 .3 년 후에 이것을 지적 해 주셔서 감사합니다. 이는 w3 태그에 대한 w3schools 브라우저 지원 차트에 표시되며 지원은 "Internet Explorer / Edge"로 나열되고 버전 번호는 12.0으로 표시되며 실제로 Edge의 첫 번째 버전입니다.
Skelly1983

98

이것은 '크로스 브라우저'솔루션에 허용되는 답변에 추가 될 수 있습니다.

출처 :

.your_element{
    -ms-word-break: break-all;
    word-break: break-all;

 /* Non standard for webkit */
     word-break: break-word;

    -webkit-hyphens: auto;
       -moz-hyphens: auto;
        -ms-hyphens: auto;
            hyphens: auto;
}

Chrome / Opera 및 Safari에서는 얻었지만 여전히 Firefox 및 IE에서는 얻지 못했습니다. 이것으로 Firefox를 해결했지만 IE는 여전히 컨테이너를 넘습니다 (알파벳 문자의 긴 파일 이름이 있습니다).
Kamafeather

1
안녕하세요 Kamafeather, 확실하지 않지만 ifitisareallylongfilename 중단하려고하는 경우 전체 컨텍스트 (브라우저, html-css 코드)가 더 도움이 될 수 있습니다. 아마도 상황에 따라 다른 질문을 만들 수 있습니다.
Milche Patern

이것은 문법이 아닌 장소에서 단어를 어기 게됩니다.

"ungrammatical"장소는 무엇입니까?
TylerH

31

방금 동일한 문제를 인터넷 검색하고 최종 솔루션을 여기에 게시했습니다. . 이 질문과도 관련이 있습니다.

div에 스타일을 지정하여 쉽게 수행 할 수 있습니다 word-wrap: break-word(너비도 설정해야 할 수도 있음).

div {
    word-wrap: break-word;         /* All browsers since IE 5.5+ */
    overflow-wrap: break-word;     /* Renamed property in CSS3 draft spec */
    width: 100%;
}

그러나 테이블의 경우 다음을 적용해야합니다 table-layout: fixed.. 이는 열 너비가 더 이상 유동적이지 않지만 첫 번째 행의 열 너비 만 (또는 지정된 너비를 통해) 정의됨을 의미합니다. 자세한 내용은 여기를 참조하십시오 .

샘플 코드 :

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

table td {
    word-wrap: break-word;         /* All browsers since IE 5.5+ */
    overflow-wrap: break-word;     /* Renamed property in CSS3 draft spec */
}

1
테이블 솔루션을 주셔서 감사합니다;) 그러나 왜 자동 단어로 break-word를 사용할 수 없는지 잘 모르겠습니다. 어떠한 제안?
ondObno

@ondObno 그래 기술적 인 이유는 확실하지 않지만 여러 브라우저 가이 방식으로 동작하는 것으로 보입니다. 아마도 매우 긴 단어는 각 열의 너비를 결정하는 데 필요한 모든 계산을 혼란스럽게하기 때문일 수 있습니다.
Simon East

width: 100%;FF와 크롬 에서이 작업을 수행하는 유일한 방법은 설정 이었습니다!
Putzi San

27

&#8203;줄 바꿈 기회를 지정하는 보이지 않는 문자 인 ZWSP (제로 폭 공백)라는 유니 코드 문자의 HTML 엔터티입니다. 마찬가지로 하이픈의 목적은 단어 경계 내에 줄 바꿈 기회를 지정하는 것입니다.


1
아주 좋은 팁! 보완하기 위해 : &#8203;공백보다 우선 순위가 낮습니다 (즉, 근처에 공백이 있으면 대신 공백으로 줄 바꿈).
CPHPython

<wbr/>내가 찾던 유니 코드에 해당 하는 것 같습니다
Xenos

20

flexbox를 사용하고에 의존 할 때 Firefox (v50.0.2)를 제외한 대부분의 주요 브라우저 (Chrome, IE, Safari iOS / OSX)에서 다음을 사용하는 것이 효과가 있음을 발견했습니다 width: auto.

.your_element {
    word-wrap: break-word;   
    overflow-wrap: break-word;
    word-break: break-word;
}

참고 : 자동 접두사를 사용하지 않는 경우 브라우저 공급 업체 접두사를 추가해야 할 수도 있습니다.

주의해야 할 또 다른 사항 &nbsp;은 간격에 사용 하는 텍스트 가 단어 중간 줄 바꿈을 일으킬 수 있다는 것입니다.


5
이것이 바로 내가 필요한 것입니다. 다른 솔루션은 너비 100 %에서 작동하지 않았습니다. 한 가지주의 할 점 : 단어 분리 : 단어 분리; 단어 구분이
jscul

7

CSS word-wrap:break-word; , 파이어 폭스 3.6.3에서 테스트




3

공백은 브라우저에 의해 유지됩니다. 필요한 경우 텍스트가 줄 바꿈됩니다.

.pre-wrap {
    white-space: pre-wrap;
    word-break: break-word;
}

데모

td {
   word-break: break-word;
   white-space: pre-wrap;
   -moz-white-space: pre-wrap;      
}

table {
    width: 100px;
    border: 1px solid black;
    display: block;
}
<table>
<tr><th>list</th>
<td>
1.longtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtext
2.breaklinebreaklinebreaklinebreaklinebreaklinebreaklinebreaklinebreaklinebreaklinebreaklinebreakline
</td>
</tr>
</table>


2

에서 MDN :

overflow-wrapCSS 속성 지정 여부 브라우저는 컨텐츠 상자를 넘쳐에서 텍스트를 방지하기 위해 단어 내에서 줄 바꿈을 삽입해야한다.

대조적으로 word-break, overflow-wrap전체 단어가 넘쳐없이 한 줄에 배치 할 수없는 경우에만 휴식을 만들 것입니다.

따라서 다음을 사용할 수 있습니다.

overflow-wrap: break-word;

사용할 수 있습니까 ?


2

먼저 요소의 너비를 식별해야합니다. 예 :

#sampleDiv{
  width: 80%;
  word-wrap:break-word;
}
<div id="sampleDiv">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>

텍스트가 요소 너비에 도달하면 줄로 나뉩니다.


2

davidcondrey의 답변 @에서 언급 한 바와 같이, 단지 ZWSP이 없을뿐만 아니라 SHY &#173; &shy;매우 긴에서 사용할 수,이 구성 단어 (독일어, 네덜란드어 생각) 그 자리에서 깨진 것으로 당신 이 원하는. 보이지는 않지만 필요한 순간에 하이픈을 제공하므로 단어를 연결하고 줄을 최대한 채우십시오.

그런 식으로 단어 luchthavenpolitieagentlucht&shy;haven&shy;politie&shy;agent 의 음절보다 긴 부분을 제공하는 것으로 표시 될 수 있습니다 .
나는 그것에 대해 아무것도 공식을 읽어 본 적이 있지만,이 소프트 하이픈 (구조물의 하나의 단어에 공식 하이픈 이상의 브라우저에서 더 높은 우선 순위를 얻을 관리하는 경우 가 전혀 그것에 대한 몇 가지 확장자가).
실제로, 브라우저는 그렇게 길고 길게 만들어진 단어 자체를 깰 수 없습니다. 더 작은 화면에서는 새로운 줄을 만들거나 경우에 따라 한 줄로 구성됩니다 (구성된 단어 중 두 개가 뒤따를 때와 같이).

참고 : 공항 경찰관을위한 네덜란드 사람입니다.


0

단어 구분 : EN과 같이 구분 단어가 처음에 끊어지기 때문에 일반 단어 구분 : 구분 단어보다 사용하는 것이 더 좋습니다.

word-break: normal

-3

이 작업을 수행:

<div id="sampleDiv">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>

#sampleDiv{
   overflow-wrap: break-word;
}

-4

우리 스타일로 이것을 시도하십시오

white-space: normal;

1
여러 질문에 걸쳐 답변을 복제하는 것은 대부분의 경우 까다로워집니다 . 이 경우 두 질문 모두에 대한 정답이 아닌 것 같습니다. normal기본값 white-space입니다. 나는 그것을 추가하는 것이 질문의 예에 영향을 미치지 않을 것이라고 생각합니다. 내가 틀렸다면 정정 해주세요.
Jeremy Banks

CSS에 의한 재정의에 달려 있습니다. 제 경우에는 JSF 구성 요소의 "style"에서 "white-space : normal;"이 아닌 기본 CSS 스타일을 재정의하기 위해이를 다시 선언해야했습니다.
Benjamin Fuentes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.