{%hackmd anYwyN--TziyASUWcqP-Gw %} # Tvořím web A–Z 2: lekce 08 <span>12. 5. 2021 | 18:00 - 20:00 | Praha</span> Lekce 08 - Responzivní obrázky Jan Čuma --- # Základní nastavení responzivních obrázků - ve výchozím stavu nepřizpůsobují obrazký své rozměry rozměrům stránky: ```css= .image { width: 100%; } ``` - takto zajistíme, aby se obrázek přizpůsoboval velikosti svého rodiče (stránka, kontejner,...): ```css= .image { max-width: 100%; } ``` --- - vlastnost <code>max-width</code> nám zajístí, aby byl obrázek responzivní, ale nikdy nepřesáhl svou původní šířku: ```css= .image { max-width: 100%; /* zde může být i konkrétní max. šiřka v px*/ height: auto; } ``` ```htmlembedded= <img width="900" height="500" src="https://picsum.photos/900/500" /> <h1>Já nechci poskakovat</h1> ``` - pokud chceme prohlížeči říct, jaký prostor má pro obrázek vyhradit (např. v případě pomalého připojení), použijeme vlastnost CSS <code>height: auto</code> společně s HTML atributy <code>width</code> a <code>height</code> --- # Změny variant obrázků v různých šířkách displeje 1/4 ```htmlembedded= <img srcset="small.jpeg 250w, large.jpeg 1000w" src="small.jpeg" alt="Image" > ``` - prohlížeč sám rozhode, jakou variantu obrázku je vhodné zvolit - <code>w</code> deskriptor udává skutečnou šiřku (intrinsic width) obrázku --- # Změny variant obrázků v různých šířkách displeje 2/4 ```htmlembedded= <img srcset="small.jpeg 250w, large.jpeg 1000w" sizes="250px" src="small.jpeg" alt="Image" > ``` - <code>sizes</code> atribut nastaví velikost slotu (prostoru), do kterého se má obrázek vykreslit - pozor: atributy <code>sizes</code> a <code>srcset</code> spolu nemusí vždy korespondovat. Prohlížeč vždy rozhodne, jaký obrázek zobrazí --- # Změny variant obrázků v různých šířkách displeje 3/4 - můžeme přidat i podmínku: ```htmlembedded= <img srcset="small.jpeg 250w, large.jpeg 1000w" sizes="(max-width: 600px) 250px, 800px" src="small.jpeg" alt="Image" > ``` - pokud je šiřka okna menší než 600px, velikost slotu bude 250px, jinak 800px --- # Změny variant obrázků v různých šířkách displeje 4/4 - při testování je vždy dobré smazat cache v prohlížečí při obnově stránky (pravý klik + otevřené vývojářské nástroje) ![](https://i.imgur.com/gQTNfCB.png) --- # Změny variant obrázků v různých rozlišeních ```htmlembedded= <img srcset="mobile.png, mobile@2x.png 2x" src="mobile.png" alt="Image" > ``` - <code>x</code> deskriptor určuje použití obrázku pro různé poměry <code>device-pixel-ratio</code> - <code>device-pixel-ratio</code> - zjednodušeně jde o poměr, který určuje, kolik pixelů z obrazovky daného zařízení má být použito na vykreselení jednoho CSS pixelu --- # <code>picture</code> elemenet 1/2 ```htmlembedded= <picture> <source media="(max-width: 599px)" srcset="small.jpeg" > <source media="(min-width: 600px)" srcset="large.jpeg" > <img src="small.jpeg" alt="Image" > </picture> ``` - Element <code>picture</code> obsahuje žádný nebo více prvků <code>source</code> a jeden <code>img</code> element, který nabízí různé verze obrázku pro různá zobrazení / zařízení - Element <code>source</code> určuje různé zdroje médií --- # <code>picture</code> elemenet 2/2 ```htmlembedded= <picture> <source media="(min-resolution: 192dpi)" srcset="large.jpeg" > <img src="small.jpeg" alt="Image" > </picture> ``` - atribut <code>media</code> můžeme použít i pro různá rozlišení obrazovky --- # Zadání dalšího úkolu 1. použijte na stránce alespoň 5 svg obrázků nebo ilustrací (https://undraw.co/illustrations) 2. animujte alespoň 2 svg jakýmkoliv vybraným způsobem 3. využijte responzivní obrázky alespoň ve 2 případech 4. vylaďte styl vašich stránek, aby byl prezentovatelný přes Github pages --- # Konec <span>12. 5. 2021 | 18:00 - 20:00 | Praha</span> Lekce 08 - Responzivní obrázky Jan Čuma
{"metaMigratedAt":"2023-06-16T00:17:49.233Z","metaMigratedFrom":"YAML","title":"Lekce 08 | Tvořím web A–Z 2","breaks":false,"lang":"cs","slideOptions":"{\"transition\":\"none\",\"theme\":\"night\",\"margin\":0.05,\"minScale\":0.1,\"maxScale\":5,\"width\":2560,\"height\":1600}","contributors":"[{\"id\":\"0770b77c-5054-4cf7-a577-a646d73ab89a\",\"add\":4345,\"del\":161}]"}
    357 views