網(wǎng)易微專業(yè)之《前端工程師》學習筆記(1)-CSS文本格式

本文是我報的網(wǎng)易微專業(yè)之《前端工程師》的第一篇課堂筆記,以后會多多的整理些課堂筆記給你們看,希望熱愛前端的朋友們可以相互交流。

文章參考了Array-Huang的這篇文章《談談如何用CSS處理文本格式》。Array-Huang是我前端課的童鞋,他在Segmentfault上有專欄,目前是個前端攻城獅。

這篇文章已經(jīng)獲得他的授權(quán),根據(jù)我自己的需要刪改了,留作學習之用。查看原文或者想關(guān)注他的Segmentfault請點擊上面的文章鏈接喲!Segmentfault是我們常逛的技術(shù)社區(qū),有點類似知乎,不同的是那里是IT類的知乎。

01.前言

文本方面的CSS內(nèi)容不少,但只要是用過一下office word來編輯過文章的童鞋都能輕易理解其中的大部分。那么,今天僅僅來談談其中最復雜的部分——文本格式。今天談的屬性大多會在你制作文章頁面的時候會用上喲!好好聽。

02.處理換行、空格和Tab:white-space

眾所周知,瀏覽器對HTML中的換行符是采取忽略政策的,因此一般推薦使用<br />
來換行。另外,對于多個空格(space)以及Tab也只會認作一個空格(space)來處理,因此當需要用到多個空格的時候,就需要利用空格的實體字符——
來強制顯示空格。

實際上,以上的這種種麻煩,CSS都可以輕易克服:white-space。

white-space:nomal|nowrap|pre|pre-wrap|pre-line;

New line Spaces and Tab Text wrapping
nomal Collapse Collapse Wrap
nowrap Collapse Collapse No Wrap
pre Preserve Preserve No Wrap
pre-wrap Preserve Preserve Wrap
pre-line Preserve Collapse Wrap

下面來根據(jù)上面這表格來介紹一下white-space各值的含義:
New lines表示對換行符的處理,Spaces and tabs表示對多個空格及Tab的處理,Text wrapping表示文本是否會在文本內(nèi)容超出容器寬度時進行自動換行。

當white-space為normal(瀏覽器默認值),即換行符無效(collapse)、多個空格及Tab被折疊(collapse)成一個空格來處理、文本內(nèi)容會自動換行。

當white-space為nowrap時,文本內(nèi)容不自動換行(至于是強行突破容器還是截斷顯示則要視乎另一個CSS——overflow,下文詳述),其它表現(xiàn)與normal一致。

當white-space為pre時,換行符有效、多個空格及Tab不會被折疊,文本不會自動換行。事實上,<pre>的瀏覽器默認樣式中就有white-space: pre;。

當white-space為pre-wrap時,換行符有效、多個空格及Tab不會被折疊,文本會自動換行,此屬性多用來展示程序代碼段,可以保留其中的換行及縮進。

當white-space為pre-line時,換行符有效,多個空格及Tab會被合并成一個空格,文本超出會自動換行。

03.一個長單詞超出整個容器寬度時是否換行:word-wrap

必須注意到,這是一個長單詞便超出容器寬度的情況,而且只需考慮英文,中文沒有此特性。

word-wrap: normal|break-word;

normal,長單詞不換行


break-word,長單詞自動換行


04.決定文本的換行點:word-break

當一行的末尾已不能完整放下某個單詞A,那么就需要決定用哪種策略來放置這單詞A(肯定是英文了,中文沒這問題)了:
word-break: normal|break-all|keep-all;

normal,使用瀏覽器默認的換行規(guī)則。

break-all,擠擠更健康,硬是讓單詞A擠上去,放不下的部分就換行到下一行繼續(xù)顯示。這實際上是沒有把這個單詞看做是一個整體,而是以字母作為最小可換行的單位:

keep-all,不擠不擠我就不擠,哪怕實際上這個單詞獨占一行也無法完整顯示,也要另起一行來顯示:


word-wrap 和 word-break這兩項CSS屬性非常類似,一是都管換行的,二是都針對英文。在我看來,word-break比word-wrap更徹底,因為只要設置word-break: break-all;,那么就從根本上否定了“拆分單詞”這一事實,而是轉(zhuǎn)變?yōu)椤叭绾畏胖靡淮帜浮?,那么換行就是理所當然的了。而word-wrap: break-word;實際上還是把單詞當做是“單詞”來看待的,只是為了顯示效果委曲求全了。

05.規(guī)定如何處理內(nèi)容溢出容器*:overflow

屬性作用于block型元素上。它規(guī)定了當內(nèi)容元素溢出元素框時發(fā)生的事:裁剪內(nèi)容,使用滾動條來顯示 或 直接顯示超出部分 。

/* 默認值。內(nèi)容不會被修剪,會呈現(xiàn)在元素框之外 */overflow: visible;

典型如上文的:



/* 內(nèi)容會被修剪,并且其余內(nèi)容不可見 */overflow: hidden;

硬是截掉超出容器部分的內(nèi)容:



/* 內(nèi)容會被修剪,瀏覽器會顯示滾動條以便查看其余內(nèi)容 */overflow: scroll;

無論有無內(nèi)容溢出容器,顯示滾動條;如有內(nèi)容溢出,通過滾動條可以查看溢出內(nèi)容:


/* 由瀏覽器定奪,如果內(nèi)容被修剪,就會顯示滾動條 */overflow: auto;

若有內(nèi)容溢出容器,顯示滾動條:


/* 規(guī)定從父元素繼承overflow屬性的值 */overflow: inherit;

06.添加省略號:text-overflow

text-overflow是建立在overflow: hidden;等基礎上的,如果overflow為其它值(inherit的話就要父級情況)則無效。text-overflow有很多可取的值,但實際上目前瀏覽器兼容性較好的只有clip | ellipsis

  • clip:瀏覽器默認值就是clip,就是什么都不加

  • ellipsis:給被截掉的文本內(nèi)容末尾添上個…


text-overflow僅支持水平方向的溢出,換句話說,只支持單一行文本內(nèi)容的溢出(上圖那情況雖然是多行,但這種情況不會出現(xiàn)在中文,因為中文都是自動換行的),若想支持多行,則需要使用插件,推薦 dotdotdot

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • CSS3新特性中關(guān)于文本方面的內(nèi)容不少,會有兩節(jié)內(nèi)容:文字渲染和文本格式。今天來談談最復雜的部分——文本格式。今天...
    荷小音閱讀 1,128評論 0 2
  • 文本換行其實是個非常常用但并不起眼的特性。你什么都不用設,瀏覽器自動就會換行。例如英語,瀏覽器會根據(jù)容器尺寸,選擇...
    張歆琳閱讀 8,625評論 1 7
  • 引入 外部樣式表 內(nèi)部樣式表 內(nèi)嵌樣式 此方式不利于后期維護,較少使用此方法。 語法 選擇器屬性聲明=屬性名:屬性...
    小豸閱讀 1,414評論 0 51
  • 1.CSS簡介 Cascading Style Sheet 層疊樣式表 主要用來定義頁面中的表現(xiàn),HTML 描述頁...
    hyt222閱讀 994評論 0 0
  • 1.塊級元素和行內(nèi)元素 塊級(block-level)元素;行內(nèi)(內(nèi)聯(lián)、inline-level)元素。 塊元素的...
    饑人谷_小侯閱讀 2,190評論 1 4

友情鏈接更多精彩內(nèi)容