31 lines
2.2 KiB
Markdown
31 lines
2.2 KiB
Markdown
---
|
||
title: Canvas Dimensions
|
||
localeTitle: Размеры холста
|
||
---
|
||
## Размеры холста
|
||
|
||
Атрибуты `width` и `height` будут определять размер холста. Эти атрибуты управляют размером холста чертежа, а не фактическим отображаемым размером.
|
||
|
||
См. [Демонстрацию размеров](https://codepen.io/alanluo/pen/jLWMmM/) [полотна](https://codepen.io/alanluo) Pen Alan Luo ( [@alanluo](https://codepen.io/alanluo) ) на [CodePen](https://codepen.io) .
|
||
|
||
В приведенном выше перо оба элемента `canvas` имеют одинаковые размеры, установленные через CSS. Тем не менее, в два раза больше высоты, установленной через атрибут `height` , что приводит к тому, что один и тот же прямоугольник становится отображаемым на половине высоты.
|
||
|
||
Это может вызвать проблемы, когда вы хотите создать холст с динамическим размером. Для instnace вы можете сделать полноэкранный холст или использовать холст в виде миниатюры.
|
||
|
||
Чтобы размер контекста рисования соответствовал визуализированному размеру элемента `canvas` , мы должны заставить его в реальном времени. Одной из распространенных практик является включение в обработчик `onResize` следующего обработчика.
|
||
|
||
```js
|
||
// somewhere early in the script
|
||
var canvas = document.getElementById("canvas");
|
||
...
|
||
|
||
window.addEventListener("resize", function() {
|
||
canvas.setAttribute("width", canvas.scrollWidth);
|
||
canvas.setAttribute("height", canvas.scrollHeight);
|
||
console.log(canvas.offsetWidth);
|
||
});
|
||
```
|
||
|
||
#### Дополнительная информация:
|
||
|
||
* [API холста MDN](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) |