НачалоОсновыКомпонентыТексты

Соотношение сторон

Aspect ratio держит заданную пропорцию и растягивает на неё дочерний элемент, поэтому медиа занимает своё место ещё до загрузки и страница не прыгает.

Стабильный Figma
ОбзорИспользованиеAPIДоступность
<tk-aspect-ratio ratio="16/9" style="max-inline-size: 320px">
  <tk-skeleton shape="rect"></tk-skeleton>
</tk-aspect-ratio>

Анатомия

Часть Что это
tk-aspect-ratio сам блок; ничего не рисует и обрезает то, что выходит за край
слот по умолчанию один прямой потомок, который заполняет блок

Пропорции

<div style="display: flex; gap: var(--space-16); align-items: start">
  <tk-aspect-ratio ratio="1/1" style="inline-size: 96px"><tk-skeleton shape="rect"></tk-skeleton></tk-aspect-ratio>
  <tk-aspect-ratio ratio="16/9" style="inline-size: 96px"><tk-skeleton shape="rect"></tk-skeleton></tk-aspect-ratio>
  <tk-aspect-ratio ratio="4/3" style="inline-size: 96px"><tk-skeleton shape="rect"></tk-skeleton></tk-aspect-ratio>
  <tk-aspect-ratio ratio="3/4" style="inline-size: 96px"><tk-skeleton shape="rect"></tk-skeleton></tk-aspect-ratio>
  <tk-aspect-ratio ratio="3/2" style="inline-size: 96px"><tk-skeleton shape="rect"></tk-skeleton></tk-aspect-ratio>
</div>
ratio Где обычно
1/1 аватары, миниатюры, плитки
16/9 (по умолчанию) главное изображение, видео, карточки
4/3 классические фото
3/4 вертикальные карточки, обложки
3/2 редакционные фото

Неизвестное значение превращается в 16/9.

Другие пропорции

Для пропорции вне набора, например 21:9 или 9:16, задайте --tk-aspect-ratio значением CSS aspect-ratio. Оно важнее, чем ratio.

<tk-aspect-ratio style="--tk-aspect-ratio: 21 / 9; max-inline-size: 320px">
  <tk-skeleton shape="rect"></tk-skeleton>
</tk-aspect-ratio>

Размер и заполнение

Задайте ширину блока, например колонкой, ячейкой grid или max-inline-size. Высота следует из пропорции. Если задать height самим, он важнее пропорции.

Дочерний элемент заполняет блок без классов и обёрток. Он должен быть прямым потомком: элемент внутри обёртки <div> сохраняет свой размер и блок не заполняет.

<tk-aspect-ratio ratio="16/9">
  <tk-image src="/photos/skyline.jpg" alt="A city skyline at dusk"></tk-image>
</tk-aspect-ratio>

Чтобы скруглить или обрезать медиа, оформляйте сам дочерний элемент или задайте --tk-image-radius у Image. Сам блок не рисует ни рамки, ни фона, ни углов.