ใน HTML5, <picture> tag ถูกใช้เพื่อสร้าง responsive images โดยให้ผู้พัฒนาเว็บสามารถระบุแหล่งที่มา (source) ของรูปภาพที่แตกต่างกันได้ตามเงื่อนไข เช่น ขนาดหน้าจอ ความละเอียดของอุปกรณ์ ฯลฯ <picture> ทำงานร่วมกับ <source> tag และ <img> tag เพื่อสร้างระบบภาพที่สามารถตอบสนองต่อเงื่อนไขที่ระบุได้อย่างยืดหยุ่น
โครงสร้างของ <picture> tag
<picture>
<source srcset="image1.webp" type="image/webp">
<source srcset="image1.jpg" type="image/jpeg">
<img src="image1.jpg" alt="A description of the image">
</picture>การทำงาน:
<picture>: เป็น container สำหรับ<source>และ<img>tag<source>: ใช้ระบุรูปภาพตามเงื่อนไขต่าง ๆsrcset: ระบุแหล่งที่มาของรูปภาพtype: ระบุประเภทของไฟล์รูปภาพ (เช่นimage/webp,image/jpeg)
<img>: ใช้เป็น fallback ในกรณีที่เบราว์เซอร์ไม่รองรับ<picture>tag หรือไม่สามารถโหลดรูปภาพจาก<source>ได้
การใช้งาน <picture> tag ในรูปแบบต่างๆ
1. เปลี่ยนภาพตามประเภทของไฟล์
ใช้ <picture> เพื่อรองรับรูปแบบไฟล์ที่แตกต่างกันในเบราว์เซอร์ที่ต่างกัน เช่น WebP ที่มีขนาดไฟล์เล็กกว่า แต่บางเบราว์เซอร์อาจไม่รองรับ
<picture>
<source srcset="image.webp" type="image/webp">
<source srcset="image.jpg" type="image/jpeg">
<img src="image.jpg" alt="Sample image">
</picture>2. เปลี่ยนภาพตามขนาดหน้าจอ
สามารถใช้คุณสมบัติ media เพื่อเปลี่ยนภาพตามขนาดหน้าจอได้ เช่น อุปกรณ์หน้าจอใหญ่จะแสดงรูปที่มีความละเอียดสูงกว่า
<picture>
<source media="(min-width: 800px)" srcset="large-image.jpg">
<source media="(max-width: 799px)" srcset="small-image.jpg">
<img src="small-image.jpg" alt="Responsive image">
</picture>3. เปลี่ยนภาพตามความละเอียดของอุปกรณ์ (retina display)
การใช้ srcset สามารถระบุขนาดของรูปภาพที่แตกต่างกันตามค่า pixel density ของอุปกรณ์
<picture>
<source srcset="image-2x.jpg 2x, image-1x.jpg 1x">
<img src="image-1x.jpg" alt="High resolution image">
</picture>4. รองรับรูปภาพที่ปรับขนาดโดยอัตโนมัติ
เราสามารถใช้ sizes และ srcset เพื่อกำหนดขนาดรูปภาพที่ควรแสดงตามขนาดหน้าจอและการตั้งค่าของผู้ใช้
<picture>
<source
srcset="image-small.jpg 300w, image-medium.jpg 600w, image-large.jpg 1200w"
sizes="(max-width: 600px) 300px, (max-width: 900px) 600px, 1200px">
<img src="image-large.jpg" alt="Responsive image">
</picture>srcset: ระบุรูปภาพที่แตกต่างกันตามความกว้าง (width)sizes: ระบุว่าภาพไหนควรแสดงตามขนาดหน้าจอ
สรุป
การใช้งาน <picture> tag ช่วยให้เราสามารถสร้างเว็บที่ตอบสนองกับผู้ใช้ได้ดีมากขึ้น โดยเฉพาะในด้านของการแสดงผลรูปภาพที่ปรับให้เหมาะสมกับอุปกรณ์และเงื่อนไขที่แตกต่างกัน
