aspect-ratio

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

aspect-ratioCSSメディア特性で、ビューポートアスペクト比を調べるために使用します。

構文

aspect-ratio 特性は、ビューポートの幅対高さのアスペクト比を表現する <ratio> 値で指定します。これは範囲の特性であり、接頭辞の付いた min-aspect-ratio および max-aspect-ratio の変化形を使用して、それぞれ最小値と最大値をクエリーすることができます。

以下の例は独自のビューポートを生成する <iframe> に含まれています。 <iframe> の大きさを変更して aspect-ratio の変化を確認してください。

なお、メディアクエリーの条件がどれも true でない場合、背景は白になります。これは、以下のルールが <iframe> 内の <div> に適用されないためです。どの幅と高さの値がこれを起こすのか、見つけてみてください。

HTML

html
<iframe id="outer">
  <div id="inner">
    ビューポートの幅と高さを変更しながら、この要素を見ていてください。
  </div>
</iframe>

CSS

css
/* 最小アスペクト比 */
/* アスペクト比が 8/5 = 1.6 以上である場合に選択 */
@media (min-aspect-ratio: 8/5) {
  div {
    background: #99f; /* 青 */
  }
}

/* 最大アスペクト比 */
/* アスペクト比が 3/2 = 1.5 以下である場合に選択 */
@media (max-aspect-ratio: 3/2) {
  div {
    background: #9f9; /* 緑 */
  }
}

/* 正確なアスペクト比。上書きを防ぐために最下部に配置 */
@media (aspect-ratio: 1/1) {
  div {
    background: #f99; /* 赤 */
  }
}

結果

min-aspect-ratio: 8/5 は下限を 1.6 に設定するため、このメディアクエリーはアスペクト比が 1.6 以上の要素を選択します。 max-aspect-ratio: 3/2 は上限を設定するため、このメディアクエリーはアスペクト比が 1.5 以下の要素を選択します。 aspect-ratio: 1/1 は、後で宣言されているため、最大アスペクト比のルールを上書きし、アスペクト比が正確に 1 の要素を選択します。

初期状態から高さを縮小すると、アスペクト比は 1 から増加し始めます。そのため、div の背景色は 赤 (1) < 緑 (1.5) < 白 < 青 (1.6) の順に変化します。

仕様書

Specification
Media Queries Level 4
# aspect-ratio

ブラウザーの互換性

関連情報