JINMUSOFTWARE

Aspect ratio でアスペクト比を固定する方法【CSS】

256x144px sample

ある日のこと。子要素のアスペクト比を固定したい要望がありました。

拡縮時もアスペクト比を維持しなければなりません。

CSSでアスペクト比を固定する方法

“aspect-ratio”を使用しましょう。

例えばDiv要素のアスペクト比を固定できます。

使用例

Div要素に横サイズを指定してAspect比を指定します。縦のサイズは自動計算されます。

.box {
    aspect-ratio: 16 / 9;
    width: 100%;
    max-width: 512px;
}

この”.box”クラスは、16/9の比率を維持します。

横幅は100%なので親要素に追従します。しかし最大幅はmax-widthで決められています。

“height: auto”を指定するサンプルが多かったですが、不要のようです。

container
box

max width 512px, 16 / 9

画像にaspect ratioを使ってみる

画像にも適用できます。

<img src="256x144px.png" width="256" height="144" />

元々は16/9の画像です。アスペクト比 1/1 に変更してみましょう。

.img {
    aspect-ratio: 1 / 1;
    width: 144px;
}

画像もアスペクト比を変更できましたね。

imgタグの属性でwidth、heightを指定していなかった場合は、cssプロパティでwidth、heightのどちらかの指定でアスペクト比は保持されました。

本例のようにimgタグの属性にwidth、heightを指定している場合、cssプロパティのwidthの指定のみ有効でした。

基本CSSではwidthとaspect-ratioを指定するのがいいようですね。

画像の感想

画像にはあまり使わないと思います。

画像の親要素にaspect-ratioを指定して、画像はobject-fitで制御するのがいいかなと。

まとめ

アスペクト比を指定する方法

  • widthを指定する
  • aspect-ratioで比率を指定する
.box {
    aspect-ratio: 16 / 9;
    width: 128px;
}

応用例)レスポンシブしつつ、横幅Max値を指定したい場合

.box {
    aspect-ratio: 16 / 9;
    width: 100%;
    max-width: 128px;
}

以上