CSS3中新的字體單位rem
前段時間無意中在wordpress主題中接觸到一種字體單位rem,當時我就很好奇,畢竟以前沒有見過,于是我馬上查找資料,并測試了一回.
眾所周知在web中有很多字體單位(font-size)較常見的有em,px,讓我們對比一下這兩種單位:
px是絕對值,準確而穩定.但是它的改變會影響頁面布局.
em是相對值,它以父元素的大小為基準單位,來計算大小.所以很難把握.
考慮到這么多字體單位的優缺點,在CSS3中rem誕生了.rem也是相對單位(rem=root em)很明顯rem是由em變化而來,或者說rem是em的升級版,具體來歷.我們就不要去追究了,從字體表面上看,它就是這么回事.
root em,就是相對于根目錄的em而不是相對于父元素,也就是說,它雖然是絕對值,但是只是相對于根目錄來說也就是html,它不會隨著其它元素的改變而改變.也就是說,我們只要設定html的文字大小就可以了.而不用考慮其它因素.
而且他還具有非常好的支持Chrome,Firefox,Safari,Opera,IE9+.IE6,7,8就只能使用px或者em了.
為什么要這么設置呢?因為網頁上的字體默認是16px,而16px的62.5%就是10px;也就是說這樣的活1rem就等于10px,這個對于我們來說是非常棒的,font-size:1.2rem,當然為了兼容IE的低級版本還要寫font-size:12px,別忘了要寫在rem的前面.
在這里我要提到一點的就是,假如你要是用rem來設置行高,邊距之類的單位.請在html中加入這么一句話:-webkit-text-size-adjust:none;來消除webkit的默認屬性.否則在其它的地方rem不是以根目錄作為基準值了.
canvas無法使用rem單位的解決方案
我們在使用canvas時需要設置畫布的大小,即設置canvas標簽的width,height屬性。
在移動端,畫布的大小要根據屏幕的大小進行適配,我們一般采用rem結合媒體查詢的方式。使用canvas時就遇到遇到一些問題:
canvas的width屬性不支持rem單位(如果使用樣式當然支持rem,但注意canvas的width屬性與style中的width是有區別的),如下
translate方法傳參是坐標位置,不帶單位,如ctx.translate(10,10);
新聞熱點
疑難解答