Đối với <canvas>các phần tử, các quy tắc CSS cho widthvà heightđặt kích thước thực tế của phần tử canvas sẽ được vẽ vào trang. Mặt khác, các thuộc tính HTML của widthvà heightđặt kích thước của hệ tọa độ hoặc 'lưới' mà API canvas sẽ sử dụng.
Ví dụ, hãy xem xét điều này ( 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>
Cả hai đều có cùng một thứ được vẽ trên chúng so với tọa độ bên trong của phần tử canvas. Nhưng trong khung vẽ thứ hai, hình chữ nhật màu đỏ sẽ rộng gấp đôi vì toàn bộ khung vẽ đang được kéo dài trên một diện tích lớn hơn theo quy tắc CSS.
Lưu ý: Nếu quy tắc CSS cho widthvà / hoặc heightkhông được chỉ định thì trình duyệt sẽ sử dụng các thuộc tính HTML để định kích thước cho phần tử sao cho 1 đơn vị của các giá trị này bằng 1px trên trang. Nếu những thuộc tính này không được chỉ định sau đó họ sẽ mặc định một widthsố 300và một heightcủa 150.