自動目錄
在html最怕使用者留言時故意來搗蛋,用一串長長的字中間沒有任何空白的長字串,例如:
thisisatestbookthatisachart-------likethisshkhjkaruewknczxvjkruqtjnvzxcj
這種長長的字串往往會造成容器的破壞。因此對付這種沒有空白鍵的字串,就要強制換行,可以用word-wrap 和 overflow這兩個屬性
word-wrap: break-word; overflow:hidden;
word-wrap 屬性說明
- break-word:可以任意斷字,不依循音節規則。
- normal:長字會維持原狀,超出邊界,此為預設值。
- inherit:繼承父元素特徵。
- break-all: 可以任意斷字,不依循音節規則。
- anywhere: 等同 break-all
- keep-all: 不可斷字
overflow 屬性說明
- overflow: auto; /*預設使用捲軸 ie下,長串會自動折行。ff下,長串會被遮蓋 */
- overflow: hidden; /*隱藏溢出範圍的內容*/
- overflow: scroll; /*使標籤元素產生捲軸*/
- overflow: visible; /*顯示全部忽略區塊大小*/
- overflow: inherit; /*繼承父元素的可見性*/
另一種情況就是內容只要一行,不要自動換行,省去切字的麻煩。
white-space: nowrap;
再來可以使用white-space來對空白字元的行為作規範:
white-space 屬性說明
- normal:連續的空白字都縮減為一個空白,長行遇到右邊界會跳行分為兩行,此為預設值。
- pre:不縮減空白字,維持原狀。
- pre-line:Firefox, Safari, Chrome 的定義是,連續的空白字會縮減為一個空白;跳行字(newline)保留,會跳行;長行也會跳行。IE 的定義是,連續的跳行會保留。
- pre-wrap:Firefox, Safari, Chrome 的定義是,不縮減空白字;跳行字會跳行;長行也會跳行。IE 的定義是,連續的跳行字會縮減為一個跳行。
- nowrap:連續的空白字會縮減為一個空白,不跳行。
- inherit:繼承父元素的特徵值。
我可以解釋~~
補充說明
1. 使用特別的tag <wbr> 來處理長文字斷行的問題
2. 對中文(CJK)字來說,word-wrap 無論怎麼設置,都是會斷字,因為中文每個字都是獨立的,所以無論設定成 break-all或keep-all,都沒什麼差別。
3. overflow-wrap和word-wrap是相同的。
參考資料
[1] OECSPACE http://www.hsiu28.net/style/style_11.php
[2] 螞蟻的css http://ant4css.blogspot.com/2009/01/whitespace.html
[3] https://developer.mozilla.org/ja/docs/Web/CSS/word-break
原文 2011-10-23 10:59:40