Hình ảnh thích ứng thường được triển khai bằng thuộc tính srcset
. Thuộc tính srcset
là một danh sách tên tệp hình ảnh được phân tách bằng dấu phẩy và mã mô tả chiều rộng hoặc mật độ tương ứng.
Để tránh thay đổi bố cục, hãy đặt thuộc tính width
và height
trên thẻ <img>
và <source>
sử dụng srcset
.
Mã mô tả mật độ
Cách tạo hình ảnh thích ứng sử dụng chỉ số mô tả mật độ:
- Tất cả hình ảnh được liệt kê trong
src
vàsrcset
phải có cùng tỷ lệ khung hình. - Đặt thuộc tính
width
vàheight
sao cho khớp với kích thước của hình ảnh1x
. - Thuộc tính
src
phải tham chiếu đến hình ảnh1x
.
Chỉ số mô tả chiều rộng
Cách tạo hình ảnh thích ứng sử dụng chỉ số mô tả chiều rộng:
- Tất cả hình ảnh trong
src
vàsrcset
phải có cùng tỷ lệ khung hình. - Các thuộc tính
width
vàheight
phải khớp với kích thước của hình ảnh dự phòng. - Điều chỉnh kiểu hình ảnh nếu cần. Nếu không có CSS, nếu bạn đặt
width
vàheight
trên hình ảnh thích ứng có bộ mô tả chiều rộng, thì hình ảnh sẽ luôn hiển thị ở kích thước đã đặt đó. Điều này vẫn đúng ngay cả khi các hình ảnh được liệt kê trongsrcset
có kích thước khác nhau. Hành vi này có thể không phải là điều bạn muốn. Hãy thêmwidth: 100%; height: auto;
hoặcwidth: 100vw; height: auto;
vào kiểu hình ảnh để có được giao diện hình ảnh như bạn mong muốn.
Thành phần hình ảnh
Cách tạo phần tử <picture>
thích ứng:
- Đặt thuộc tính
width
vàheight
cho tất cả thẻ<source>
. Các giá trị phù hợp cho thuộc tính này phụ thuộc vào cách thẻ<source>
sử dụngsrcset
. - Điều chỉnh hình ảnh bằng cách tạo kiểu cho thẻ
<img>
tương ứng. Thẻ<source>
là một phần tử trống và do đó, kiểu không ảnh hưởng đến. - Đặt thuộc tính
width
vàheight
trên thẻ<img>
. Các giá trị này phải khớp với kích thước nội tại của hình ảnh dự phòng.
Ví dụ
<!-- 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>