2010-12-10 6 views
20

div 내에서 텍스트를 보존하고 줄 바꿈해야합니다. 지금까지는 솔루션을 찾는 데 어려움을 겪고 있습니다. 내가 찾은 최선의 해결책은 모든 브라우저에서 작동하지 않습니다.브라우저 호환 단어 줄 바꾸기 및 공백 : 예?

다음은 Chrome 및 IE6 +에서 작동하지만 Firefox에서는 텍스트가 줄 바꿈되지 않습니다.

white-space: pre; 
word-wrap: break-word; 

는 나는 어떤 이유에서 텍스트가 공백으로 파이어 폭스에 포장하지 않는 것으로 나타났습니다 : 사전. 그리고 -moz-pre-wrap은 Firefox 3.5에서 작동하지 않습니다 (이유는 무엇입니까?). 그러나 목록에 미리 포장을 추가하면 IE 6과 7이 작동하지 않습니다. 매우 실망합니다.

코드 : 우리가 그들을 :) 일하고 싶습니다으로

.introsub { 
    position: relative; 
    top: 30px; 
    left: 25px; 
    width: 550px; 
    font-weight: normal; 
    line-height: 1.5em; 
    overflow: auto; 
    margin: 0; 
    padding: 1.5em; 
    white-space: pre; 
    word-wrap: break-word; 
} 
+0

텍스트가 자동으로 기본적으로 자동 줄 바꿈되지 않습니까? 몇 가지 예제 코드를 보여줄 수 있습니까? – PeeHaa

+0

나는 그것이 될 것이라고 생각했지만 그렇지 않았습니다. .introsub { 직위 : 상대적; 상단 : 30px; 왼쪽 : 25px; 너비 : 550px; font-weight : normal; 줄 높이 : 1.5em; 오버플로 : 자동; 여백 : 0; 패딩 : 1.5em; white-space : pre; word-wrap : break-word; } – Logan

+0

codeplex에서이 문제가 발생하는 것 같습니다. – SoonDead

답변

25

는 CSS3 속성은 항상 작동하지 않습니다. 그래도 나는 white-space:preword-wrap:break-word을 혼합 할 때 요점을 보지 못합니다.

<br /> 태그가 없으면 전자는 텍스트를 감싸지 않습니다. 두 번째는 반대를 할 것입니다 : 단어 중간 에라도 필요할 때마다 단어를 끊으십시오. 그들은 충돌 것 같다, 다른 브라우저는 이러한 속성에 다르게 반응하는 이유에 대한 가장 확실한 대답은 두 속성 중 하나를 지원

  • 가 충돌하기 때문에
  • , 우선 순위가 정의되지 않은 또는이다 각 브라우저마다 다릅니다.

(확실하지는 않지만, 저는 전문가가 아닙니다.)

thisthis을 자세히 살펴본 다음 특정 경우에 사용해야 할 내용을 결정하시기 바랍니다.

[편집] 당신은 (모든 브라우저에서 작동한다)이 시도 할 수 있습니다

:

white-space: -moz-pre-wrap; /* Firefox */ 
white-space: -pre-wrap; /* ancient Opera */ 
white-space: -o-pre-wrap; /* newer Opera */ 
white-space: pre-wrap; /* Chrome; W3C standard */ 
word-wrap: break-word; /* IE */ 

나는이 테스트를하지 않은,하지만 난 당신을 위해 트릭을 할 전망이다.

+0

모든 브라우저에서 단어 줄 바꿈에 대한 해결책은 무엇입니까? 여러 가지 조합을 시도했지만, Firefox를 제외한 대부분의 브라우저에서 작동하는 유일한 브라우저입니다. 하지만 Firefox가 필요합니다. 단어 랩 : break-word가 없으면 IE6 & 7이 작동하지 않습니다. 하지만 파이어 폭스 3.5에서 작동하는 pre-wrap을 사용할 수 없습니다. b/c IE6이나 7에서도 작동하지 않습니다. – Logan

+0

편집을 확인하십시오 :) – mingos

+0

불행히도, 나는 이것을 시도했지만 IE6 또는 IE7. 정말로, 나는이 두가지와 파이어 폭스 (다른 브라우저는 중요하지 않다)에서 작동한다면 행복 할 것이다. 그러나 지금까지 나는 해결책을 찾지 못했다. : [ – Logan

14

나는이 문제가 아주 오래되었다는 것을 알고있다. 그러나 나는 그 문제에 직면 한 이래로 나는 대답 할 충동을 느낀다.

내 솔루션은 다음과 같습니다

사용 white-space: pre-wrap;이 거의 white-space: pre;과 동일로, 그냥 줄 바꿈을 추가합니다. (참조 : http://www.quirksmode.org/css/whitespace.html) : 나 브라우저 별 CSS를 해킹과 (http://paulirish.com/2009/browser-specific-css-hacks/)

그럼 내가 특별히 조건부 주석 (http://www.quirksmode.org/css/condcom.html 참조) 중 하나와 오래된 즉을 대상으로한다.

번째 방법의 예 :

.introsub { 
    position: relative; 
    top: 30px; 
    left: 25px; 
    width: 550px; 
    font-weight: normal; 
    line-height: 1.5em; 
    overflow: auto; 
    margin: 0; 
    padding: 1.5em; 
    white-space: pre-wrap; 
    word-wrap: break-word; 
} 

/* IE6 and below */ 
* html .introsub { white-space: pre } 

/* IE7 */ 
*:first-child+html .introsub { white-space: pre } 

이것은 포장 강제로 충분할 것이다.