2013-02-04 2 views
0

동일한 문제를 설명하고 다양한 성공을 거둔 너무 많은 페이지를 보았습니다. 내가하려고하는 것은 지정된 단어 너비 이상으로 내용을 늘임으로써 table/divs/break를 깨지 않도록 큰 단어를 나눌 수있는 방법을 생각해내는 것입니다. 나는 이것을 백분율 너비 요소에 대해 수행해야합니다. 나는 모든 것을 시도한 것처럼 느껴지지만 해킹 일지라도 해결책이 있어야합니다. 지금까지 찾은 최고의 솔루션은 hyphenator js입니다. 그것은 사전 파일에서 찾을 수있는 실제 단어에서만 작동하는 것 외에는 대부분의 긴 단어에 대해 아름답게 작동합니다. 예를 들어, 내 모든 예에서 잘 구분되어 있습니다큰 단어 깨우기/레이아웃 중단 방지/하이픈 편집기 ja

이 같은

상황이 깨진하지 않고 대신 내 사이트 나누기

를 ThisisalongstringoftextandifIwasusinghyphenatorjsonthisthenitwouldbreakupnicelywithhyphensandeverythingwouldbegood :

abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab을

= - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - - = - = - = - = - = - = - = - = - = - = - = - - -

대부분의 사이트에서 사용자 작성 텍스트를 사이트에 표시 할 수 있으며, 등호 및 하이픈 문자의 긴 문자열 같은 것이 일반적입니다. 또한 stackoverflow는 word-wrap : break-word를 사용하여이 문제를 해결합니다. CSS를 (적어도 파이어 폭스). 나는 이것을 실험 해 보았는데 위대한 효과가 있다는 것을 알았지 만 사전 정의 된 픽셀 너비를 사용할 때만 작동하며 백분율 너비로 작동하는 솔루션이 필요합니다. 나는 또한 단어 랩 : break-all을 사용했다. 그러나 그 단어를 대신 감싸 야 할 때 중간에 작은 단어를 잘라 내기 때문에 추한 것처럼 보인다.

가능한 한 대부분의 시간이 작동하므로 하이픈 넣기를 계속 사용하고 싶습니다. 어쩌면 내가 너무 오랫동안보고 있었지만 hyphenator에 위와 같은 단어가 아닌 너무 큰 단어를 나눌 수있는 몇 가지 옵션이 있습니까? 어쩌면 누군가가 이것을 실현하기 위해 하이픈 (hyphenators) 정규 표현식을 조정하여 약간의 성공을 거두었을 것입니까?

답변

2

word-wrap: break (백분율 너비도 마찬가지 임) 설정은 table-layoutfixed으로 설정된 경우에도 셀/열의 너비가있는 테이블의 경우에는 실패합니다. 이 문제를 해결하려면 내용에 줄 바꿈 힌트를 추가해야합니다.

오래된 줄 바꿈 힌트는 <wbr>이지만 일부 브라우저에는 문제가 있습니다. 새로운 줄 바꿈 힌트는 ZERO WIDTH SPACE 문자로 &#x200b; 또는 UTF-8을 사용하는 경우 다음과 같이 쓸 수 있습니다. 최신 브라우저에서는 잘 작동하지만 이전 버전의 IE에서는 불쾌한 결과를 초래합니다. 나는 최근에 후자에 투표하는 경향이 있지만 line breaking issues에 대한 내 페이지에서 "방탄"이지만 어색한 방법이 있다고 설명합니다. <wbr><a class=wbr></a>을 CSS 규칙 .wbr:after { content: "\00200B"; }과 함께 사용하십시오. 프로그래밍 방식으로 페이지를 생성 할 때 그런 어색한 마크 업이 가능할 수 있습니다.

필요할 때만 힌트를 삽입해야합니다. 자연 언어로 된 단어에 사용해서는 안됩니다. 간단한 접근 방식으로 페이지에서 렌더링 할 사용자 입력을 처리 할 때 기술적 인 의미로 "단어"(최대 공백이 아닌 문자열)로 나눌 수 있으며 N 문자보다 긴 모든 "단어"에 대해 K 자 다음에 줄 바꿈 힌트. 매개 변수 N 및 K는 레이아웃에 따라 선택해야합니다. 단점 : 이것은 문자열에 공백이 있지만 너무 길지 않은 것처럼 "긴급 중단"을 야기 할 수 있으며 이로 인해 임의로 긴 자연어 단어가 손상 될 수 있습니다.

아마도 클라이언트 쪽에서는 먼저 Hyphenator.js를 실행 한 다음 텍스트 내용을 처리하여 공백 및 임의의 부드러운 하이픈 (\00AD)에서 텍스트 내용을 조각으로 나눌 수 있습니다. Hyphenator.js가 작업을 완료 한 후에 만이 작업을 수행 할 수 있습니다. 그런 다음 조각에 대해 위의 알고리즘을 실행할 수 있습니다. 즉, 긴 조각에 줄 바꿈 힌트를 추가합니다.

+0

큰 충고 Jukka! 불행히도 나는 오늘 이것을 제대로 테스트 할 충분한 시간이 없지만 이것이 내가 찾고있는 대답 일 수 있다고 생각한다. 대부분 hyphenator.js가 끝난 후이 클라이언트 측을 시도하고 어떻게 진행되는지 살펴볼 것입니다. – Joseph

+0

거의이 스레드를 잊어 버렸습니다. 나는 그것이 작동 할 것이기 때문에 이것을 대답으로 표시하고있다. 내가 끝낸 것은 하이픈 넣기가 끝난 후에 문자열을 분리하는 것을 제외하고는 하이픈 넣기가 이미하는 것과 같은 방식으로 문자열을 분리하기 위해 하이픈 넣기 소스를 크게 편집하는 것이 었습니다. 나는 공백과 부드러운 하이픈 문자로 조각을 나누어 "단어"를 깨뜨리는 것에 대한 귀하의 제안을 사용했습니다. 그런 다음 K 자마다 부드러운 하이픈을 삽입하고 모두 다시 붙여 넣습니다. 나는 그것이 조금 어색한 방법이나 다른 인정하지만, 영감을 주셔서 감사합니다! – Joseph