這篇文章主要介紹“canvas無(wú)法使用rem單位的解決方案”,在日常操作中,相信很多人在canvas無(wú)法使用rem單位的解決方案問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”canvas無(wú)法使用rem單位的解決方案”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
創(chuàng)新互聯(lián)成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元通榆做網(wǎng)站,已為上家服務(wù),為通榆各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
CSS3中新的字體單位rem
前段時(shí)間無(wú)意中在wordpress主題中接觸到一種字體單位rem,當(dāng)時(shí)我就很好奇,畢竟以前沒有見過,于是我馬上查找資料,并測(cè)試了一回.
眾所周知在web中有很多字體單位(font-size)較常見的有em,px,讓我們對(duì)比一下這兩種單位:
px是絕對(duì)值,準(zhǔn)確而穩(wěn)定.但是它的改變會(huì)影響頁(yè)面布局.
em是相對(duì)值,它以父元素的大小為基準(zhǔn)單位,來(lái)計(jì)算大小.所以很難把握.
考慮到這么多字體單位的優(yōu)缺點(diǎn),在CSS3中rem誕生了.rem也是相對(duì)單位(rem=root em)很明顯rem是由em變化而來(lái),或者說(shuō)rem是em的升級(jí)版,具體來(lái)歷.我們就不要去追究了,從字體表面上看,它就是這么回事.
root em,就是相對(duì)于根目錄的em而不是相對(duì)于父元素,也就是說(shuō),它雖然是絕對(duì)值,但是只是相對(duì)于根目錄來(lái)說(shuō)也就是html,它不會(huì)隨著其它元素的改變而改變.也就是說(shuō),我們只要設(shè)定html的文字大小就可以了.而不用考慮其它因素.
而且他還具有非常好的支持Chrome,Firefox,Safari,Opera,IE9+.IE6,7,8就只能使用px或者em了.
XML/HTML Code復(fù)制內(nèi)容到剪貼板
html{
font-size:62.5%;
}
為什么要這么設(shè)置呢?因?yàn)榫W(wǎng)頁(yè)上的字體默認(rèn)是16px,而16px的62.5%就是10px;也就是說(shuō)這樣的活1rem就等于10px,這個(gè)對(duì)于我們來(lái)說(shuō)是非常棒的,font-size:1.2rem,當(dāng)然為了兼容IE的低級(jí)版本還要寫font-size:12px,別忘了要寫在rem的前面.
在這里我要提到一點(diǎn)的就是,假如你要是用rem來(lái)設(shè)置行高,邊距之類的單位.請(qǐng)?jiān)趆tml中加入這么一句話:-webkit-text-size-adjust:none;來(lái)消除webkit的默認(rèn)屬性.否則在其它的地方rem不是以根目錄作為基準(zhǔn)值了.
canvas無(wú)法使用rem單位的解決方案
我們?cè)谑褂胏anvas時(shí)需要設(shè)置畫布的大小,即設(shè)置canvas標(biāo)簽的width,height屬性。
XML/HTML Code復(fù)制內(nèi)容到剪貼板
<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ū)別的),如下
CSS Code復(fù)制內(nèi)容到剪貼板
<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)于“canvas無(wú)法使用rem單位的解決方案”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
網(wǎng)頁(yè)題目:canvas無(wú)法使用rem單位的解決方案
分享鏈接:http://www.chinadenli.net/article6/jogpog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、App開發(fā)、小程序開發(fā)、動(dòng)態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)