Как получить ширину и высоту холста HTML5?



Как я могу получить ширину и высоту элемента canvas в JavaScript?



кроме того, каков "контекст" холста, о котором я продолжаю читать?

605   6  

6 ответов:

возможно, стоит посмотреть учебник: Firefox Холст Учебник

вы можете получить ширину и высоту элемента canvas просто путем доступа к этим свойствам элемента. Например:

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

контекст-это объект вы получаете от холста, чтобы позволить вам сделать это.

Ну, все ответы до этого не совсем корректны. 2 из основных браузеров не поддерживают эти 2 свойства (IE является одним из них) или используют их по-разному.

лучшее решение (поддерживается большинством браузеров, но я не проверял Safari):

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

по крайней мере, я получаю правильные значения с шириной прокрутки и высотой и должен установить холст.ширина и высота при изменении размера.

объект контекста позволяет вам манипулировать холстом; вы можете рисовать прямоугольники, например, и многое другое.

Если вы хотите получить ширину и высоту, вы можете просто использовать стандартные атрибуты HTML width и height:

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

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

ответы упомянув 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">

теперь начиная с 2015 года все (майор?) браузеры, кажется, обсыпать c.width и c.height чтобы получить полотно внутренние размер, но:

вопрос, поскольку ответы являются missleading, потому что холст имеет в принципе 2 разных/независимых размера.

"html" позволяет сказать CSS width / height и его собственный (атрибут-) width / height

смотреть на это короткий пример различных размеров, где я положил 200/200 холст в 300/100 html-элемент

в большинстве примеров (все, что я видел) нет набора css-size, поэтому они получают implizit ширину и высоту (чертежного) размера холста. Но это не обязательно, и может привести к забавным результатам, если вы берете неправильный размер - т. е. css widht / height для внутреннего позиционирования.

У меня была проблема, потому что мой холст был внутри контейнера без ID, так что я использовал этот код jQuery ниже

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

Comments

    Ничего не найдено.