Для <canvas>
элементов, правила CSS для width
и height
установить фактический размер элемента холста, который будет обращено страница. С другой стороны, атрибуты HTML width
и height
задают размер системы координат или «сетки», которые будет использовать API-интерфейс холста.
Для примера рассмотрим это (jsfiddle):
var ctx = document.getElementById('canvas1').getContext('2d');
ctx.fillStyle = "red";
ctx.fillRect(10, 10, 30, 30);
var ctx2 = document.getElementById('canvas2').getContext('2d');
ctx2.fillStyle = "red";
ctx2.fillRect(10, 10, 30, 30);
canvas {
border: 1px solid black;
}
<canvas id="canvas1" style="width: 50px; height: 100px;" height="50" width="100"></canvas>
<canvas id="canvas2" style="width: 100px; height: 100px;" height="50" width="100"></canvas>
Оба имели то же самое, нарисованные на них относительно внутренних координат элемента холста. Но во втором холсте красный прямоугольник будет в два раза шире, потому что полотно в целом растягивается на большую область с помощью правил CSS.
Примечание: Если правила CSS для width
и/или height
не указаны, браузер будет использовать атрибуты HTML для определения размера элемента таким образом, чтобы 1 единица этих значений равнялась 1px на странице.Если эти атрибуты не указаны, то они будут по умолчанию равны width
из 300
и height
из 150
.
действительно .. Я всегда думал, что прямые атрибуты, как «ширина» и «высота» были устаревшими в последних версиях html. – Sirber
О, по-видимому, это довольно хорошо описано на http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#attr-canvas- width (раздел '# attr-canvas-width'). Проблема в том, что я нажал на неправильную 'width' раньше и вместо этого перешел в раздел' # dom-canvas-width'. Подано http://www.w3.org/Bugs/Public/show_bug.cgi?id=9469 об этом. – SamB
ты спас мне страшную головную боль .... спасибо! – nurxyz