แท็ก HTML <canvas> แทร็ก
การกำหนดและการใช้งาน
<canvas>
แทร็กเกอร์มักจะวาดกราฟิกทันทีด้วยสคริปต์ (ส่วนใหญ่เป็น JavaScript)
<canvas>
แทร็กเกอร์เป็นสิ่งที่โปร่งใส มันเป็นแค่ตัวจัดเก็บกราฟิก ต้องใช้สคริปต์เพื่อวาดกราฟิกจริง
ในเบราเซอร์ที่ปิด JavaScript และไม่สนับสนุน <canvas>
ในเบราเซอร์ <canvas>
ข้อความในองค์ประกอบ
คำแนะนำ
เรามีคำแนะนำเกี่ยวกับ <canvas> ขององค์ประกอบนี้
สำหรับดูคุณสมบัติและวิธีการทั้งหมด โปรดเข้าถึง คู่มืออ้างอิง HTML Canvas.
ตัวอย่าง
ตัวอย่าง 1
วาดสี่เหลี่ยมผืนผ้าสีแดงและแสดงมันในองค์ประกอบ <canvas> ตามไปนี้
<canvas id="myCanvas"> เบราเซอร์ของคุณไม่สนับสนุนแบตทิ้ง canvas </canvas> <script> var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); ctx.fillStyle = "#FF0000"; ctx.fillRect(0, 0, 80, 80); </script>
ตัวอย่าง 2
ตัวอย่าง <canvas> อีกตัว
<canvas id="myCanvas"> เบราเซอร์ของคุณไม่สนับสนุนแบตทิ้ง canvas </canvas> <script> var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); ctx.fillStyle = "red"; ctx.fillRect(20, 20, 75, 50); // เปิดความโปร่งใส ctx.globalAlpha = 0.2; ctx.fillStyle = "blue"; ctx.fillRect(50, 50, 75, 50); ctx.fillStyle = "green"; ctx.fillRect(80, 80, 75, 50); </script>
คุณสมบัติ
คุณสมบัติ | ค่า | คำอธิบาย |
---|---|---|
height | ค่าพิกเซล | กำหนดความสูงของกระดานวาด ค่าเริ่มต้นคือ 150 |
width | ค่าพิกเซล | กำหนดความกว้างของกระดานวาด ค่าเริ่มต้นคือ 300 |
คุณสมบัติโลก
<canvas>
แบตทิ้งยังสนับสนุน คุณสมบัติโลกใน HTML.
คุณสมบัติเหตุการณ์
<canvas>
แบตทิ้งยังสนับสนุน คุณสมบัติเหตุการณ์ใน HTML.
การตั้งค่า CSS โดยเริ่มต้น
ส่วนใหญ่ของเบราเซอร์จะแสดงค่าเริ่มต้นดังนี้ <canvas>
องค์ประกอบ:
canvas { height: 150px; width: 300px; }
ประวัติของ <canvas>
นี้เป็นองค์ประกอบ HTML ที่ถูกออกแบบเพื่อกราฟิกเวกเตอร์ที่ผู้ใช้งานส่วนบุคคล มันไม่มีพฤติกรรมของตัวเอง แต่มันแสดงให้ JavaScript ของผู้ใช้งานเข้าถึง API การวาดเพื่อให้สคริปต์สามารถวาดสิ่งที่ต้องการวาดได้บนกระดานวาดเดียว
สัญญาณ <canvas> ถูกนำเสนอโดย Apple ใน Web บราวเซอร์ Safari 1.3. สาเหตุที่ทำให้ Apple ขยายภาษา HTML นี้เนื่องจากความสามารถการวาดของ HTML ใน Safari ถูกใช้โดยส่วนที่เรียกว่า Dashboard ของ Mac OS X และ Apple ต้องการที่จะมีวิธีที่สนับสนุนกราฟิกที่มีสคริปต์ใน Dashboard
Firefox 1.5 และ Opera 9 ตามหลัง Safari. ทั้งสองเว็บเบราเซอร์นี้สนับสนุนสัญญาณ <canvas>
เราแม้แต่จะสามารถใช้สัญญาณ <canvas> ใน IE และสร้างความสามารถเดียวกันกับ VML ใน IE ด้วยรหัสที่เปิดที่สร้างด้วย JavaScript (ที่มีการเริ่มต้นโดย Google) ดูข้อมูลเพิ่มเติม:http://excanvas.sourceforge.net/.
ความพยายามที่จะทำให้ <canvas> มีมาตรฐานถูกขับเคลื่อนโดยสมาคมองค์ประกอบแห่งอุตสาหกรรม Web แบบไม่เป็นทางการ ของผู้ผลิตเว็บเบราเซอร์ โดยตอนนี้ <canvas> ได้กลายเป็นสัญญาณที่เป็นทางการในบันทึก HTML 5 ดูข้อมูลเพิ่มเติม:http://www.whatwg.org/specs/web-apps/current-work/
ความแตกต่างระหว่างสัญญาณ <canvas> และ SVG และ VML
หนึ่งในความแตกต่างสำคัญระหว่างสัญญาณ <canvas> และ SVG และ VML คือ <canvas> มี API การวาดที่ฐาน JavaScript ในขณะที่ SVG และ VML ใช้ XML ไฟล์เพื่อเอาเองเป็นตัวอธิบายการวาด
สองวิธีนี้เท่าเทียมกันในด้านฟังก์ชัน และสามารถใช้วิธีหนึ่งแทนวิธีอื่นได้. ดูเหมือนว่าพวกเขาไม่เหมือนกันมาก แต่แต่ละวิธีมีข้อย่อมและข้ออ่อน. ตัวอย่างเช่น การวาด SVG ง่ายที่จะแก้ไข โดยเพียงแค่ลบออกส่วนที่ต้องการจากการเรียกใช้
เพื่อลบออกส่วนที่ต้องการจากภาพที่เดียวกันของสัญญาณ <canvas> มักจะต้องลบการวาดและวาดมันขึ้นมาใหม่
แนวทางในการใช้สัญญาณ <canvas> สำหรับการวาด
ส่วนใหญ่ของ API Canvas การวาดไม่ได้ถูกกำหนดบนตัว <canvas> และรวมถึงการกำหนดบนตัวที่ผ่านเข้ามาด้วย เมธอด getContext()ที่ได้รับมาคือ 'สภาพแวดล้อมการวาด' ตัว
Canvas API ยังใช้รูปแบบการแสดงทางเดิน. แต่, ทางเดินถูกกำหนดโดยชุดของการเรียกใช้เมธอด ไม่ใช่ด้วยรูปแบบของตัวอักษรและตัวเลข อย่างเช่นการเรียกใช้เมธอด beginPath() และ arc().
หลังจากกำหนดเส้นทาง วิธีอื่นๆ เช่น fill() จะทำการปฏิบัติต่อเส้นทางนี้ คุณสมบัติต่างๆ ของสภาพแวดล้อมการวาด อย่างเช่น fillStyle ชี้แจงว่าการปฏิบัติเหล่านี้จะถูกใช้งานอย่างไร
หมายเหตุ:หนึ่งในสาเหตุที่ Canvas API มีขนาดเล็กมากคือมันไม่มีการสนับสนุนการวาดข้อความ ในการเพิ่มข้อความเข้าสู่กราฟิก <canvas> ต้องวาดมันด้วยตัวเองแล้วทำการผสมภาพบิตแมップ หรือใช้ CSS การจัดตำแหน่งที่ตรงข้าม <canvas> ที่จะปิดกั้นข้อความ HTML
การสนับสนุนโปรแกรมบราวเซอร์
ตัวเลขในตารางบอกว่าเวอร์ชั่นบราวเซอร์แรกที่สนับสนุนองค์ประกอบนี้
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
4.0 | 9.0 | 2.0 | 3.1 | 9.0 |