HTML คือ ตอนที่ 11 : กราฟิก (Graphics) HTML เจาะลึกเกี่ยวกับ Canvas และ SVG

  1. ทำความเข้าใจเกี่ยวกับกราฟิก (Graphics) HTML
  2. กราฟิกแบบเวกเตอร์ที่ปรับขนาดได้ (Scalable Vector Graphics) (SVG)
  3. องค์ประกอบผ้าใบ (Canvas Element)
  4. เมื่อใดควรใช้ SVG หรือ Canvas
  5. การใช้ SVG และ Canvas ในการทำเว็บและทำแอพ
  6. การสร้างกราฟิกขั้นสูงในการทำเว็บและทำแอพ

โลกดิจิตอลที่เราล้อมรอบเต็มไปด้วยองค์ประกอบกราฟิก ตั้งแต่ไอคอนบนสมาร์ทโฟนของคุณไปจนถึงแผนที่แบบโต้ตอบบนเว็บไซต์ ทุกสิ่งล้วนมีการแสดงกราฟิก การทำเว็บและทำแอพจำเป็นต้องเข้าใจกราฟิก HTML เพื่อสร้างส่วนต่อประสานผู้ใช้ที่น่าสนใจและใช้งานง่าย ใน HTML วิธีการหลักในการสร้างกราฟิกคือการใช้ Scalable Vector Graphics (SVG) และองค์ประกอบ Canvas ทั้งสองมีข้อได้เปรียบที่ไม่เหมือนใคร และการทำความเข้าใจความแตกต่างเป็นสิ่งสำคัญในการเลือกเครื่องมือที่เหมาะสมสำหรับงาน

1. ทำความเข้าใจเกี่ยวกับกราฟิก (Graphics) HTML

HTML ซึ่งเป็นคำย่อของ HyperText Markup Language เป็นแกนหลักของเกือบทุกเว็บไซต์บนอินเทอร์เน็ต อย่างไรก็ตาม เนื่องจากเว็บไซต์ได้พัฒนาจากเอกสารแบบข้อความธรรมดาไปสู่แพลตฟอร์มเชิงโต้ตอบที่ซับซ้อน ดังนั้น HTML จึงมี กราฟิกใน HTML สร้างขึ้นผ่านองค์ประกอบ SVG และ Canvas เป็นหลัก ซึ่งทั้งคู่นำมาใช้ใน HTML5

2. กราฟิกแบบเวกเตอร์ที่ปรับขนาดได้ (Scalable Vector Graphics) (SVG)

SVG เป็นรูปแบบภาพเวกเตอร์ที่ใช้ XML สำหรับกราฟิกสองมิติ ช่วยให้นักพัฒนาสามารถควบคุมรูปลักษณ์และภาพเคลื่อนไหวขององค์ประกอบกราฟิกได้ในระดับสูง ภาพ SVG แบบเวกเตอร์ไม่มีความละเอียด ซึ่งหมายความว่าภาพจะรักษาคุณภาพเมื่อปรับขนาดหรือซูม ไม่สร้างพิกเซลเหมือนกราฟิกแรสเตอร์ (PNG, JPG ฯลฯ) ทำให้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับโลโก้ ไอคอน และกราฟิกทั่วไปอื่นๆ ที่ต้องดูคมชัดในขนาดต่างๆ

นอกจากนี้ SVG ยังเป็นส่วนหนึ่งของ Document Object Model (DOM) DOM เป็นตัวแทนของเว็บเพจเพื่อให้โปรแกรมสามารถเปลี่ยนโครงสร้าง รูปแบบ และเนื้อหาของเอกสารได้ องค์ประกอบ SVG สามารถจัดการได้โดยใช้ JavaScript และจัดรูปแบบด้วย CSS เช่นเดียวกับองค์ประกอบ HTML อื่น ๆ ทำให้มีความยืดหยุ่นอย่างมากในการโต้ตอบและภาพเคลื่อนไหว

3. องค์ประกอบผ้าใบ (Canvas Element)

Canvas API เป็นวิธีการวาดภาพกราฟิกผ่าน JavaScript และ <canvas> องค์ประกอบ HTML เป็นแบบแรสเตอร์ หมายความว่าใช้งานได้กับพิกเซลแทนที่จะเป็นพาธเวกเตอร์ ซึ่งทำให้เหมาะกับกราฟิกเกม การประมวลผลวิดีโอแบบเรียลไทม์ หรือสถานการณ์อื่นๆ ที่ภาพจะมีการเปลี่ยนแปลงบ่อยๆ

ความแตกต่างที่สำคัญระหว่าง SVG และ Canvas อยู่ที่โมเดลการแสดงผล Canvas เป็นโหมดทันที ซึ่งหมายความว่าจะไม่ติดตามวัตถุที่วาด เมื่อคุณวาดบางสิ่ง ระบบจะ “ลืม” หากคุณต้องการเปลี่ยนแปลง คุณต้องวาดใหม่พร้อมกับสิ่งอื่นๆ ทั้งหมด

ในทางตรงกันข้าม SVG เป็นระบบกราฟิกในโหมดคงไว้ และองค์ประกอบใน SVG จะยังคงอยู่หลังจากแสดงผล และสามารถจัดการได้โดยใช้ JavaScript หรือ CSS

4. เมื่อใดควรใช้ SVG หรือ Canvas

การพิจารณาว่าจะใช้ SVG หรือ Canvas เมื่อใดนั้นขึ้นอยู่กับความต้องการของโครงการทำเว็บหรือทำแอพของคุณ ตัวอย่างเช่น หากคุณกำลังออกแบบอินโฟกราฟิกเชิงโต้ตอบหรือโลโก้ที่ต้องคงความคมชัดในขนาดต่างๆ SVG เป็นตัวเลือกที่ดีที่สุด ประสิทธิภาพของ SVG ยังดีสำหรับวัตถุจำนวนมากหรือแอนิเมชั่นจำนวนน้อย

ในทางกลับกัน หากโปรเจกต์ของคุณต้องการกราฟิก ภาพเคลื่อนไหว หรือเอฟเฟ็กต์ภาพแบบเรียลไทม์ เช่น เกมบนเว็บ Canvas อาจเหมาะสมกว่า Canvas ทำงานได้ดีขึ้นสำหรับวัตถุจำนวนน้อยที่มีแอนิเมชั่นหรือการเคลื่อนไหวจำนวนมาก

5. การใช้ SVG และ Canvas ในการทำเว็บและทำแอพ

การทำเว็บและทำแอพสามารถใช้ SVG และ Canvas เพื่อสร้างอินเทอร์เฟซที่สวยงามและใช้งานได้จริง ตัวอย่างเช่น สามารถฝังรูปภาพ SVG ในเอกสาร HTML โดยใช้ <svg> แท็กและกำหนดรูปร่างภายในแท็กนี้

<svg width="100" height="100">
    <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
</svg>

ในตัวอย่างนี้ <circle> ใช้องค์ประกอบในการวาดวงกลม แอตทริบิวต์ cx และ cy กำหนดพิกัด x และ y ของจุดศูนย์กลางของวงกลม และ r ระบุรัศมี

สำหรับ Canvas คุณจะเริ่มต้นด้วยการอ้างถึงองค์ประกอบ <canvas> แล้วเรียกใช้ฟังก์ชันการวาด

<canvas id="myCanvas" width="500" height="500"></canvas>
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'red';
ctx.fillRect(10, 10, 100, 100);

ในกรณีนี้ fillRect จะใช้วิธีวาดสี่เหลี่ยมผืนผ้า เติมสีตามที่ fillStyle กำหนด

6. การสร้างกราฟิกขั้นสูงในการทำเว็บและทำแอพ

เมื่อการทำเว็บและทำแอพมีความซับซ้อนมากขึ้น นักพัฒนามักจะต้องสร้างกราฟิกที่ซับซ้อนและโต้ตอบได้มากขึ้น ทั้ง SVG และ Canvas สามารถจัดการสิ่งนี้ได้ แต่เทคนิคจะแตกต่างกัน ด้วย SVG เนื่องจากเป็นส่วนหนึ่งของ DOM คุณจึงสามารถเพิ่มตัวรับฟังเหตุการณ์ไปยังองค์ประกอบและจัดการตามการโต้ตอบของผู้ใช้

สำหรับกราฟิกเชิงโต้ตอบที่ซับซ้อนยิ่งขึ้นด้วย Canvas นักพัฒนามักจะใช้ไลบรารี เช่น Three.js สำหรับกราฟิก 3 มิติ หรือ p5.js สำหรับกราฟิก 2 มิติ ไลบรารีเหล่านี้มีฟังก์ชันที่ช่วยให้สร้างแอนิเมชันที่ซับซ้อน กราฟิกเชิงโต้ตอบ และแม้แต่เกมได้ง่ายขึ้น


กราฟิกมีบทบาทสำคัญในการทำเว็บและทำแอพ ปรับปรุงอินเทอร์เฟซผู้ใช้และปรับปรุงประสบการณ์ผู้ใช้โดยรวม HTML นำเสนอเครื่องมือที่มีประสิทธิภาพสองอย่างสำหรับการสร้างกราฟิก: องค์ประกอบ SVG และ Canvas การทำความเข้าใจจุดแข็งและเวลาที่จะใช้จะช่วยให้คุณเลือกเครื่องมือที่เหมาะสมสำหรับโครงการทำเว็บและทำของคุณได้

ไม่ว่าคุณกำลังสร้างไอคอนธรรมดาหรือเกมเชิงโต้ตอบที่ซับซ้อน SVG และ Canvas มอบเครื่องมือที่คุณต้องการเพื่อสร้างกราฟิกที่น่าทึ่งและใช้งานได้จริง ด้วยการเรียนรู้การใช้เครื่องมือเหล่านี้อย่างมีประสิทธิภาพ คุณจะสามารถทำให้การทำเว็บและทำแอพของคุณมีชีวิตชีวา ทำให้ผู้ใช้มีส่วนร่วมและน่าจดจำมากขึ้น


HTML คืออะไร

HTML คือ ตอนที่ 10 : การออกแบบที่ตอบสนองต่อ (Responsive Design)
HTML คือ ตอนที่ 12 : คุณสมบัติ HTML5