轉:px vs. em 95%的中國網站需要重寫CSS

來源:互聯網
上載者:User

很長一段時間,我都使用12px作為網站的主要字型大小。10px太小,眼睛很容易疲勞,14px雖容易看清,卻破壞頁面的美感。唯獨12px在審美和視力方面都恰到好處。

誰對我的網站字型大小有意見?
我老爸,他是第一個向我反映看不清我的網站文字的人。這使我意識到12px,其實只是讓我覺得很不錯而已,而對於那些視力下降明顯的中年以上的人來講,幾乎等於10px對於我的感覺。
於是我告訴他,在“查看”裡調整“文字大小”就可以了。但是卻發現這是徒勞的。在Firefox能輕易調整的字型大小,怎麼在IE就變得如此”堅不可調“?

問題出在哪
我又試著開啟中國的三大門戶—新浪,網易,搜狐。它們的字型無一例外的在IE裡失去可調性。看來這不是我網站專屬的毛病。再看看MSN,Google,A list apart,華盛頓郵報,在IE裡卻是可調的。難道IE在字型調整上也搞歧視不成?
困擾我的問題直到看到這篇大作:How to size text using ems,才得到徹底的解決。
關鍵點
1. IE無法調整那些使用px作為單位的字型大小;
2. 國外的大部分網站能夠調整的原因在於其使用了em作為字型單位;
3. Firefox能夠調整px和em,但是96%以上的中國網民使用IE瀏覽器(或核心)。這意味這中國網站的字型大小可以被認為不可調。

95%的中國網站需要重寫CSS
在我所觀察的中國網站中,包括三大門戶,以及“引領”中國網站設計潮流的藍色理想,ChinaUI等都是使用了px作為字型單位。只有百度好歹做了個可調的表率。
而在大洋彼岸,幾乎所有的主流網站都使用em作為字型單位,也就是可調的。
沒錯,px比em更加容易使用,我也敢打賭大部分讀者不知道em為何物或者它相當於多少px。
國外人士如此重視網站易用性(Accessibility),不僅因為其根生蒂固的人文精神,直接原因可能是因為有一部法律來約束他們—例如美國的Section 508,強制網站達到一定的易用性。所以沒有哪個主流網站願意被那些視力下降或是殘缺的人告上法庭。
注: 在中國, 可能把微軟告上法庭來的更簡單點,為什麼IE對於px那麼死板。

如何重寫你的網站CSS
Jorux.com作為一個對視力下降人士負責任的網站,已經重寫了CSS的Font-size部分。在這裡,Jorux和各個有人文精神的網站主討論如何用em重寫Font-szie的問題。

em vs. px

em是何物?
em指字型高,任意瀏覽器的預設字型高都是16px。所以未經調整的瀏覽器都符合: 1em=16px。那麼12px=0.75em, 10px=0.625em。為了簡化font- size的換算,需要在css中的body選取器中聲明Font-size=62.5%,這就使em值變為16px*62.5%=10px, 這樣12px=1.2em, 10px=1em, 也就是說只需要將你的原來的px數值除以10,然後換上em作為單位就行了。em有如下特點:
1. em的值並不是固定的;
2. em會繼承父級元素的字型大小。

重寫步驟:
1. body選取器中聲明Font-size=62.5%;
2. 將你的原來的px數值除以10,然後換上em作為單位;
簡單吧,如果只需要以上兩步就能解決問題的話,可能就沒人用px了。經過以上兩步,你會發現你的網站字型大得出乎想象。因為em的值不固定,又會繼承父級元素的大小,你可能會在content這個div裡把字型大小設為1.2em, 也就是12px。然後你又把選取器p的字型大小也設為1.2em,但如果p屬於content的子級的話,p的字型大小就不是12px,而是 1.2em=1.2 * 12px=14.4px。這是因為content的字型大小被設為1.2em,這個em值繼承其父級元素body的大小,也就是16px * 62.5% * 1.2=12px, 而p作為其子級,em則繼承content的字型高,也就是12px。所以p的1.2em就不再是12px,而是14.4px。
3. 重新計算那些被放大的字型的em數值。避免字型大小的重複聲明,也就是避免以上提到的1.2 * 1.2= 1.44的現象。比如說你在#content中聲明了字型大小為1.2em,那麼在聲明p的字型大小時就只能是1em,而不是1.2em, 因為此em非彼em,它因繼承#content的字型高而變為了1em=12px。

詭異的12px漢字(原因待查)
本人在完成em轉換時還發現了一個詭異的現象,就是由以上方法得到的12px(1.2em)大小的漢字在IE中並不等於直接用12px定義的字型大小,而是稍大一點。這個問題我已經解決,你只需在body選取器中把62.5%換成63%就能正常顯示了。原因可能是IE處理漢字時,對於浮點的取值精確度有限。閱讀本篇的讀者還有其他解釋嗎?
本現象只發生在12px的漢字,英文不存在此現象。你可以在這裡下載到此表現此現象的檔案。下載後請讀者用IE開啟sample.htm, 可以看到第一段文字明顯長於第二段。然後你可以用編輯器開啟style.css,看看究竟發生了什麼。解決方案就是把style.css中的62.5%換為63%。示範連結

還可以做哪些改進

為什麼還需改進:
1. 你的網站css過於複雜,以至於不知道元素的從屬關係,很難重寫css;
2. 絕大部分人看了本文之後仍然不會重寫css;
3. 很大部分人不知道瀏覽器可以調整頁面的字型大小。

所以你需要一個諸如本站資訊框中的字型大小調整控制項。
相信本站讀者的英語能力,這裡就不再羅嗦了,請參看:The Text Changer

Important reference:
1. How to size text using ems
2. The Text Changer

 

Henry註:

  • 在IE中調整文字大小的方式為:查看 –> 文字大小 –> 大小
  • 在Firefox中調整文字大小的方式為:在View –> Zoom中勾選了Zoom Text Only選項後,在進行View –> Zoom –> Zoom In/Out操作,可實現只放大文本的效果。
  • Opera中試過了,無法實現只放大文本,只能是整張網頁縮放。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.