<canvas>: The Graphics Canvas element
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Sử dụng phần tử HTML <canvas> với canvas scripting API hoặc WebGL API để vẽ đồ họa và hoạt ảnh.
Thuộc tính
Các thuộc tính của phần tử này bao gồm thuộc tính toàn cục.
height-
Chiều cao của không gian tọa độ tính bằng CSS pixels. Mặc định là 150.
moz-opaqueNon-standard Deprecated-
Cho phép canvas biết liệu độ trong suốt có phải là một yếu tố hay không. Nếu canvas biết không có độ trong suốt, hiệu suất vẽ có thể được tối ưu hóa. Thuộc tính này chỉ được hỗ trợ bởi các trình duyệt dựa trên Mozilla; thay vào đó hãy sử dụng
canvas.getContext('2d', { alpha: false })đã được chuẩn hóa. width-
Chiều rộng của không gian tọa độ tính bằng CSS pixels. Mặc định là 300.
Ghi chú sử dụng
>Nội dung thay thế
Bạn nên cung cấp nội dung thay thế bên trong khối <canvas>. Nội dung đó sẽ được hiển thị trên các trình duyệt cũ không hỗ trợ canvas và trên các trình duyệt có JavaScript bị tắt.
Thẻ đóng </canvas>
Khác với phần tử <img>, phần tử <canvas> yêu cầu thẻ đóng (</canvas>).
Đặt kích thước canvas bằng CSS so với HTML
Kích thước hiển thị của canvas có thể được thay đổi bằng CSS, nhưng nếu làm vậy, hình ảnh sẽ được thu phóng trong quá trình kết xuất để vừa với kích thước được tạo kiểu, điều này có thể khiến kết xuất đồ họa cuối cùng bị méo.
Tốt hơn là chỉ định kích thước canvas của bạn bằng cách đặt trực tiếp các thuộc tính width và height trên các phần tử <canvas>, trực tiếp trong HTML hoặc bằng cách dùng JavaScript.
Kích thước canvas tối đa
Kích thước tối đa chính xác của phần tử <canvas> phụ thuộc vào trình duyệt và môi trường. Trong hầu hết các trường hợp, kích thước tối đa vượt quá 10.000 x 10.000 pixel, nhưng đáng chú ý là các thiết bị iOS giới hạn kích thước canvas chỉ còn 4.096 x 4.096 pixel. Xem giới hạn kích thước canvas trong các trình duyệt và thiết bị khác nhau.
Note: Vượt quá kích thước hoặc diện tích tối đa sẽ khiến canvas không thể sử dụng được — các lệnh vẽ sẽ không hoạt động.
Sử dụng canvas ngoài màn hình
Canvas có thể được kết xuất bằng API OffscreenCanvas nơi tài liệu và canvas được tách rời nhau.
Lợi ích là luồng worker có thể xử lý việc kết xuất canvas và luồng chính của ứng dụng web của bạn không bị chặn bởi các thao tác canvas.
Bằng cách song song hóa công việc, các phần tử UI khác của ứng dụng web của bạn sẽ vẫn phản hồi ngay cả khi bạn đang chạy đồ họa phức tạp trên canvas ngoài màn hình.
Để biết thêm thông tin, xem tài liệu API OffscreenCanvas.
Khả năng tiếp cận
>Nội dung thay thế
Phần tử <canvas> tự nó chỉ là một bitmap và không cung cấp thông tin về bất kỳ đối tượng được vẽ nào. Nội dung canvas không được hiển thị với các công cụ hỗ trợ tiếp cận như HTML ngữ nghĩa. Nhìn chung, bạn nên tránh sử dụng canvas trong trang web hoặc ứng dụng có thể tiếp cận. Các hướng dẫn sau có thể giúp làm cho nó dễ tiếp cận hơn.
Ví dụ
>HTML
Đoạn code này thêm phần tử canvas vào tài liệu HTML của bạn. Văn bản dự phòng được cung cấp nếu trình duyệt không thể đọc hoặc kết xuất canvas.
<canvas width="120" height="120">
An alternative text describing what your canvas displays.
</canvas>
JavaScript
Sau đó, trong code JavaScript, hãy gọi HTMLCanvasElement.getContext() để lấy ngữ cảnh vẽ và bắt đầu vẽ lên canvas:
const canvas = document.querySelector("canvas");
const ctx = canvas.getContext("2d");
ctx.fillStyle = "green";
// Add a rectangle at (10, 10) with size 100x100 pixels
ctx.fillRect(10, 10, 100, 100);
Kết quả
Tóm tắt kỹ thuật
| Danh mục nội dung | Nội dung luồng, nội dung cụm từ, nội dung nhúng, nội dung hữu hình. |
|---|---|
| Nội dung được phép |
Trong suốt nhưng không có phần tử con
nội dung tương tác
ngoại trừ phần tử <a>,
phần tử <button>,
phần tử <input> có thuộc tính
type
là checkbox, radio hoặc button.
|
| Bỏ qua thẻ | Không được phép, cả thẻ mở và thẻ đóng đều bắt buộc. |
| Phần tử cha được phép | Bất kỳ phần tử nào chấp nhận nội dung cụm từ. |
| Vai trò ARIA ngầm định | Không có vai trò tương ứng |
| Vai trò ARIA được phép | Bất kỳ |
| Giao diện DOM | HTMLCanvasElement |
Đặc tả
| Specification |
|---|
| HTML> # the-canvas-element> |
Tương thích trình duyệt
Xem thêm
- Canvas API
- Hướng dẫn Canvas
- OffscreenCanvas
- Canvas cheat sheet (2009)
- Canvas cheat sheet (pdf) (2015)
- Safari HTML canvas guide via Apple (2013)
CanvasRenderingContext2D2D drawing context for a canvas element via Apple.com- API WebGL
<img>- SVG
- Video và âm thanh HTML