Obrazy elastyczne są często implementowane za pomocą atrybutu srcset
. Atrybut srcset
to rozdzielona przecinkami lista nazw plików obrazów oraz ich deskryptorów width lub gęstości. Aby zapobiec przesunięciom układu, ustaw atrybuty width
i height
w tagach <img>
i <source>
, które korzystają z srcset
.
W przypadku obrazów elastycznych, które używają deskryptorów gęstości:
- Wszystkie obrazy wymienione w atrybutach
src
isrcset
powinny mieć ten sam współczynnik proporcji. - Ustaw atrybuty
width
iheight
, tak aby pasowały do wymiarów obrazu1x
. - Atrybut
src
powinien odnosić się do obrazu1x
.
W przypadku obrazów elastycznych, które używają deskryptorów szerokości:
- Wszystkie obrazy wymienione w formatach
src
isrcset
powinny mieć ten sam współczynnik proporcji. - Ustaw atrybuty
width
iheight
, tak aby pasowały do wymiarów obrazu zastępczego. - W razie potrzeby dostosuj styl obrazu: w razie braku stylu CSS ustawienie wartości
width
iheight
na obrazie elastycznym, który korzysta z deskryptorów szerokości, spowoduje, że obraz będzie zawsze renderowany w tym samym rozmiarze nawet wtedy, gdy obrazy wymienione wsrcset
mają różne wymiary. Może to nie być zgodne z Twoimi oczekiwaniami. Dodaniewidth: 100%; height: auto;
lubwidth: 100vw; height: auto;
do stylu obrazu może uzyskać pożądany wygląd.
Tagi <picture>:
- Ustaw atrybuty
width
iheight
we wszystkich tagach<source>
: odpowiednie wartości dlawidth
iheight
zależą od tego, jak tag<source>
wykorzystujesrcset
. (Informacje na temat pracy z usługąsrcset
znajdziesz powyżej). - Dostosowywanie stylu obrazu: jeśli chcesz zmienić styl obrazu, pamiętaj, że dodanie stylu do tagu
<source>
nie przyniesie żadnego efektu – tag<source>
będzie pustym elementem. Zamiast tego musisz określić styl odpowiedniego tagu<img>
. - Ustaw atrybuty
width
iheight
w tagu<img>
: te wartości powinny pasować do wewnętrznego rozmiaru obrazu zastępczego.
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>