輕松掌握CSS3中的字體大小單位rem的使用方法

CSS3中新的字體單位rem
前段時(shí)間無意中在wordpress主題中接觸到一種字體單位rem,當(dāng)時(shí)我就很好奇,畢竟以前沒有見過,于是我馬上查找資料,并測(cè)試了一回.
眾所周知在web中有很多字體單位(font-size)較常見的有em,px,讓我們對(duì)比一下這兩種單位:
px是絕對(duì)值,準(zhǔn)確而穩(wěn)定.但是它的改變會(huì)影響頁(yè)面布局.
em是相對(duì)值,它以父元素的大小為基準(zhǔn)單位,來計(jì)算大小.所以很難把握.
考慮到這么多字體單位的優(yōu)缺點(diǎn),在CSS3中rem誕生了.rem也是相對(duì)單位(rem=root em)很明顯rem是由em變化而來,或者說rem是em的升級(jí)版,具體來歷.我們就不要去追究了,從字體表面上看,它就是這么回事.
root em,就是相對(duì)于根目錄的em而不是相對(duì)于父元素,也就是說,它雖然是絕對(duì)值,但是只是相對(duì)于根目錄來說也就是html,它不會(huì)隨著其它元素的改變而改變.也就是說,我們只要設(shè)定html的文字大小就可以了.而不用考慮其它因素.
而且他還具有非常好的支持Chrome,Firefox,Safari,Opera,IE9+.IE6,7,8就只能使用px或者em了.
- html{
- font-size:62.5%;
- }
為什么要這么設(shè)置呢?因?yàn)榫W(wǎng)頁(yè)上的字體默認(rèn)是16px,而16px的62.5%就是10px;也就是說這樣的活1rem就等于10px,這個(gè)對(duì)于我們來說是非常棒的,font-size:1.2rem,當(dāng)然為了兼容IE的低級(jí)版本還要寫font-size:12px,別忘了要寫在rem的前面.
在這里我要提到一點(diǎn)的就是,假如你要是用rem來設(shè)置行高,邊距之類的單位.請(qǐng)?jiān)趆tml中加入這么一句話:-webkit-text-size-adjust:none;來消除webkit的默認(rèn)屬性.否則在其它的地方rem不是以根目錄作為基準(zhǔn)值了.
canvas無法使用rem單位的解決方案
我們?cè)谑褂胏anvas時(shí)需要設(shè)置畫布的大小,即設(shè)置canvas標(biāo)簽的width,height屬性。
- <canvas width="200px" height="200px"></canvas>
在移動(dòng)端,畫布的大小要根據(jù)屏幕的大小進(jìn)行適配,我們一般采用rem結(jié)合媒體查詢的方式。使用canvas時(shí)就遇到遇到一些問題:
canvas的width屬性不支持rem單位(如果使用樣式當(dāng)然支持rem,但注意canvas的width屬性與style中的width是有區(qū)別的),如下
- <canvas width="2.5rem" height="2.5rem"></canvas>
translate方法傳參是坐標(biāo)位置,不帶單位,如ctx.translate(10,10);
適配屏幕是必須的,但如何解決?用最原始的百分比布局就可以:
- //獲取屏幕的寬度
- var clientWidth = document.documentElement.clientWidth;
- //根據(jù)設(shè)計(jì)圖中的canvas畫布的占比進(jìn)行設(shè)置
- var canvasWidth = Math.floor(clientWidth*200/720);
- canvas.setAttribute('width',canvasWidth+'px');
- canvas.setAttribute('height',canvasWidth+'px');
- //translate方法也可以直接傳入像素點(diǎn)坐標(biāo)
相關(guān)文章
- 本篇文章主要介紹了詳解CSS3 rem(設(shè)置字體大小) 教程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-21