溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

強(qiáng)制換行與強(qiáng)制不換行的區(qū)別有哪些

發(fā)布時(shí)間:2021-09-30 14:02:00 來源:億速云 閱讀:119 作者:iii 欄目:web開發(fā)

這篇文章主要講解了“強(qiáng)制換行與強(qiáng)制不換行的區(qū)別有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“強(qiáng)制換行與強(qiáng)制不換行的區(qū)別有哪些”吧!

強(qiáng)制換行與強(qiáng)制不換行用到的屬性

我們一般控制換行所用到的CSS屬性一共有三個(gè):word-wrap; word-break; white-space。這三個(gè)屬性可以說是專為了文字?jǐn)嘈卸鴦?chuàng)造出來的。首先我們得知道這三個(gè)屬性到底是做什么用地:

word-wrap語法:

word-wrap: normal(默認(rèn)) | break-word
各個(gè)瀏覽器均能識(shí)別

參數(shù):

normal: 允許內(nèi)容頂開指定的容器邊界。
break-word: 內(nèi)容將在邊界內(nèi)換行。必要時(shí)會(huì)觸發(fā)word-break(注意:請(qǐng)分辨清楚word-break和break-word這倆個(gè)是不同的東西,一為屬性另為參數(shù))。

說明:

word-wrap是控制是否“為詞斷行”的,設(shè)置或檢索當(dāng)前行超過指定容器的邊界時(shí)是否斷開轉(zhuǎn)行。中文沒有任何問題,英文語句也沒問題。但是對(duì)于長(zhǎng)串的英文,就不起作用。

范例:

congratulation這個(gè)單詞屬于長(zhǎng)串英文,word-wrap:break-word整個(gè)單詞看成一個(gè)整體,如果該行末端寬度不夠顯示整個(gè)單詞,它會(huì)自動(dòng)把整個(gè)單詞放到下一行,而不會(huì)把單詞截?cái)?,這就是對(duì)于長(zhǎng)串文字不起作用的解釋。word-wrap:normal是默認(rèn)情況,英文單詞不被拆開。


結(jié)論:

作用范圍僅為div這類標(biāo)準(zhǔn)塊級(jí)元素,th,td這類table元素雖然識(shí)別但是沒有效果(如果為td,th加上寬度word-wrap在IE下是能夠發(fā)揮效果的,但根據(jù)完全兼容性方便記憶角度上來說還是以前面的結(jié)論為準(zhǔn))。

word-break語法:

word-break: normal(默認(rèn)) | break-all | keep-all
Firefox、Opera不能識(shí)別

參數(shù):

normal: 依照亞洲語言和非亞洲語言的文本規(guī)則,允許在字內(nèi)換行。
break-all: 該行為與亞洲語言的normal相同。也允許非亞洲語言文本行的任意字內(nèi)斷開。該值適合包含一些非亞洲文本的亞洲文本。
keep-all: 與所有非亞洲語言的normal相同。對(duì)于中文,韓文,日文,不允許字?jǐn)嚅_。適合包含少量亞洲文本的非亞洲文本。

說明:

word-break:break-all,是斷開單詞。在單詞到邊界時(shí),下個(gè)字母自動(dòng)到下一行。主要解決了長(zhǎng)串英文的問題(恰恰彌補(bǔ)了上面word-wrap:break-word對(duì)于長(zhǎng)串文字不起作用的缺陷)。

范例:

繼續(xù)以上面congratulation這個(gè)單詞屬于長(zhǎng)串英文,word-break:break-all它會(huì)把單詞截?cái)?,該行末端就?huì)變成類似conra(congratulation的前端部分),下一行為tulation(conguatulation)的后端部分了。
word-break:keep-all,是指Chinese, Japanese, and Korean不斷詞。即只用此時(shí),不用word-wrap,中文就不會(huì)換行了。(英文語句正常。)

結(jié)論:

作用范圍僅為div這類標(biāo)準(zhǔn)塊級(jí)元素,th,td這類table元素雖然識(shí)別但是沒有效果(經(jīng)測(cè)試Chrome下word-break:break-all是有效果的,但根據(jù)完全兼容性方便記憶角度上來說還是以前面的結(jié)論為準(zhǔn))。Firefox,Opera是無法識(shí)別word-break的,更不用提Firefox下的th,td中使用word-break的效果了。

white-space語法:
white-space: normal(默認(rèn)) | pre | nowrap

參數(shù):

normal: 默認(rèn)??瞻讜?huì)被瀏覽器忽略。
pre: 空白會(huì)被瀏覽器保留。其行為方式類似HTML中的pre標(biāo)簽。
nowrap: 文本不會(huì)換行,文本會(huì)在在同一行上繼續(xù),直到遇到br標(biāo)簽為止。

說明:

對(duì)于pre屬性,其實(shí)就是HTML中連續(xù)的多個(gè)空白符會(huì)被合并,然后為了不讓他合并(最常用的場(chǎng)合就是表示代碼文字縮進(jìn))讓其中的空白符繼續(xù)保留而不需要我們?cè)黾宇~外的樣式和標(biāo)簽來控制它的縮進(jìn)和換行。pre標(biāo)簽的原理也是一樣的內(nèi)部默認(rèn)有了個(gè)white-space:pre。
對(duì)于nowrap屬性,這個(gè)是強(qiáng)制不換行核心,一般強(qiáng)制不換行就是利用這個(gè)屬性。Firefox的div和td中,以及IE的div中,均沒有問題。唯一的瑕疵就是在IE的td中會(huì)有一個(gè)問題,如果td沒有指定寬度,則nowrap仍然有效,如果td有寬度,并且文字中無標(biāo)點(diǎn)、無空格(例如中文長(zhǎng)串文字),nowrap則不再有效。解決方式就是可以加word-break:keep-all;可以解決此問題。

總結(jié)強(qiáng)制換行:

如果在div這類標(biāo)準(zhǔn)塊級(jí)元素中需要強(qiáng)制換行,最普遍的方案那就是word-wrap:break-word; word-break:break-all;此方式的缺點(diǎn)就是會(huì)導(dǎo)致如果恰巧該行末端寬為一個(gè)長(zhǎng)串英文單詞,那么該單詞會(huì)被撕開的尷尬樣式(而且FF不識(shí)別word-break,反而不會(huì)撕開這個(gè)單詞)。個(gè)人認(rèn)為如果你這個(gè)div里面放的類似于URL這個(gè)長(zhǎng)串地址,那么用此方案是非常不錯(cuò)的選擇(注意:由于FF不識(shí)別word-break,所以無法保證每行末端會(huì)整齊的斷開URL單詞,但這也是無奈的選擇)。如果不是放置URL這類可以斷開的長(zhǎng)串英文,而是英文句子的話,那么使用word-wrap:break-word;即可。至于網(wǎng)上看到有word-wrap:break-word; overflow:hidden;這么個(gè)寫法,據(jù)說可以兼容IE和FF,但經(jīng)過親自測(cè)試似乎沒有什么特別效果。當(dāng)然,如果你有更好的方案也可以留言參與討論,這里也十分歡迎您的意見。

如果是在td,th這類table元素中需要強(qiáng)制換行,個(gè)人比較推薦的方式為:先為table設(shè)定table-layout:fixed,至于為什么要設(shè)定這個(gè)屬性可參考我的《拿什么來拯救你,我的Table》這篇文章,里面有比較詳細(xì)的說明。基本上設(shè)定完這個(gè)屬性后基本的換行問題都能夠解決而不會(huì)出現(xiàn)table中td,th因?yàn)槔锩娓鱾€(gè)內(nèi)容的多寡發(fā)生搶奪其他td,th寬度的情形發(fā)生。這時(shí)如果你依舊有強(qiáng)制換行問題,那么在此td中內(nèi)部加一層div,那么情況就會(huì)像上面討論的方式來解決。

總結(jié)強(qiáng)制不換行:

強(qiáng)制不換行的問題到是比較容易分析的,就如上面所討論的那樣使用white-space:nowrap,F(xiàn)irefox的div和td中,以及IE的div中,均沒有問題。唯一的瑕疵就是在IE的td中會(huì)有一個(gè)問題,如果td沒有指定寬度,則nowrap仍然有效,如果td有寬度,并且文字中無標(biāo)點(diǎn)、無空格(例如中文長(zhǎng)串文字),nowrap則不再有效。解決方式就是可以加word-break:keep-all;可以解決此問題。綜合下來,比較穩(wěn)妥的方式是在文字與td之間再套一層div,然后使用nowrap,那么就是強(qiáng)制不換行。注意這時(shí)候很有可能文字會(huì)過多導(dǎo)致溢出容器,所以你還得加一個(gè)overflow:hidden,防止溢出容器,這樣子就可以兼容各個(gè)瀏覽器了。

感謝各位的閱讀,以上就是“強(qiáng)制換行與強(qiáng)制不換行的區(qū)別有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)強(qiáng)制換行與強(qiáng)制不換行的區(qū)別有哪些這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

css
AI