ข้ามไปยังเนื้อหา

Images

รูปภาพเป็นหนึ่งในสิ่งแรก ๆ ที่ดีไซเนอร์อยากเพิ่มลงในหน้าเว็บ — และ element <img> ก็ทำให้เรื่องนี้ง่ายมาก เหมือนการวางรูปภาพใน Figma คุณแค่ชี้ไปที่ไฟล์ต้นทาง แล้วรูปก็ปรากฏขึ้นมา

แต่รูปภาพใน HTML มีพลังพิเศษอย่างหนึ่งที่เครื่องมือออกแบบไม่มีติดตัวมา นั่นคือ alt text คำอธิบายสั้น ๆ นี้คือสิ่งที่ browser ใช้เมื่อรูปภาพไม่สามารถมองเห็นได้ — โดยผู้ใช้ screen reader หรือเมื่อไฟล์โหลดไม่สำเร็จ การเขียน alt text ที่ดีคือหนึ่งในวิธีที่เร็วที่สุดที่ดีไซเนอร์จะสร้างความแตกต่างที่แท้จริงด้าน accessibility ได้

<img> เป็น element แบบ self-closing — ไม่มีเนื้อหาข้อความให้ห่อ จึงไม่มี closing tag

<img src="photo.jpg" alt="A designer sketching wireframes on paper" />

มีสอง attribute ที่จำเป็น:

  • src — path ไปยังไฟล์รูปภาพ (relative path หรือ URL เต็ม)
  • alt — คำอธิบายข้อความสั้น ๆ ว่ารูปภาพแสดงอะไร

โดยค่าเริ่มต้น รูปภาพจะแสดงผลตามขนาดพิกเซลตามธรรมชาติของตัวเอง ซึ่งมักจะใหญ่เกินไป คุณสามารถจำกัดขนาดได้ด้วย attribute ของ HTML หรือ (ดีกว่า) ด้วย CSS:

<!-- limit width, height scales automatically -->
<img src="photo.jpg" alt="..." width="400" />

ใน CSS คุณมักจะตั้ง max-width: 100% เพื่อให้รูปภาพไม่ล้นออกนอก container ของตัวเอง — แนวคิดเดียวกับ constraint แบบ “fill” ใน Figma

ถ้ารูปภาพโหลดไม่สำเร็จ (path ผิด หรือเชื่อมต่อช้า) browser จะแสดง alt text แทน screen reader สำหรับผู้ใช้ที่ตาบอดหรือสายตาเลือนรางจะอ่าน alt text ออกเสียงแทนการบรรยายพิกเซล ส่วน search engine ก็อ่าน alt text เพื่อทำความเข้าใจเนื้อหาของรูปภาพ

ลองเปลี่ยนข้อความใน alt ดู ตอนนี้ลองจินตนาการถึงผู้ใช้ที่มองไม่เห็นรูปภาพ — alt text ของคุณคือประสบการณ์ทั้งหมดที่พวกเขาได้รับจากรูปนั้น

  • ใช้รูปความละเอียดสูงสุดทุกจุดทำให้เพจโหลดหนักเกินจำเป็น
  • ลืม alt text
  • ไม่คิดถึง aspect ratio ตอนรูปยังโหลดไม่เสร็จ (เกิด layout shift)

Designer เห็น “รูปสวยหนึ่งรูป” แต่ developer ต้อง export หลาย size/format (WebP, srcset) และเผื่อ placeholder ระหว่างที่รูปกำลังโหลด

💡 ตัวอย่างจากของจริง

Airbnb serve รูปเดียวกันหลาย resolution ผ่าน srcset เพื่อให้มือถือโหลดไฟล์เล็กกว่าที่ desktop ใช้

attribute สองตัวใดที่จำเป็นบนทุก <img> element?
จะเกิดอะไรขึ้นเมื่อรูปภาพโหลดไม่สำเร็จและคุณได้เขียน alt text ไว้?
รูปภาพเส้นคั่นที่เป็นการตกแต่งล้วน ๆ ไม่มีเนื้อหาที่มีความหมาย ควรใช้ alt text แบบใด?
CSS property ใดป้องกันไม่ให้รูปภาพล้นออกนอก container บนหน้าจอเล็ก?