1. 程式人生 > >canvas標籤的width和height以及style.width和style.height的區別

canvas標籤的width和height以及style.width和style.height的區別

由於HTML5 Canvas本身的特殊性,所以其大小的設定是很有講究的。下面我們先來看看Canvas一般的寫法。

HTML5 標籤用法程式碼顯示

HTML程式碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Canvas width(寬)與height(高)</title>
    <style>
        canvas{border: 1px solid #ccc}
    </style
>
</head> <body> <canvas id="mycanvas">瀏覽器不支援Canvas,請升級或改用其它瀏覽器!</canvas> <script src="./js/canvas.js"></script> </body> </html>

JavaScript程式碼

window.onload = function(){
    var mycanvas = document.getElementById('mycanvas');
    var ctx = mycanvas.getContext('2d'
); ctx.font ='28px Arial'; ctx.fillStyle = '#0099CC'; ctx.fillText('雲庫網 - 前端開發',35,30); }

Canvas大小的修改有三種方法

方法一:通過CSS樣式來控制Canvas元素,具體程式碼如下

canvas{border: 1px solid #ccc;width: 600px;height: 300px;}

這裡給canvas加了一個邊框樣式,只是為了方便大家檢視元素變化。

方法二:直接在canvas標籤內定義width和height。具體程式碼如下

<canvas id="mycanvas"
width='580' height='350' >
瀏覽器不支援Canvas,請升級或改用其它瀏覽器!</canvas>

方法三:在JS程式碼裡面設定width和height,在var ctx = mycanvas.getContext(‘2d’);後面追加如下程式碼

mycanvas.width = 580;
mycanvas.height = 350;

程式碼裡的mycanvas就是前面通過var mycanvas = document.getElementById(‘mycanvas’);獲取的canvas物件,這個根據具體情況進行替換就好了。

那麼兩個 問題來了,如果你有測試過這兩種方法的話,你就會發現通過CSS樣式控制與直接在Canvas標籤內定義width(寬)和height(高),他們在瀏覽器上顯示的效果是不一樣的。通過CSS樣式控制的canvas裡面的內容會被自動放大了。而在Canvas標籤內容定義的width和height就不會。這是為什麼呢?

原來Canvas標籤包涵兩個東西,一個是元素本身,另一個是元素繪圖表面(drawing surface)。他們都有著自己各自的尺寸大小。所在canvas的大小實際上是指兩方面的,元素本身的大小和元素繪圖表面大小。Canvas元素本身和元素繪圖表面預設的大小都是300x150畫素。

前面提到的兩個設定Canvas大小的方法的區別在於,通過CSS設定Canvas大小時,只對Canvas元素本身的大小進行設定,而沒有對元素繪圖表面大小進行設定,所以元素繪圖表面是預設大小300x150畫素。當Canvas元素本身大小與元素繪圖表面不一樣時,瀏覽器會對元素繪圖表面進行縮放,使其符合元素大小。所以就會出現上面看到的兩中不同的效果。而在canvas標籤內直接定義width和height就不一樣了,它是同時定義元素本身大小和元素繪圖表面大小。通過JS來定義與在canvas標籤內定義效果是一樣的。

相關推薦

新手初入Java(二)資料型別、變數常量以及拆包

資料型別、變數和常量以及拆包和裝包 一、資料型別 Java資料型別分為基本型別(primitive types)和引用型別(reference type),其中基本型別又分為數值型、字元型、布林型。引用型別又分為類型別、介面型別、陣列型別、null型別。這兩種大的型別包含了int

自制爬蟲,爬取分類總閱讀量,總評論量。全部文章閱讀量以及評論量。但是發現數據不對

def tt(a,name): global ss global cc sum = 0 com = 0 pages = 10 x = 1 nn = [] mm = [] 其中global,很重要。沒有這個global會

C#:區分:重寫、覆蓋過載以及虛方法抽象方法

(一)重寫和覆蓋: 重寫: 在宣告時,父類的方法前面加上virtual關鍵字,子類的方法前面加上override關鍵字,且與父類方法同名,表示父類的方法可以被子類進行修改和重新定義。 覆蓋: 在宣告子類方法的時候,新增new關鍵字,定義與父類同名的方法,

extjs 迴圈執行多個非同步請求時,引數後臺以及相關問題衍生問題的處理

在Extjs中,非同步請求的寫法: Ext.Ajax.request({ url: '***.action', //async: false, params: { p1: v1, p2: v2 ... }, success: function(resp

POSTGET以及同步請求非同步請求的區別

一、HTTP是應用層的網路傳輸協議,對於HTTP的請求方式主要流行的GET請求與POST請求對於GET請求與POST請求的區別 1.GET請求,伺服器以及引數都會出現在請求介面中,也就是請求引數也是介面的一部分,而POST請求在介面中只有伺服器地址,而引數會作為請求提交

python 分離檔名路徑 以及 分離檔名字尾

分離路徑和檔名: os.path.split() 區分檔案的名字和字尾: os.path.splitext() import os file_path = "D:/test/test.py" (filepath, tempfilename) = os.path.

HTML連載34-背景關聯縮寫以及插圖圖片背景圖片的區別

一、背景屬性縮寫的格式 1.backgound:背景顏色  背景圖片  平鋪方式  關聯方式  定位方式 2.注意點: 這裡的所有值都可以省略,但是至少需要一個 3.什麼是背景關聯方式 預設情況下,背景圖片會隨著滾動條的滾動而滾動,如果不想這樣,那麼我們可以修改它們的關

canvas標籤widthheight以及style.widthstyle.height區別

由於HTML5 Canvas本身的特殊性,所以其大小的設定是很有講究的。下面我們先來看看Canvas一般的寫法。 HTML5 標籤用法程式碼顯示 HTML程式碼 <!DOCTYPE html> <html lang="en">

用javascript控制css中style.heightstyle.width時應注意px單位問題

divSlider.style.height = 1000; //在chrome不管用 divSlider.style.height = "500px"; //這樣就好了 1、document.getElementById('div').style.height=

canvas裡設定widthcss裡設定widthjs裡設定width區別

 canvas.width 和 它的style.width是不一樣的:         canvas是個畫布,有他自己的寬和高(預設是沒有單位的純數字),就是canvas.width和canvas.height的寬和高,     &nb

style.width offsetwidth的區別

當我使用JS的時候 , 我發現有時候用style.width不能獲取元素的值. 後面我才明白 style.width只能獲取當前元素的行間樣式,不能獲取元素的內部樣式 當你的width或者height寫在CSS樣式中的時候,在JS裡你的style不能獲取到width,

js獲取瀏覽器設備相關width(屏幕的寬度)

view dev viewport document one size ini left cal 首先呢,我們將iPhone手機的相關數據表示如下 我們要理解很多東西,比如邏輯分辨率、物理分辨率、縮放因子、ppi等,這裏先不討論。 首先呢,我們先介紹下各個屏幕寬度: 網

***獲取螢幕寬高 :width(),height(),clientHeight,clientWidth 獲取寬高的區別*

獲取螢幕寬高 :width(),height(),clientHeight,clientWidth 獲取寬高的區別 $(window).width() & $(window).height():獲得的是螢幕可視區域的寬高,不包括滾動條與工具條。 $(window).heigh

vue練習demo 實現簡單的輪播圖,方法簡單快捷,使用到transition-group標籤增加使用者體驗 以及vue中的class與style繫結

結構程式碼:      <div class="slider"> <div class="slidershow"> <!-- <transition-group tag="ul">

使用mybatis提供的各種標籤方法實現動態拼接Sql。這裡演示where標籤if標籤實現使用姓名的模糊查詢性別查詢使用者列表,當用戶沒有選擇姓名以及性別時查詢出所有的記錄。

1.需求:   使用姓名的模糊查詢和性別查詢使用者列表,當用戶沒有選擇姓名以及性別時查詢出所有的記錄。 2.在UserMapper介面中定義方法:   public List<User> findUserByNameAndSex(User user); 3.在UserMapper.xml中

ChromeSafari瀏覽器jquery width()獲取不到高度的問題

問題概要 : 偶要遍歷一組圖片,遍歷時需要獲取其寬度,效果出來後,IE和Firefox都沒有問題,唯獨Chrome和Safari會出現獲取不到圖片寬度的情況。以往基本上是IE不相容,這下出現Chrome和Safari不相容了,倒覺得稀奇了,故寫出來分享下。 注:程式

web前段設計之痛:手機瀏覽器pc瀏覽器的width:100%的自適應問題

Tips: 除錯 iPad 或 iPhone 可在設定中啟動除錯模式,在 Mac 中的 Safari 瀏覽器 同樣開啟開發者模式後,進行聯機除錯。功能彪悍。 最近在做一個頁面時,發現在 iPad 的 Safari 瀏覽器中背景顯示不全,定位到該 div 後發現所指定 cs

XHTML:非IE瀏覽器裡對style.width賦值無效的問題

在做JSP頁面時,除錯div的高度的時候,在IE等瀏覽器裡都已經測試通過沒有任何問題,但是在Chrome、Mozilla、Firefox、Netscape裡測試時問題就來了,我的多頁面是在頁面裡用到了 iframe,這些 iframe 初始的 style.height 都

基於js中style.width與offsetWidth的區別

作為一個初學者,經常會遇到在獲取某一元素的寬度(高度、top值...)時,到底是用 style.width還是offsetWidth的疑惑。1. 當樣式寫在行內的時候,如 <div id="box" style="width:100px">時,用 style.wi

去掉html標籤標籤之間的空格以及標籤內容之間的空格

看程式碼: <?php if(!function_exists('test')) {function test($str){             $str = preg_replace('/(?<=\>)[\s]+(?=\<)/i','', $s