답변:
텍스트를 "단어"(공백으로 구분 된 비 공백 문자의 시퀀스)로 분할하고 nobr마크 업 내부에 하이픈이 포함 된 각 "단어"를 래핑하는 것보다 안정적으로 수행하는 더 간단한 방법은 없습니다 . 따라서 입력 데이터 bla bla foo-bar bla bla는 bla bla <nobr>foo-bar</nobr> bla bla.
nobr"단어"에 문자와 숫자 만 포함되어있을 때마다 마크 업 삽입을 고려할 수도 있습니다 . 그 이유는 일부 브라우저가“2/3”또는“f (0)”과 같은 문자열을 깨뜨릴 수도 있기 때문입니다 ( 브라우저에서 줄 바꿈의 이상한 점에 대해서는 내 페이지 참조 ).
nobr태그는 표준, 강하게 W3C 낙담하지 않습니다. w3.org/TR/html5/obsolete.html#non-conforming-features
nobr마크 업은 모든 브라우저에서 작동하고 스타일 시트가 비활성화 된 경우에도 작동하며 특수 문자에 대한 지원과 독립적으로 작동합니다. 거기에 실제 그것으로 문제는?
‑Unicode NON-BreakING HYPHEN (U + 2011)을 사용할 수 있습니다 .
HTML : ‑또는‑
-하여 ‑.
nobr모든 곳에서 태그 를 칠하는 것보다 더 우아하지만 실제로는 잘 작동하지 않습니다. IE는 엔 대시로 표시하고 Safari는 일반 대시보다 주위에 더 많은 공간을 추가하며 대부분의 텍스트 편집기는 물음표 나 상자 또는 기타 의미없는 문자로 표시합니다.
white-space: nowrap제안한대로 갈 것입니다 . FF / Win7의 Btw에서는 대상 응용 프로그램이 유니 코드를 인식하더라도 Firefox 외부에서 복사하여 붙여 넣을 때 수줍은 대시가 일반 대시로 변환되는 것처럼 보입니다.
한 가지 해결책은 추가 span태그와 white-spaceCSS 속성 을 사용하는 것 입니다. 다음과 같이 클래스를 정의하십시오.
.nowrap {
white-space: nowrap;
}
그런 다음 하이픈으로 연결된 텍스트 주위에 해당 클래스와 함께 범위를 추가합니다.
<p>This is the <span class="nowrap">anti-inflammable</span> model</p>
이 접근 방식은 모든 브라우저에서 잘 작동합니다. 여기에 나열된 버그가있는 구현은 white-space속성의 다른 값에 대한 것입니다 . http://reference.sitepoint.com/css/white-space#compatibilitysection
white-space: nowrap경우 전체 컨테이너에 적용 하십시오. 그렇지 않으면 그냥 놓아주세요. 첫째, 일반 콘텐츠에 대해 하이픈으로 줄 바꿈을 방지 할 이유가 없습니다. 둘째, CKEditor를 해킹하지 않는 한 자동으로 원하는 내용을 얻을 수있는 방법이 없습니다.
<nobr>훨씬 더 명확합니다.
모든 HTML 인스턴스를 편집하지 않고는 할 수 없습니다. 결과적으로 나는 그들을 대체하기 위해 몇 가지 JS를 작성했습니다.
jQuery :
//replace hypens with no-breaking ones
$txt = $("#block-views-video-block h2");
$txt.text( $txt.text().replace(/-/g, '‑') );
바닐라 JS :
function nonBrHypens(id) {
var str = document.getElementById(id).innerHTML;
var txt = str.replace(/-/g, '‑');
document.getElementById(id).innerHTML = txt;
}
하이픈 주위에 결합 자 문자 ( ⁠) 라는 단어를 사용합니다 . IE에서도 작동합니다.
https://en.wikipedia.org/wiki/Word_joiner
특정 하이픈 수정 ...
function fixicecream(text) {
return text.replace(/ice-cream/g,'ice⁠-⁠cream'));
}
또는 모든 것 ...
function fixhyphens(text) {
return text.replace(/(\S+)-(\S+)/g,'$1⁠-⁠$2'));
}
이 CSS를 사용해보십시오 :
word-break: break-all;
-webkit-hyphens:none;
-moz-hyphens: none;
hyphens: none;