รูปภาพที่ปรับเปลี่ยนตามอุปกรณ์มักจะใช้งานโดยใช้แอตทริบิวต์ srcset
แอตทริบิวต์ srcset
คือรายการที่คั่นด้วยคอมมาของชื่อไฟล์รูปภาพ และตัวอธิบายความกว้างหรือความหนาแน่น ตั้งค่าแอตทริบิวต์ width
และ height
ในแท็ก <img>
และ <source>
ที่ใช้ srcset
เพื่อป้องกันไม่ให้เลย์เอาต์เปลี่ยนแปลง
สำหรับรูปภาพที่ปรับเปลี่ยนตามอุปกรณ์ซึ่งใช้ตัวบอกความหนาแน่น
- รูปภาพทั้งหมดที่แสดงใน
src
และsrcset
ควรมีสัดส่วนภาพเท่ากัน - ตั้งค่าแอตทริบิวต์
width
และheight
ให้ตรงกับขนาดของรูปภาพ1x
- แอตทริบิวต์
src
ควรอ้างอิงถึงรูปภาพ1x
สำหรับรูปภาพที่ปรับเปลี่ยนตามอุปกรณ์ซึ่งใช้ตัวบอกความกว้าง ให้ทำดังนี้
- รูปภาพทั้งหมดที่แสดงใน
src
และsrcset
ควรมีสัดส่วนภาพเท่ากัน - ตั้งค่าแอตทริบิวต์
width
และheight
ให้ตรงกับขนาดของรูปภาพสำรอง - ปรับการจัดรูปแบบรูปภาพตามความจำเป็น: หากไม่มีการจัดรูปแบบ CSS การตั้งค่า
width
และheight
ในรูปภาพที่ตอบสนองตามอุปกรณ์ซึ่งใช้ข้อบ่งชี้ความกว้างจะทำให้รูปภาพแสดงผลที่ขนาดเดียวกันเสมอ แม้ว่ารูปภาพที่แสดงในsrcset
จะมีขนาดต่างกันก็ตาม ลักษณะการทำงานนี้อาจไม่ใช่สิ่งที่คุณต้องการ การเพิ่มwidth: 100%; height: auto;
หรือwidth: 100vw; height: auto;
ในการจัดรูปแบบรูปภาพอาจให้ลักษณะที่ปรากฏตามที่ต้องการ
สำหรับแท็ก <picture>:
- ตั้งค่าแอตทริบิวต์
width
และheight
สำหรับแท็ก<source>
ทั้งหมด: ค่าที่เหมาะสมสำหรับwidth
และheight
จะขึ้นอยู่กับวิธีที่แท็ก<source>
ใช้srcset
(ดูข้อมูลเกี่ยวกับการทำงานร่วมกับsrcset
ด้านบน) - ปรับการจัดรูปแบบรูปภาพ: หากจำเป็นต้องปรับการจัดรูปแบบรูปภาพ โปรดทราบว่าการเพิ่มการจัดรูปแบบในแท็ก
<source>
จะไม่ส่งผลใดๆ เนื่องจากแท็ก<source>
เป็นองค์ประกอบเปล่า แต่ต้องจัดรูปแบบแท็ก<img>
ที่เกี่ยวข้องแทน - ตั้งค่าแอตทริบิวต์
width
และheight
ในแท็ก<img>
: ค่าเหล่านี้ควรตรงกับขนาดภายในของรูปภาพสำรอง
HTML
<!-- Using density descriptors -->
<img width="480" height="330"
srcset="cat-1x.jpg, cat-2x.jpg 2x, cat-3x.jpg 3x"
src="cat-1x.jpg"
alt="Photo of a cat on a green background">
<!-- Using width descriptors -->
<img width="256" height="128"
srcset="dog-256w.jpg 256w, dog-512w.jpg 512w, dog-1028w.jpg 1028w"
src="dog-256w.jpg"
alt="Photo of a dog on a orange background">
<!-- Picture tag -->
<picture>
<source media="(max-width: 720px)" width="600" height="300" srcset="newyork-rectangle.jpg" />
<source media="(min-width: 721px)" width="600" height="600" srcset="newyork-square-1x.jpg, newyork-square-2x.jpg 2x, newyork-square-3x.jpg 3x" />
<img src="newyork-rectangle.jpg" width="600" height="300" alt="Photo of the Empire State Building">
</picture>