SVG คืออะไร?
SVG ย่อมาจาก Scalable Vector Graphics เป็นมาตรฐานของ W3C สำหรับสร้างกราฟิกแบบเวกเตอร์ (Vector-based Graphics) โดยใช้ XML เป็นภาษากำหนดรูปทรงต่าง ๆ
กราฟิก SVG สามารถฝัง (embed) ลงในหน้า HTML ได้โดยตรง และสามารถขยายหรือย่อขนาดได้โดย ไม่สูญเสียคุณภาพของภาพ SVG ได้รับการสนับสนุนจากเบราว์เซอร์หลักทั้งหมด (เช่น Chrome, Firefox, Safari, Edge)
SVG ไม่ใช่แท็กของ HTML โดยตรง แต่เป็นภาษามาร์กอัปแบบ XML ที่สามารถฝังลงในเอกสาร HTML5 ได้โดยตรงผ่านแท็ก ซึ่งเบราว์เซอร์สมัยใหม่รองรับเต็มรูปแบบ
คุณสมบัติสำคัญของ SVG
- ย่อมาจาก Scalable Vector Graphics
- ใช้สำหรับสร้างกราฟิกแบบเวกเตอร์บนเว็บ
- เขียนด้วย ภาษา XML
- องค์ประกอบ (element) และแอตทริบิวต์ (attribute) สามารถ ใส่แอนิเมชันได้
- เป็นมาตรฐานของ W3C Recommendation
- สามารถใช้งานร่วมกับ CSS, DOM, XSL, และ JavaScript
แท็ก <svg>
แท็ก
<svg> เป็น คอนเทนเนอร์ (container) สำหรับเก็บกราฟิก SVG
SVG มีคำสั่งสำหรับวาดรูปร่างหลายแบบ เช่น
เส้นทาง (paths), สี่เหลี่ยม (rectangles), วงกลม (circles), รูปหลายเหลี่ยม (polygons), และข้อความ (text)
วงกลม (SVG Circle)
สี่เหลี่ยม (SVG Rectangle)
สี่เหลี่ยมมีมุมโค้งและโปร่งใส (Opacity + Rounded Corners)
รูปดาว (SVG Star)
วงรีพร้อมการไล่สีและข้อความ (Gradient Ellipse + Text)
ความแตกต่างระหว่าง SVG กับ Canvas
| รายการเปรียบเทียบ | SVG | Canvas |
|---|---|---|
| ประเภทกราฟิก | ใช้ XML กำหนดกราฟิกแบบเวกเตอร์ | วาดกราฟิกแบบพิกเซลด้วย JavaScript |
| ลักษณะการทำงาน | องค์ประกอบทุกชิ้นเป็นวัตถุใน DOM | วาดแล้วถูกลืม ต้องวาดใหม่เมื่อมีการเปลี่ยนแปลง |
| การจัดการเหตุการณ์ (Events) | รองรับการผูก Event Handler (เช่น onClick) | ไม่รองรับโดยตรง |
| คุณภาพของภาพ | คมชัดทุกขนาด (Resolution-independent) | ขึ้นอยู่กับความละเอียด (Resolution-dependent) |
| การแสดงผลข้อความ | คุณภาพสูง | ข้อความแปลงเป็นพิกเซลความชัดลดลง |
| ความเร็วในการเรนเดอร์ | ช้ากว่ากราฟิกซับซ้อน | เร็วกว่าสำหรับงานกราฟิกหนัก ๆ เช่น เกม |
| การบันทึกภาพ | ไม่สามารถบันทึกโดยตรง | บันทึกเป็น .png หรือ .jpg ได้ง่าย |
| การใช้งานเหมาะกับ | โลโก้, ไดอะแกรม, แผนภาพ | เกม, กราฟิกเคลื่อนไหวต่อเนื่อง |
โดยทั่วไป SVG เหมาะกับกราฟิกเชิงโครงสร้าง ส่วน Canvas เหมาะกับการเรนเดอร์ภาพเคลื่อนไหวหรือกราฟิกเรียลไทม์