2013-01-02 45 views
12

我正在尋找一種方式來指定一個行應該打破如果它不適合其在類似­(軟/全權連字符)的方式行,但有空間。我嘗試了使用Google搜索,但沒有得到很多相關的點擊(儘管指定了「html」,但主要針對InDesign),而我得到的卻是一些人說他們不知道某種方式。HTML中的自由換行符?

Ex。

你好,我叫
是FOO。你好,
我的名字是foo。
但如果空間可用:
你好,我的名字是foo。

對於特異性,我不是指white-space: normal/nowrap/pre/…,我不想像<br />那樣強行休息。

我使用的是AngularJS,所以大多數所有東西都是通過JavaScript處理的,所以如果有一個簡單/高效/聰明的方式來做到這一點,我會對它開放。

+1

可能的幫助:http://stackoverflow.com/questions/226464/soft-hyphen-in-html-wbr-vs-shy – sgeddes

+0

我不知道一個理智的方式來做到這一點。一個瘋狂的方法是爲每個空間使用' ',除了你想要破解的那個空間,但是這會弄亂整個文本。如果它只是* hello *部分,但它可能會工作。 – toniedzwiedz

+2

那看不見的'­'? – SLaks

回答

2

我不認爲有這樣做的任何原生的方式,但這裏是我一直在使用一劈,每當我真的需要這樣的事情:

var str = "Hello,<br>My name is foo."; 

str = str.replace(/ /g, '&nbsp;').replace(/<br>/g, ' '); 

基本上,使用非打破空間分開你不想破的詞。

在此處查看:http://jsfiddle.net/5xmt6/(調整窗口大小以查看它的反應)。


注:這是非常哈克,並介紹了自己的一套問題;即:如果視口變得非常窄,文本的其餘部分將不會換行。

+1

這是很聰明,但是很多混亂,它會使哈哈。感謝這個想法! – jacob

6

您可以使用<wbr>標記。

編輯:由於在評論中提到的,你可以使用一個zero-width space&#8203;(參見:What's the opposite of a nbsp?

+5

只適用於HTML5。此外,嘗試找到* W3schools以外的資源* D – 2013-01-02 20:44:26

+6

['wbr'](https://developer.mozilla.org/en-US/docs/HTML/Element/wbr)用於在*一個單詞內打破* OP要引導瀏覽器在單詞之間切換 –

+1

@pst - 自5.5版以來,IE一直支持'wbr' –

10

以指示換行符應該字之間出現,使用NO-BREAK SPACE,或' `,字之間。任何正常空間易碎。所以你可以編寫例如

Hello,&nbsp;my&nbsp;name is&nbsp;foo. 

如果你寧願表示允許中斷(按下面的評論),你可以用一個nobr元素中的文本(標準的,但就像一個魅力),或您設置white-space: nowrap任何元素中,從而不允許換行符,除非明確強制或允許。然後,您將使用<wbr>標籤(非標準,但...)或字符引用&#8203;&#x200b;(用於冰零零寬度空間)之後的空格以允許換行,例如,

<nobr>Hello, <wbr>my name <wbr>is foo.</nobr> 

<wbr>和ZERO WIDTH SPACE之間的選擇是一個tricky issue,主要是由於IE古怪。

+1

例如,我會這樣做:'你好,&dbr;我的名字是foo.'(其中'&dbr;'是一個任意的換行符,但據我所知,'&dbr;'不是真實的)。 – jacob

+0

@jacob,只是不要使用化妝實體。問題是什麼? –

+1

如果需要換行符,我想指定一個換行符的確切位置。我真的更喜歡使用一個字符來指定它應該出現的位置,而不是使用一堆字符來指定它不應該在的位置。 – jacob