Spec-Zone.ru › CSS

Медиавозможность CSS `aspect-ratio`

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

aspect-ratio CSS-медиавозможность media feature позволяет проверить соотношение сторон области просмотра.

Синтаксис

Медиавозможность aspect-ratio задаётся значением <ratio>, представляющим соотношение ширины и высоты области просмотра. Это функция диапазона, поэтому для проверки минимальных и максимальных значений также можно использовать варианты с префиксами min-aspect-ratio и max-aspect-ratio соответственно.

Примеры

В примере ниже элемент <div> находится внутри <iframe>. Iframe создаёт собственную область просмотра. Измените размер <iframe>, чтобы увидеть aspect-ratio в действии.

Обратите внимание: если ни одно из условий медиазапросов не выполняется, фон станет белым, поскольку ни одно из правил ниже не будет применено к <div> внутри <iframe>. Попробуйте определить, какие значения ширины и высоты вызовут это!

HTML

<iframe
  id="outer"
  srcdoc="<div id='inner'>Watch this element as you resize iframe viewport's width and height.</div>">
</iframe>

CSS

/* Minimum allowed aspect ratio */
/* Select aspect ratios 8/5 = 1.6 and above */
@media (min-aspect-ratio: 8/5) {
  div {
    background: #9999ff; /* blue */
  }
}

/* Maximum allowed aspect ratio */
/* Select aspect ratios 3/2 = 1.5 and below */
@media (max-aspect-ratio: 3/2) {
  div {
    background: #99ff99; /* green */
  }
}

/* Exact aspect ratio, put it at the bottom to avoid override */
@media (aspect-ratio: 1/1) {
  div {
    background: #ff9999; /* red */
  }
}

Результат

<label id="wf" for="w">width:165</label>
<input id="w" name="w" type="range" min="100" max="250" step="5" value="165" />
<label id="hf" for="w">height:165</label>
<input id="h" name="h" type="range" min="100" max="250" step="5" value="165" />
<label id="ratio">aspect-ratio: 165/165 = 1</label>

<iframe
  id="outer"
  srcdoc="<style> @media (min-aspect-ratio: 8/5) { div { background: #9999ff; } } @media (max-aspect-ratio: 3/2) { div { background: #99ff99; } } @media (aspect-ratio: 1/1) { div { background: #ff9999; } }</style><div id='inner'> Watch this element as you resize iframe viewport's width and height.</div>">
</iframe>
iframe {
  display: block;
  border: 1px dashed black;
}
outer.style.width = outer.style.height = "165px";

const updateRatio = () => {
  ratio.textContent = `aspect-ratio: ${w.value}/${h.value} = ${(w.value / h.value).toFixed(2)}`;
};

w.onchange = w.oninput = () => {
  outer.style.width = `${w.value}px`;
  wf.textContent = `width: ${w.value}`;
  updateRatio();
};

h.onchange = h.oninput = () => {
  outer.style.height = `${h.value}px`;
  hf.textContent = `height: ${h.value}`;
  updateRatio();
};

Обратите внимание: min-aspect-ratio: 8/5 задаёт нижнюю границу 1.6, поэтому этот медиазапрос выбирает элементы с соотношением сторон 1.6 и выше. max-aspect-ratio: 3/2 задаёт верхнюю границу, поэтому этот медиазапрос выбирает элементы с соотношением сторон 1.5 и ниже. aspect-ratio: 1/1 переопределяет правило максимального соотношения сторон, поскольку объявлено после него, и выбирает элементы с соотношением сторон, равным 1.

В исходном состоянии при уменьшении высоты соотношение сторон начинает увеличиваться от единицы. Поэтому цвет фона div меняется от красного (1) < зелёного (1.5) < белого < синего (1.6).

Спецификации

Спецификация
Media Queries Level 4
# aspect-ratio

Совместимость с браузерами

Компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS
aspect-ratio
3
12
3.5
10
5
18
4
10.1
4.2
1.0
4.4
4.2

См. также

  • Понимание aspect-ratio
  • Использование медиазапросов
  • @media

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@media/aspect-ratio

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API