SVG เป็นรูปแบบภาพแบบ vector (อิงกับ XML) จึงสามารถปรับขนาดได้ทุกขนาดโดยไม่เบลอ คุณสามารถนำมาใช้ได้สองวิธีหลัก ซึ่งแต่ละวิธีมีข้อแลกเปลี่ยนต่างกัน
Inline SVG — เขียน markup โดยตรงใน HTML
ข้อดี: คุณสามารถกำหนดสไตล์ด้วย CSS (fill, stroke), ทำแอนิเมชันให้แต่ละส่วน, เปลี่ยนสีผ่าน currentColor (สืบทอดสีของข้อความ) และตอบสนองต่ออีเวนต์ได้ เพราะมันเป็น DOM จริง ไม่มี HTTP request เพิ่มเติม
ข้อเสีย: ทำให้ HTML บวม, ไม่ได้ถูก cache แยกต่างหาก, ไอคอนที่ใช้ซ้ำจะทำให้ markup ซ้ำซ้อน
<img> — อ้างอิงเป็นไฟล์<img src="logo.svg" alt="Company logo" width="120" />
ข้อดี: ถูก cache โดยเบราว์เซอร์, ทำให้ HTML สะอาด, เรียบง่าย ข้อเสีย: คุณ ไม่สามารถ กำหนดสไตล์หรือเขียนสคริปต์ควบคุมภายในของมันด้วย CSS/JS ของคุณได้ มันเป็นภาพทึบที่เข้าถึงภายในไม่ได้
Need to recolor/animate/interact with the SVG → inline SVG
Static logo/illustration, want caching + clean HTML → <img src=".svg">
Many repeated icons → an SVG sprite (<use>) or an icon component
<svg role="img" aria-label="Settings">...</svg> <!-- meaningful icon -->
<svg aria-hidden="true">...</svg> <!-- decorative: hide from AT -->
การเลือกระหว่าง inline กับ <img> SVG ขึ้นอยู่กับว่าคุณจำเป็นต้อง กำหนดสไตล์/ทำแอนิเมชัน ให้กราฟิก (inline) หรือเพียงแค่ แสดงผล มันอย่างมีประสิทธิภาพ (<img>)
ไอคอนที่เปลี่ยนสีเมื่อ hover หรือเปลี่ยนตามธีมควรใช้ inline (มักทำเป็นคอมโพเนนต์) ส่วน asset แบรนด์แบบสแตติกให้ใช้ผ่าน <img>
ไม่ว่าทางใด vector ก็ยังคงคมชัดในทุกความละเอียด เหมาะอย่างยิ่งสำหรับไอคอนและโลโก้