2013-11-28 4 views
0

Есть ли какие-либо символы, которые не прерывают словосочетание CSS?Спецификация английского слова CSS

Например, предположим, что я придаю элементу большой размер word-spacing (равный ширине элемента), чтобы он разбивался на каждое слово. Таким образом, для этого:

<div class="break">THIS BREAKS ON EACH LINE</div> 

Я получаю:

--------- 
| THIS 
| BREAKS 
| ON 
| EACH 
| LINE 
|-------- 

Есть ли персонаж, я могу использовать, что не будет разрывать строки. Например:

<div class="break">THIS BREAKS & EACH LINE</div> 

Я не хочу перерыв после амперсанд:

--------- 
| THIS 
| BREAKS 
| & EACH   <<<--- Here 
| LINE 
|-------- 
+0

вы видели [демо] (http://jsfiddle.net/gG78X/1/)? –

+0

Это часть работы, как вы хотите. –

ответ

1

В общем, white-space влияет на интервал между «словами» в техническом смысле: слово есть максимальная последовательность непробельных символов. Таким образом, это влияет на все пробелы (пробелы, табуляции, новые строки). Тем не менее, такие как fixed-width space characters&ensp; не учитываются как пробелы, так что вы можете написать

THIS BREAKS &&ensp;EACH LINE 

, если вы не хотите, чтобы интервал между «&» и «ДРУГ» расширяться. Однако это не совсем безопасно, поскольку браузеры могут когда-нибудь обрабатывать персонажи по-разному. Они уже изменили способ обработки &nbsp;; он был «не растяжимым», но больше не был.

Так безопасный способ действительно

THIS BREAKS <span class=nows>& EACH</span> LINE 

с CSS

.nows { word-spacing: 0 } 

Предотвращение разрывов строк другой вопрос, часто спрашивают, и ответил на SO.Используя безопасный путь выше, вы могли бы просто использовать не-брейк пространство вместо нормального пространства:

THIS BREAKS <span class=nows>&&nbsp;EACH</span> LINE 
0

Вы можете использовать &nbsp; (неразрывный пробел), чтобы предотвратить разрыв ... Но это будет maintain your word spacing.

Лучше бы бросить немного jQuery in there, а-ля:

CSS

.break{ 
    word-spacing:50px; 
    width:50px; 

} 

HTML

<div class="break">THIS BREAKS ON & EACH LINE</div> 

JQuery

var txt = $('.break'); 
var ls=txt.css('word-spacing'); 
txt.html(txt.text().replace(' & ', '<span style="margin:0 -'+ls+' 0 0;"> &&nbsp;</span>')); 
+0

Да, это была моя первая догадка, но интервал неприемлем. Я бы ожидал, что это просто не сломается :) –

+0

@Yuval Adam - вам нужно использовать JS, если вы устанавливаете интервал CSS. См. Обновленный ответ – SW4

+0

Обходной путь, который мы рассматриваем, просто вставив '   ', но я бы действительно использовал фактический символ, который является пробелом и считается частью одного слова. –

0

Использование не- ломка пространство &nbsp; так:

<div class="break">THIS BREAKS &&nbsp;EACH LINE</div> 

see this demo

+0

См. Ответ @ ExtPro, это создает нежелательное пространство. –

+0

см. Демонстрацию http://jsfiddle.net/gG78X/ –

+0

Ваша демонстрация не включает в себя слово-интервал вообще. –

1

Я нашел достойного обходной, используя «тонкий неразрывный пробел» символ (&#8239;), который ведет себя правильно.

http://jsfiddle.net/RJ6KW/4/

+0

Приятный трюк, хотя он не работает в старых версиях IE, который может тщетно выглядеть для символа символа и отображать вместо него небольшую рамку. –

+0

@ JukkaK.Korpela - Я только забочусь о современных браузерах для этого проекта, но хороший момент, спасибо. –

Смежные вопросы