Canvas html5 là gì

Yếu tố này có lợi ích hơn công nghệ khác

HTML5 bao gồm một yếu tố thú vị được gọi là CANVAS. Nó có rất nhiều công dụng, nhưng để sử dụng nó, bạn cần phải học một số JavaScript, HTML và đôi khi là CSS.

Điều này làm cho phần tử CANVAS trở nên khó khăn đối với nhiều nhà thiết kế, và trên thực tế, hầu hết có lẽ sẽ bỏ qua phần tử cho đến khi có các công cụ đáng tin cậy để tạo hoạt ảnh và trò chơi CANVAS mà không biết JavaScript.

Canvas HTML5 được sử dụng để làm gì

Phần tử CANVAS HTML5 có thể được sử dụng cho rất nhiều thứ trước đây, bạn phải sử dụng một ứng dụng nhúng như Flash để tạo ra:

  • đồ họa động
  • trò chơi trực tuyến và ngoại tuyến
  • hình ảnh động
  • video và âm thanh tương tác

Trên thực tế, lý do chính mà mọi người sử dụng phần tử CANVAS là vì việc biến trang web đơn giản thành ứng dụng web động trở nên dễ dàng như thế nào và sau đó chuyển ứng dụng đó thành ứng dụng dành cho thiết bị di động để sử dụng trên điện thoại thông minh và máy tính bảng.

Nếu chúng ta có Flash, Tại sao chúng ta cần Canvas?

Theo đặc tả HTML5, phần tử CANVAS là:

“... một khung ảnh bitmap phụ thuộc vào độ phân giải, có thể được sử dụng để hiển thị đồ thị, đồ họa trò chơi, nghệ thuật hoặc hình ảnh trực quan khác khi đang di chuyển.”

Phần tử CANVAS cho phép bạn vẽ đồ thị, đồ họa, trò chơi, nghệ thuật và các hình ảnh khác ngay trên trang web trong thời gian thực.

Bạn có thể nghĩ rằng chúng tôi đã có thể làm điều đó với Flash, nhưng có hai điểm khác biệt lớn giữa CANVAS và Flash:

  • Phần tử CANVAS được nhúng ngay trong HTML. Các kịch bản lệnh vẽ trên đó nằm trong HTML hoặc trong tệp bên ngoài được liên kết. Điều này có nghĩa là phần tử CANVAS là một phần của mô hình đối tượng tài liệu hoặc DOM.
    • Flash là một tệp bên ngoài được nhúng. Nó sử dụng phần tử EMBED hoặc OBJECT để hiển thị và không thể tương tác trực tiếp với các phần tử HTML khác. Vì phần tử CANVAS là một phần của DOM, nên nó có thể tương tác với DOM theo nhiều cách.
    • Ví dụ: bạn có thể tạo hoạt ảnh thay đổi khi một phần khác của trang được tương tác với - chẳng hạn như phần tử biểu mẫu được điền. Với Flash, hầu hết bạn có thể làm là bắt đầu phim hoặc hoạt ảnh Flash nhưng với CANVAS bạn có thể tạo ra nhiều hiệu ứng khác nhau, thậm chí thêm văn bản từ trường biểu mẫu vào hoạt ảnh.
  • Phần tử CANVAS được hỗ trợ bởi trình duyệt web. Để người dùng thực sự sử dụng Flash, trình duyệt của họ phải có plugin được cài đặt. Điều này thường gây rắc rối cho hầu hết mọi người do cài đặt Flash lỗi thời hoặc thực tế là hệ điều hành của họ không hỗ trợ nó.
    • Trước đây, mọi trình duyệt đều đã cài đặt plugin, nhưng điều đó không còn xảy ra nữa và nhiều trình duyệt thậm chí còn xóa plugin do khó khăn. Ngoài ra, nó thậm chí không có sẵn trên nền tảng iOS phổ biến.

Canvas hữu ích ngay cả khi bạn không bao giờ có kế hoạch sử dụng flash

Một trong những lý do chính khiến yếu tố CANVAS gây nhầm lẫn là nhiều nhà thiết kế đã trở nên quen với một trang web hoàn toàn tĩnh. Hình ảnh có thể là hoạt ảnh nhưng được thực hiện với GIF và tất nhiên bạn có thể nhúng video vào các trang nhưng một lần nữa, đó là video tĩnh đơn giản nằm trên trang và có thể bắt đầu hoặc dừng do tương tác, nhưng đó là tất cả.

Phần tử CANVAS cho phép bạn thêm tương tác nhiều hơn nữa vào các trang web của bạn bởi vì bây giờ bạn có thể kiểm soát đồ họa, hình ảnh và văn bản động với một ngôn ngữ kịch bản. Phần tử CANVAS giúp bạn biến hình ảnh, hình ảnh, biểu đồ và đồ thị thành các yếu tố hoạt hình.

Khi cân nhắc sử dụng phần tử Canvas

Khán giả của bạn phải là người đầu tiên cân nhắc khi quyết định có nên sử dụng phần tử CANVAS hay không.

Nếu đối tượng của bạn chủ yếu sử dụng Windows XP và IE 6, 7 hoặc 8 thì việc tạo tính năng canvas động sẽ vô ích vì các trình duyệt đó không hỗ trợ tính năng này.

Nếu bạn đang xây dựng một ứng dụng sẽ chỉ được sử dụng trên các máy Windows, thì Flash có thể là đặt cược tốt nhất của bạn. Một ứng dụng được sử dụng trên các máy tính Windows và Mac có thể được hưởng lợi từ một ứng dụng Silverlight.

Tuy nhiên, nếu ứng dụng của bạn cần được xem trên thiết bị di động [cả Android và iOS] cũng như máy tính để bàn hiện đại [được cập nhật lên phiên bản trình duyệt mới nhất], thì việc sử dụng phần tử CANVAS là một lựa chọn tốt.

Hãy nhớ rằng việc sử dụng phần tử này cho phép bạn có các tùy chọn dự phòng như hình ảnh tĩnh cho các trình duyệt cũ không hỗ trợ nó.

Tuy nhiên, không nên sử dụng canvas HTML5 cho mọi thứ. Bạn không bao giờ nên sử dụng nó cho những thứ như logo của bạn, tiêu đề, hoặc chuyển hướng [mặc dù sử dụng nó để animate một phần của bất kỳ trong số này sẽ được sử dụng tốt].

Theo đặc điểm kỹ thuật, bạn nên sử dụng các yếu tố phù hợp nhất cho những gì bạn đang cố gắng xây dựng. Vì vậy, việc sử dụng phần tử HEADER cùng với hình ảnh và văn bản thích hợp hơn với phần tử CANVAS cho tiêu đề và biểu tượng của bạn.

Ngoài ra, nếu bạn đang tạo trang web hoặc ứng dụng dự định được sử dụng trong môi trường không tương tác như in, bạn nên lưu ý rằng phần tử CANVAS đã được cập nhật động có thể không in như bạn mong đợi. Bạn có thể nhận được bản in nội dung hiện tại hoặc nội dung dự phòng.

09 tháng 10, 2018 - 3852 lượt xem

Trước khi HTML5 được giới thiệu tới với thế giới của các developer web, nhiều thứ đã từng vô hồn, không thỏa mãn, và thật phức tạp để đạt được. Một ví dụ là, bất kì developer nào muốn tạo ra graphic và animation, đều buộc phải dựa vào những công cụ như Flash plugin hay Java plugin – một thứ gì đó nặng nề và nhức đầu.

Nikita, người đã có hơn 7 năm kinh nghiệm phát triển web và hiện đang dạy lại các kĩ năng của mình cho mọi người, nói rằng “sự ra đời của Canvas – một element đầy sức mạnh của HTML5, đã thay đổi mọi thứ và trao quyền lực cho các developer để hoàn thành các công việc mà trước đó từng rất khó khăn”.

HTML5 Canvas là gì?

Canvas là một element của HTML5, nó cho phép mọi người dễ dàng tạo graphic một cách mạnh mẽ, trong khi chạy chương trình mà không làm gián đoạn quá trình, bằng việc sử dụng ngôn ngữ lập trình JavaScript sẵn có.

Canvas element chỉ làm việc như một môi trường bao chứa graphic; vì thế, chúng ta cần sử dụng JavaScript để render graphic.

Chúng ta có thể sử dụng Canvas element để đạt được nhiều mục đích khác nhau trên web app, như vẽ đồ thị, tạo ra các animation, phát triển game, hay tạo ảnh - tất cả mọi thứ đó, mà không phải phụ thuộc vào công cụ từ bên ngoài.

Bất ngờ hơn, Canvas sẵn có dưới dạng API, và nó được hỗ trợ bởi những nền tảng và trình duyệt hiện đại nhất. Hơn nữa, nó tương thích đa nền tảng. Nhờ đó, chúng ta có thể tạo ra ứng dụng một lần, và deploy lên nhiều nền tảng khác nhau – PC hay các thiết bị di động.

Cùng xem một Canvas markup code

Đây là một ví dụ markup code đơn giản cho Canvas element:

Bạn có thể thấy trong code phía trên, Canvas element cho phép hai thuộc tính riêng biệt: widthheight. Nếu bạn không cung cấp giá trị khác cho các thuộc tính trên, Canvas sẽ có giá trị mặc định của nó là width = 300 pixels và height = 150 pixels.

Thuộc tính id được sử dụng để xác định Canvas element trong code JavaScript. Hơn nữa, bạn có thể đưa vào các đặc tính định dạng CSS khác để làm cho vùng vẽ canvas tăng tính tương tác và rõ ràng hơn, ví dụ như padding, background color, hay border – giống như với bất kì thẻ HTML nào khác.

Vẽ trong Canvas như thế nào

Để vẽ graphic trong Canvas, ta cần bắt đầu bằng việc trỏ tới nó bằng việc sử dụng DOM [Document Object Model].

Và một thuộc tính id sẽ hỗ trợ để xác định vị trí mục tiêu [trong ví dụ HTML Canvas trên, id là “canvasExample”]

Khởi đầu, Canvas element là rỗng. Vì vậy, để trình bày gì đó, một kịch bản JavaScript cần để render môi trường bao trước khi vẽ lên nó.

Canvas element có một phương thức DOM được build sẵn là getContext. Nó là một hàm JavaScript sử dụng để truy cập tới môi trường bao cùng với phương thức vẽ. Hàm này cho phép một tham số đơn, thường là graphic 2D [được định nghĩa là “2d”].

Để rõ hơn, ta xem ví dụ phía dưới.

Ví dụ JavaScript Canvas Code

Một ví dụ dựng hình chữ nhật. Để dựng một hình chữ nhật trong Canvas, ta sẽ cần những những thuộc tính và hàm sau:

  • fillStyle = “color”— xác định màu fill vào hình; nếu không thì hình sẽ có màu mặc định fill là màu đen
  • fillRect [x, y, width, height] — vẽ lên một hình chữ nhật được tô màu theo “color” ở trên. Các tham số lần lượt xác định tọa độ x, y so với môi trường bao của canvas; chiều rộng và chiều cao của hình chữ nhật.
  • strokeRect [x, y, width, height] — vẽ một hình chữ nhật không fill màu, có nét viền. Các tham số tương tự fillRect.
  • clearRect [x, y, width, height] — xóa một khoảng bằng hình chữ nhật trong hình chữ nhật được chỉ định và làm cho phần đó hoàn toàn trong suốt.

Để xác định các tọa độ, ta sử dụng Canvas grid hay hệ thống tọa độ. Trong hệ thống này, điểm mốc được định vị tại góc trên cùng bên trái ngoài cùng của vùng bao Canvas, ở tọa độ [0,0]. 

Như vậy, tọa độ X sẽ di chuyển sang bên phải trong khi tọa độ Y sẽ di chuyển xuống dưới so với điểm mốc ban đầu. Khoảng cách được đo bằng pixels.

Đây là một ảnh chỉ ra cách hệ thống Canvas Grid hoạt động:

Mỗi một trong các hàm được nhắc đến ở trên để tạo hình chữ nhật sử dụng các tham số sau để biểu thị tọa độ và kích thước:

  • x cho vị trí theo chiều ngang sang bên phải từ góc trên bên trái
  • y cho vị trị theo chiều dọc xuống dưới từ góc trên cùng bên trái
  • width cho chiều rộng của hình chữ nhật
  • height cho chiều cao của hình chữ nhật

Đây là một ví dụ hướng dẫn code JavaScript canvas vẽ một hình chữ nhật:

JavaScript HTML5 Canvas Example function canvasExample[]{ //identify the Canvas element via the DOM var canvas = document.getElementById["canvasExample"]; //checking for Canvas browser compatibility if[canvas.getContext]{ //Use getContext to specify the rendering context var context = canvas.getContext['2d']; //setting of color context.fillStyle = "blue"; //creating the rectangle context.fillRect[50,50,150,250]; context.clearRect[75,75,100,50]; context.strokeRect[90,90,75,20]; }else{ //providing a fallback option alert["Please a Canvas-Supporting Web Browser"]; } }

Đây là output trên trình duyệt:

Đây là những gì đã diễn ra trong kịch bản JavaScript:

  • Trước tiên, Canvas element được xác định thông qua DOM
  • Môi trường được khai báo
  • Hàm fillRect[] tạo ra một hình chữ nhật kích thước 150 x 250 pixels có fill màu.
    • Lí do hình chữ nhật có màu xanh: hàm fillStyle thiết lập thuộc tính fill cho môi trường canvas là màu xanh nên hình chữ nhật được tạo ra có fill màu xanh.
    • Lí do dù tham số chiều cao lớn hơn chiều rộng nhưng hình chữ nhật màu xanh lại có chiều rộng lớn hơn chiều cao: chiều cao vùng bao canvas là 160px nên chiều cao hiển thị tối đa của graphic là 160px. Hơn nữa, do có tọa độ y = 50px nên hình chữ nhật được hiển thị chỉ có chiều cao 110px, trong khi chiều rộng là 150px.
  • Hàm clearRect[] xóa một hình chữ nhật kích thước 100px * 50px. Vùng chữ nhật bị xóa có tọa độ [x, y] = [75, 75] nên sẽ nằm trong hình chữ nhật màu xanh.
  • Cuối cùng, hàm strokeRect[] tạo ra một hình chữ nhật có viền và không fill màu, có kích thước 75px * 20px. Hình chữ nhật này có tọa độ [x, y] = [90, 90] nên nằm trong vùng chữ nhật bị clear ở trên.

Tóm lại

Như đã vừa trình bày qua ví dụ về HTML5 Canvas ở trên, Canvas element cho phép ta sử dụng JavaScript để dễ dàng render đồ họa trên trình duyệt web.

Canvas rất tuyệt vì nó hoàn toàn mở [open-source], có tính tương tác cao, và rất linh hoạt. Nó chính là thứ bạn cần để thổi hồn vào ứng dụng của bạn và tăng tốc chúng.

Do đó, bạn sẽ cần học cách nó hoạt động và đưa kĩ năng dev web của mình lên một tầm cao mới.

Nguồn tham khảo tại đây.

Hy vọng bài viết trên có ích với các bạn. Xin cảm ơn.

Video liên quan

Chủ Đề