od zera do webmastera

Znacznik PICTURE po co i jak go stosować

Znacznik PICTURE jak nie trudno odgadnąć odnosi się do zdjęć, obrazków. Nie zastępuje jednak znacznika IMG, a jakby go obudowuje, IMG znajdzie się zawsze wewnątrz PICTURE.

<picture> <img src="obrazek.jpg"> <picture>

To jeszcze nie zadziała, to tylko przykład umiejscowienia PICTURE w stosunku do IMG. Ja znam dwa sensowne zastosowania PICTURE.
Pierwszy to możliwość zastosowania dwóch formatów zapisu grafiki. Google lansują format .WEBP jest to format o dobrej kompresji plików i jeśli chcemy umieścić duży obrazek na stronie to ten format pozwala dużo zaoszczędzić na wielkości w bitach a stąd szybkości strony, więc warto. Czy wszystkie przeglądarki sobie poradzą z tym formatem? Ja nie wiem, a żeby nie gnębić się tym dylematem, można sobie poradzić przy pomocy PICTURE. Zapisujemy obrazek w formacie .JPG i tym nowym .WEBP i dajemy przeglądarce możliwość wyboru. I wygląda to tak:

<picture> <source type="image/webp" srcset="obrazek400.webp"> <img src="obrazek400.jpg"> <picture>

Przykład jesli przegladarka obsługuje format WEBP zobaczysz obrazek z '400" w tle, jesli nie z "100".

Dla przeglądarki oznacza to tyle, że jeżeli SURCE TYPE spełnia warunek IMAGE/WEBP, czyli jeśli obsługiwanym typem jest format WEBP to wczyta z SRCSET (zestaw źródeł) obrazek.webp, jeśli nie to przechodzi dalej i wczytuje co jest w IMG SRC.

Drugim zastosowaniem jest dostosowywanie się strony z grafiką do wielkości ekranu (układ responsywny). Przygotowujemy obrazek w dwuch wielkościach, a przeglądarka wczyta najmniejszy potrzebny. Tu również da szybciej wczytującą się stronę, a grafiki to dość ciężki element strony, więc wart uwagi i trzech linijek kodu.

<picture> <source media="(max-width:599px)" srcset="obrazek100.jpg"> <source media="(min-width:600px)" srcset="obrazek400.jpg"> <img src="obrazek400.jpg"> <picture>

Tu SURCE TYPE zmieniło się w SURCE MEDIA i podany jest warunek wielkości pola przeznaczonego na obrazek. Ten sposób można też wykorzystać gdy w zależności od wielkości ekranu raz chcemy użyć obrazka w pionie a raz w poziomie, a nie chcemy przypadkowego kadrowania i obcięcia np. w połowie głowy.

Przykład przy zmniejszeniu ekranu poniżej 600px podmieni się obrazek na mniejszy.