はじめに
CSS史上初めてレイアウト支援として、高さと横の比率の概念を実装したプロパティ
- これまでCSSでは高さという概念が未定義のままだった
これまで、WEBデザインでは、「上から下へ流れる」という性質上、幅(横)が決まってから高さ(縦)が決まるという一方通行な関係だった。
PCだけであったなら、これでも問題は少なかった。
しかし、スマホの登場により、レスポンシブなレイアウトが必須となった。 - レスポンシブデザインでは縦横の比率が重要
それまでCSSでは、初期状態での高さというものがまったくの未定義状態のため、箱になる要素が空っぽの状態では高さはゼロ。高さがゼロでは何も表示されない。
例えば背景画像を設定したとして、中身が空の状態では画像が表示されない。
つまり背景画像を表示させるには高さを指定する必要がある。
しかし、レスポンシブな(幅が伸び縮みする)要素に対して高さを指定、つまり固定すると、アスペクト比が崩れてしまい、レスポンシブに対応することが難しかった。背景画像も縦横比が変わってしまい、object-fit: coverやcontainといった方法で対応させる必要があった。
また、高さをパーセントで指定すれば何とかなりそうだが、そのためには、親要素を100%などにする必要があり、親要素をheight: 100%にすると弊害も多く、使える状況も限られていた。 - ハックの登場
そういったジレンマが何十年も続く中、とある解決策としてハックが登場した。
高さをレスポンシブに変化させるために、padding-topを使う変則的な封印呪文だ。
しかし、これはとてもスマートな方法とはいえなかった。というのもpaddingで高さを設定するためには箱の高さを0にする必要があり、箱の中に何もいれられなかった。
いかにも箱に入っているように見えるように、position: absoluteでフロートさせ見た目だけを合わせるという、非常に危ういとても不自然な実装であった。 - 新しい概念の誕生
そこに登場したのがaspect-ratio!
CSS史上初めてレイアウト支援として、高さと横の比率の概念を実装したプロパティだ。



