溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

canvas無法使用rem單位的解決方案

發(fā)布時間:2021-09-14 08:45:44 來源:億速云 閱讀:159 作者:chen 欄目:web開發(fā)

這篇文章主要介紹“canvas無法使用rem單位的解決方案”,在日常操作中,相信很多人在canvas無法使用rem單位的解決方案問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”canvas無法使用rem單位的解決方案”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

CSS3中新的字體單位rem
前段時間無意中在wordpress主題中接觸到一種字體單位rem,當(dāng)時我就很好奇,畢竟以前沒有見過,于是我馬上查找資料,并測試了一回.

眾所周知在web中有很多字體單位(font-size)較常見的有em,px,讓我們對比一下這兩種單位:

px是絕對值,準(zhǔn)確而穩(wěn)定.但是它的改變會影響頁面布局.
em是相對值,它以父元素的大小為基準(zhǔn)單位,來計算大小.所以很難把握.
考慮到這么多字體單位的優(yōu)缺點,在CSS3中rem誕生了.rem也是相對單位(rem=root em)很明顯rem是由em變化而來,或者說rem是em的升級版,具體來歷.我們就不要去追究了,從字體表面上看,它就是這么回事.

root em,就是相對于根目錄的em而不是相對于父元素,也就是說,它雖然是絕對值,但是只是相對于根目錄來說也就是html,它不會隨著其它元素的改變而改變.也就是說,我們只要設(shè)定html的文字大小就可以了.而不用考慮其它因素.

而且他還具有非常好的支持Chrome,Firefox,Safari,Opera,IE9+.IE6,7,8就只能使用px或者em了.

XML/HTML Code復(fù)制內(nèi)容到剪貼板

  1. html{      

  2.     font-size:62.5%;      

  3. }  

為什么要這么設(shè)置呢?因為網(wǎng)頁上的字體默認是16px,而16px的62.5%就是10px;也就是說這樣的活1rem就等于10px,這個對于我們來說是非常棒的,font-size:1.2rem,當(dāng)然為了兼容IE的低級版本還要寫font-size:12px,別忘了要寫在rem的前面.

在這里我要提到一點的就是,假如你要是用rem來設(shè)置行高,邊距之類的單位.請在html中加入這么一句話:-webkit-text-size-adjust:none;來消除webkit的默認屬性.否則在其它的地方rem不是以根目錄作為基準(zhǔn)值了.

canvas無法使用rem單位的解決方案
我們在使用canvas時需要設(shè)置畫布的大小,即設(shè)置canvas標(biāo)簽的width,height屬性。

XML/HTML Code復(fù)制內(nèi)容到剪貼板

  1. <canvas width="200px" height="200px"></canvas>  

在移動端,畫布的大小要根據(jù)屏幕的大小進行適配,我們一般采用rem結(jié)合媒體查詢的方式。使用canvas時就遇到遇到一些問題:

canvas的width屬性不支持rem單位(如果使用樣式當(dāng)然支持rem,但注意canvas的width屬性與style中的width是有區(qū)別的),如下

CSS Code復(fù)制內(nèi)容到剪貼板

  1. <canvas width="2.5rem" height="2.5rem"></canvas>  

translate方法傳參是坐標(biāo)位置,不帶單位,如ctx.translate(10,10);
適配屏幕是必須的,但如何解決?用最原始的百分比布局就可以:

  1. //獲取屏幕的寬度   

  2. var  clientWidth = document.documentElement.clientWidth;   

  3. //根據(jù)設(shè)計圖中的canvas畫布的占比進行設(shè)置   

  4. var canvasWidth = Math.floor(clientWidth*200/720);   

  5. canvas.setAttribute('width',canvasWidth+'px');   

  6. canvas.setAttribute('height',canvasWidth+'px');   

  7. //translate方法也可以直接傳入像素點坐標(biāo)  

到此,關(guān)于“canvas無法使用rem單位的解決方案”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI