CSS必知必會集錦(四):字型和文字
編者注:本集錦摘編自圖靈新書《CSS設計師指南(第3版)》第4章“字型和文字”,是作者從相關主題中提煉出來的短小精悍的提示和法則。其中,既包含業界公認的CSS最佳實踐,又不乏作者獨到的一家之言,還有很多有價值的參考資料。理解這些CSS知識點,對夯實基礎,開闊視野是至關重要的。
據測試,
font-family
的值(字型名)不區分大小寫。但是,你可不能修改Google或其他線上字型庫生成的字型名,否則很可能無法使用它們提供的定製字型。如果字型名像Trebuchet MS一樣多於一個單詞(有空格),應該加上引號。
“x高度”指英文字母不包含(字母d和p都有的)上伸部分和下伸部分的主要區域,恰好x沒有這些部分,所以就用它的高度來度量。
關於如何選擇字型,大家有空看看這篇文章:http://unitinteractive.com/blog/2008/06/26/better-css-font-stacks/。
哪些字型是在所有瀏覽器中都能用的?
這個問題很多人都會問,但卻沒有肯定的答案。不過,從概率的角度看,以下字型是Mac和PC中安裝率最高的。
隨著手機和平板電腦的普及, 字型可用性越來越難以預測。因此,在字型棧中指定通用字型族也變得越來越重要。如果你想設定一種自己Web伺服器上的特殊字型,讓使用者可以隨頁面下載它,可以參考本章4.3節“Web字型大揭祕”。
設定絕對字型大小時,也可以使用關鍵字值,比如
x-small
、medium
、x-large
,等等。其中,medium
等於基準大小,其他關鍵字要麼小一點,要麼大一點。關鍵字值涵蓋的範圍太窄,所以使用不廣泛,如果你感興趣,可以看看這篇文章:http://css-discuss.incutio.com/wiki/Using_Keywords(注意大小寫)。
如果你想使用em,但又需要設定具體的畫素大小,可以把
body
的font-size
設定為62.5%
。這樣,就等於把基準大小從16畫素改為10畫素(16×62.5%=10)。然後,em與畫素的對應關係就十分明確了,比如1em等於10畫素,1.5em等於15畫素,2em等於20畫素,等等。
在使用者使用“檢視 > 文字大小”選單調整網頁文字大小的時候,IE9及更早版本只能縮放以相對單位設定的文字(使用畫素之類的絕對單位設定的文字無法縮放)。換句話說,使用rem單位在IE7和IE6中存在一個小小的副作用,那就是這些瀏覽器的使用者必須使用“檢視 > 縮放”來調整整個頁面的大小。當然,這也算一個應該升級到現代瀏覽器的原因吧。
實際上,在設定
font-size
屬性的同時,可以順便設定line-height
(行高)值。也就是說,字型大小和行高的值可以寫在一塊,比如12px/1.5
。當然,line-height
是文字屬性,下一節我們會講到它。
必須注意,上網的人都習慣了把帶下劃線的文字當成連結。如果你給本來不是連結的文字加上下劃線,很容易導致困惑和無效點選。
相信不少讀者是頭一次聽說“空鉛”這個術語,怎麼會有這種叫法呢?在鉛活字印刷時代,兩行字模之間的空白區域是通過向其中加入細鉛條實現的。
Web專家Paul Irish寫過一個跨瀏覽器
@font-face
的“笑臉版”,可以保證使用者機器中萬一安裝了同名字型時不會混淆,詳細內容請參考這篇文章:http://paulirish.com/2009/bulletproof-font-face-implementation-syntax/。
如果想深入理解
@font-face
規則,建議讀一讀Tim Brown的部落格文章“How to use @font-face”:http://nicewebtype.com/notes/2009/10/30/how-to-use-css-font-face/。
值為
1.0em
的font-size
只是顯式地宣告瞭預設字型大小,並沒有修改什麼。但為了將來修改頁面中所有文字的字型更方便,必須在font
快捷屬性中同時設定字型大小,而且要使用相對單位em。
HTML實體引用
以下網站中列出了HTML實體:
- http://htmlhelp.com/reference/html40/entities/special.html;
- http://code.stephenmorley.org/html-and-css/character-entity-references-cheat-sheet。
上面第一個連結中既包含HTML實體值,也包含實體需要作為
::before
和::after
偽元素內容時的十六進位制值。舉個例子,如果你想在偽元素中新增十六進位制值“
(左雙引號),則需要改寫成如下所示:
e::before {content:"\201C";}
就是在數字前面加了一個反斜槓。相應地,右雙引號的十六進位制值改寫後是
\201D
。在HTML標記中,必須把所有和號(&)和小於號(<)都替換成相應的HTML實體,也就是
&
和<
。因為“&”是實體的第一個字元,而“<”是HTML標籤的第一個字元,它們都有特殊含義。如果不替換的話,瀏覽器一看到它們就會當成實體和標籤來解釋後面的內容。
排版資源
http://ilovetypography.com 在這個網站上,你可以跟著設計師John Boardley一起深思,欣賞每一頁中別具一格的排版。
http://www.thinkingwithtype.com 這是Thinking with Type一書的網站,作者Ellen Lupton。網站中展示了很多漂亮又經典的版式,還包含一些字型及字型族的資訊。
http://webtypography.net 這個站點自稱為The Elements of Typographic Style Applied to the Web—A practical guide to web typography。跟隨網站的目錄,可以找到各種常用的排版知識和技巧。
相關文章
- CSS必知必會集錦(二):CSS工作原理CSS
- CSS必知必會集錦(六):介面元件CSS元件
- CSS必知必會集錦(三):定位元素CSS
- CSS必知必會集錦(五):頁面佈局CSS
- CSS必知必會集錦(一):HTML標記與文件結構CSSHTML
- Kafka叢集搭建及必知必會Kafka
- git必會必知Git
- Activity 必知必會
- Redis 必知必會Redis
- MySQL 必知必會MySql
- ThreadLocal必知必會thread
- Linux必會必知Linux
- JSON 必知必會JSON
- Megaraid 必知必會AI
- notion database 必知必會Database
- 面試必備問題集錦面試
- Linux shell必知必會Linux
- Redis 必知必會之 APIRedisAPI
- mysql必知必會筆記MySql筆記
- Linux 程式必知必會Linux
- HTTP 必知必會的那些HTTP
- 01-mysql必知必會MySql
- Mysql必知必會練習MySql
- webpack入門必知必會Web
- Java必知必會之socketJava
- IT運維技能必知必會!運維
- Android必知必會的四大元件 -- Service篇Android元件
- Android必知必會的四大元件 -- Activity篇Android元件
- 【必知必會的MySQL知識】①初探MySQLMySql
- 【必知必會的MySQL知識】②使用MySQLMySql
- CSS必知必會:從z-index到層疊上下文CSSIndex
- Java必知必會之(四)---多執行緒全揭祕(上)Java執行緒
- Java必知必會之(四)--多執行緒全揭祕(下)Java執行緒
- Redis 必知必會之持久化Redis持久化
- SQL必知必會筆記(上)SQL筆記
- SQL必知必會筆記(下)SQL筆記
- Java必知必會之註解Java
- Flutter 外掛使用必知必會Flutter