2010-10-27 113 views

回答

82

這可能是值得考慮的一個教程:Firefox Canvas Tutorial

您可以通過訪問該元素的那些屬性得到了canvas元素的寬度和高度。例如:

var canvas = document.getElementById('mycanvas'); 
var width = canvas.width; 
var height = canvas.height; 

上下文是您從畫布中獲取的對象,以便您可以將其繪製到該對象中。

+0

請注意,不幸的是,Mozilla教程現在基本上是一堆斷開的鏈接。希望他們有一天能解決它。 – 2013-06-18 12:05:47

+1

這將返回Chrome 31中的上下文畫布大小。 – shuji 2013-12-03 04:09:40

+5

只有當width和height被直接指定爲標籤屬性 – vladkras 2017-03-07 14:40:24

17

上下文對象允許您操作畫布;你可以繪製矩形例如更多。

如果你想獲得的寬度和高度,你可以使用標準的HTML屬性widthheight

var canvas = document.getElementById('yourCanvasID'); 
var ctx = canvas.getContext('2d'); 

alert(canvas.width); 
alert(canvas.height); 
+3

這個回答與@ andrewmu's非常相似,並且如果您的大小通過CSS的畫布。看到[我的答案](http://stackoverflow.com/questions/4032179/how-do-i-get-the-width-and-height-of-a-html5-canvas/31195651#31195651)爲更強大解。 – 2015-07-02 22:26:45

28

嘛,是不完全正確的所有問題的答案之前。主要瀏覽器中的2個不支持這兩個屬性(IE是其中之一),或者以不同的方式使用它們。

更好的解決方案(大多數瀏覽器都支持,但我沒有檢查Safari瀏覽器):

var canvas = document.getElementById('mycanvas'); 
var width = canvas.scrollWidth; 
var height = canvas.scrollHeight; 

至少我得到scrollWidth和 - 高度正確的價值觀和必須設置canvas.width和高度時,它是調整大小。

+0

IE9的確支持canvas.width和height(好的,9之前的版本根本不支持canvas),我剛剛給它一下。你遇到了什麼麻煩?另一個主要的瀏覽器是哪一個? – thomanski 2012-12-30 00:11:19

+1

對,我真的永遠不會更新IE,因爲我不使用它。另一個主要的瀏覽器是Opera在調整大小時沒有/沒有更新寬度和高度。 – Bitterblue 2013-01-03 10:17:50

+2

canvas.width/height在firefox中不起作用 – schwiz 2013-02-14 18:30:43

7

現在開始2015年,所有(主要?)瀏覽器似乎alow c.widthc.height得到畫布內部大小,但:

的答案missleading的問題,因爲帆布已原則上2不同/獨立的尺寸。

的「HTML」可以說,CSS寬度/高度和它自己的(屬性 - )寬度/高度

看看這個short example of different sizing,在這裏我把200/200帆布爲300/100 HTML元素

大多數例子(我看到的都是)沒有css大小的設置,所以它會得到(繪圖)大小的寬度和高度。但是這不是必須的,並且如果你採取了錯誤的尺寸 - 即可以產生有趣的結果。 css widht /內部定位的高度。

14

提及canvas.width的答案返回畫布的內部尺寸,即那些在創建元素時指定:

<canvas width="500" height="200"> 

如果大小與CSS畫布,它的DOM尺寸通過.scrollWidth.scrollHeight可訪問:

var canvasElem = document.querySelector('canvas'); 
 
document.querySelector('#dom-dims').innerHTML = 'Canvas DOM element width x height: ' + 
 
     canvasElem.scrollWidth + 
 
     ' x ' + 
 
     canvasElem.scrollHeight 
 

 
var canvasContext = canvasElem.getContext('2d'); 
 
document.querySelector('#internal-dims').innerHTML = 'Canvas internal width x height: ' + 
 
     canvasContext.canvas.width + 
 
     ' x ' + 
 
     canvasContext.canvas.height; 
 

 
canvasContext.fillStyle = "#00A"; 
 
canvasContext.fillText("Distorted", 0, 10);
<p id="dom-dims"></p> 
 
<p id="internal-dims"></p> 
 
<canvas style="width: 100%; height: 123px; border: 1px dashed black">

+0

這是正確的答案。 2個維度要考慮。 – Nadir 2016-01-17 02:39:40

+2

這應該是選定的答案。如果您不指定任何值並使用相對大小調整(使用引導程序...等),直接調用'width'和'height'將始終返回300x150。謝謝。 – mcy 2016-02-05 09:30:04

-1

我,因爲有一個問題我的畫布是在一個沒有ID的容器裏面,所以我用下面的這個jQuery代碼

$('.cropArea canvas').width()