Zdroj: https://www.vzhurudolu.cz/prirucka/css-aspect-ratio
- Jde o způsob, jak vytvářet kontejnery pro obsah (hlavně obrázky), aby držely místo, než se obsah načte.
- Pokud prohlížeči trvá načíst obsah, obrázek, iframe atd., tak je místo něho bílý prostor nebo nic a při načtení onoho obsahu stránka “poskočí”, což nechceme.
Mám nějaký container a obrázek v něm s určenými atributy width a heigh, ty drží poměr stran samotného obrázku.
<p class="box">
<img src="https://satyr.dev/4000x3000/green?delay=3000&text=IMG with WIDTH/HEIGHT" width="2000" height="1500" alt="Image">
</p>
A pro placeholder, dokud se nenačte obrázek se použije container .box, kterému nastavím aspect-ratio stejné, jako je poměr stran obrázku.
/* Placeholder color: */
.box {
aspect-ratio: 4/3;
background: grey;
}
/* Responsive/Fluid image: */
.box img {
max-width: 100%;
height: auto;
display: block;
}
Aspect-ratio v kombinaci object-fit a object-position
- pokud mám na stránce různý obsah s různými poměry stran, tak díky aspect-ratio a object-fit mohu držet jednotný poměr stran
Defaultní nastavení
- v prohlížečích je defaultní nastavení aspect-ratio pro různé obsahy takto:
img, input[type="image"], video, embed, iframe, marquee, object, table {
aspect-ratio: attr(width) / attr(height);
}
- atribut attr() - umožní do CSS vložit hodnotu příslušného atributu z HTML
- zde tedy hodnoty width a height z HTML