自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深入學習CSS網(wǎng)頁布局中字體樣式

開發(fā) 前端
CSS網(wǎng)頁布局中默認字體樣式你是否熟悉,各個瀏覽器默認的字體種類、字體大小和字體行高都不一樣,所以我們需要統(tǒng)一設置默認的字體樣式,以便實現(xiàn)一致的顯示效果來保證設計的一致性和提高開發(fā)效率。

本文向大家描述一下CSS網(wǎng)頁布局中默認字體樣式的概念,瀏覽器默認的樣式往往在不同的瀏覽器、不同的語言版本甚至不同的系統(tǒng)版本都有不同的設置,這就導致如果直接利用默認樣式的頁面在各個瀏覽器下顯示非常不一致。

詳解CSS網(wǎng)頁布局中默認字體樣式

瀏覽器默認的樣式往往在不同的瀏覽器、不同的語言版本甚至不同的系統(tǒng)版本都有不同的設置,這就導致如果直接利用默認樣式的頁面在各個瀏覽器下顯示非常不一致,于是就有了類似YUI的reset之類用來盡量重寫瀏覽器的默認設置保證各個瀏覽器樣式一致性的做法。

  拿字體來說,各個瀏覽器默認的字體種類、字體大小和字體行高都不一樣,比如IE8的中文版在WindowsXP下顯示網(wǎng)頁時默認字體是宋體,而英文版肯定不會如此。所以我們需要統(tǒng)一設置默認的字體樣式,以便實現(xiàn)一致的顯示效果來保證設計的一致性和提高開發(fā)效率。

樣式優(yōu)先級

  通常用戶看到的頁面的樣式會受到三層控制:

  第一層是瀏覽器的默認樣式

  第二層是網(wǎng)頁定義樣式

  第三層是用戶自定義樣式

  和CSS一樣,后面的優(yōu)先級高于前面的,也就是說網(wǎng)頁定義樣式可以覆蓋瀏覽器的默認樣式,而用戶自定義樣式優(yōu)先級最高。不過,當有!important時,網(wǎng)頁樣式可以覆蓋用戶自定義樣式。用戶!important>網(wǎng)頁!important>用戶>網(wǎng)頁>瀏覽器默認。

字體:arial

  我們頁面的絕大部分內(nèi)容字符都是中文,毫無疑問目前為止在網(wǎng)頁上最常用也是最通用的顯示中文的字體是宋體,但是宋體在顯示英文、數(shù)字和英文符號時過于糟糕,比如?字符,所以我們一般期望通過CSS來實現(xiàn)用更好的字體樣式來顯示它們,然后用宋體來顯示中文和中文符號。之所以選擇arial是因為:

  Windows和Mac都預裝了這款字體,應該是使用最廣泛的網(wǎng)頁字體了。它的潛在對手tahoma和helvetica就沒有這么幸運了。
  視覺設計的專業(yè)人士可能會認為在Windows中使用tahoma、在Mac中使用helvetica更好,比如淘寶的默認字體樣式是font:12px/1Tahoma,Helvetica,Arial,"\5b8b\4f53",sans-serif;

  這是一個很不錯的選擇,但是你也會發(fā)現(xiàn)Google、YAHOO、Youtube、Bing甚至MSN的新版都使用arial作為第一默認字體。所以從美觀和可讀性上來講arial應該是完全可以接受的。

  一般情況下設置font-family都會在最后設置通用字體族以保證其安全性,比如Google的設置為font-family:arial,sans-serif;,但是至少在非中文版的Win7下當編碼是GBK時,IE8會因sans-serif來渲染宋體,導致字體出現(xiàn)變形,這就是為什么淘寶需要在sans-serif前加上宋體而Google無需這樣做的原因。

  因為中文字體的選擇非常有限,所以目前所有的主流瀏覽器都設置使用宋體來顯示中文。Baidu的首頁和搜索結(jié)果頁使用font-family:arial;可以從側(cè)面說明這樣做的安全性??赡苡腥俗⒁獾紽irefox中國版默認顯示的中文字體是微軟雅黑,這是因為謀智網(wǎng)絡擅自修改了用戶自定義樣式,不允許網(wǎng)頁的樣式覆蓋瀏覽器設置的樣式。也是由于類似的情況,我們要彈性設計網(wǎng)頁非常重要。

  使用英文字體作為第一默認字體會導致的問題之一就是中英文以及符號混排時的對齊問題、通過設置行高和hasLayout能解決絕大部分情況,但是都不會很完美,如果把字體改成“宋體”能徹底的解決問題。很明顯,這個問題只出現(xiàn)在IE上。所以,如果你的網(wǎng)站很少使用英文、數(shù)字和英文符號,那么直接設置{font-family:\5b8b\4f53;}也是很合理的選擇。

大?。?2px

  12px是宋體能顯示的極限,雖然微軟雅黑能顯示更小的字體,但目前的應用環(huán)境尚未成熟。由于宋體基本上是目前顯示中文唯一的通用Web字體,所以12px成為最常用的字體大小。我們當然可以依據(jù)產(chǎn)品的需要來修改這個默認值。
  不用考慮基于字體大?。╡m)的設計。
  在Chrome3.0之后的中文版中,字體大小最小值是12px,比如你設置最小字體為10px,最后也變成12px。

行高:1.5倍

  這是一個經(jīng)驗值,不同的產(chǎn)品對這個值要求可能不同,但我們一般會設置最常用的為默認值。比如YUI的font中是font:13px/1.231arial,helvetica,clean,sans-serif;即字體大小默認值是13px,行高是13*1.231=16.003px,默認的行高是默認字體的1.231倍。對于中文來說,常用的字體大小12px、14px、16px、18px等偶數(shù)大小,在IE6和IE7設置其行高也為偶數(shù)能解決一些特殊情況下的字體對其問題。

在IE6和IE7中,行高值必須大于字體的2px才能保證字體的完整顯示或當其作為鏈接時能有效顯示下劃線。
設置line-height時,注意不要使用單位(包括%在內(nèi)),因為子節(jié)點會繼承經(jīng)過運算后的line-height值,所以當使用單位后瀏覽器會把line-height計算成第一次定義的絕對值,而不會隨著字體大小的變化而變化,而無單位的數(shù)值表示是所在容器的font-size的倍數(shù),所以設置為無單位的數(shù)值是最佳選擇。

  深入CSS行高非常有利于理解line-height,值得一讀。

性能和效率

  大部分平臺都有arial,減少瀏覽器的查找時間。
  代碼最少,書寫方便。arial基本上是名字最短的字體了,可以節(jié)約CSS的大小。
  所有的字母都小寫,目前Google就是這樣做的,好處是既可以編寫更快也能提升Gzip壓縮的效率。
  中文最好用unicode表示,比如使用宋體是{font-family:\5b8b\4f53;},使用微軟雅黑是{font-family:\5fae\8f6f\96c5\9ed1;},這樣的好處是避免編碼問題,同時能得到所有的主流瀏覽器的支持。
使用正確的字體種類寫法,避免使用引號,這樣可以縮小CSS的大小。中文字體可以按上一條方式來編寫。

未來

  通過對中英文及符號混排的測試,我發(fā)現(xiàn)微軟雅黑其實表現(xiàn)相當不錯,包括英文數(shù)字和英文字符以及在IE6和IE7的顯示效果上,但唯一的遺憾是在XP下如果安裝了微軟雅黑字體的用戶沒有打開“使用屏幕字體的邊緣平滑”選項的話,在firefox、Safari和Opera、特別是IE6下會非常模糊難以辨認。針對這個問題目前并沒有很好的解決方案,所以只有等到IE6使用比率非常小的時候才可能正式的使用它?;蛟S需要到2014年,XP死掉的時候。

  雖然很早就有了@font-face,但是瀏覽器的支持、網(wǎng)速和商業(yè)問題,導致它很少被應用。最近關(guān)于字體的好消息是Firefox3.6將支持WebOpenFontForma。關(guān)于Web字體未來的相關(guān)信息可以看Web字體的未來、關(guān)于Web字體:現(xiàn)狀與未來和再談Web字體的現(xiàn)狀與未來。
 

【編輯推薦】

  1. 完美實現(xiàn)CSS頁面居中方法揭秘
  2. 八個困擾新手的DIV CSS網(wǎng)頁布局問題
  3. 技術(shù)分享 調(diào)用CSS Reset重設瀏覽器樣式
  4. 專家推薦 10款優(yōu)秀CSS框架
  5. 實例解析清除CSS float浮動的三種方法

 

 

責任編輯:佚名 來源: 52css.com
相關(guān)推薦

2010-08-16 11:05:54

DIV+CSS

2010-08-31 13:06:45

CSS

2010-08-25 11:05:03

CSSpaddingmargin

2010-08-26 09:58:01

CSS clear

2010-09-06 11:26:18

CSS偽類

2010-09-07 10:57:34

CSS偽類

2010-08-19 12:55:55

CSSMarginPadding

2010-09-08 13:14:03

CSS濾鏡

2010-09-14 17:20:03

CSS DIV相對定位

2010-09-01 13:17:42

CSS樣式表

2010-08-23 09:01:45

MarginPadding

2010-09-02 09:09:38

display:inlCSS

2009-11-17 14:13:34

PHP配置

2009-07-14 17:30:21

Jython語法學習

2010-10-09 10:10:55

JavaScriptFunction對象

2010-08-23 15:22:56

CSSfloat

2010-09-01 13:03:12

CSS規(guī)則

2015-09-29 08:57:46

javascript對象

2010-09-07 11:05:34

CSS邊框

2010-06-29 15:29:22

UML建模流程
點贊
收藏

51CTO技術(shù)棧公眾號