Aspect Ratio
A media frame that preserves its width-to-height ratio.
- ブラウザー
- Chrome 123+Firefox 121+Safari 17.5+
- ティア
- 0
- 圧縮後のサイズ
- 268 B
- 強制レイアウトの上限
- 0 ms
- axe の上限
- 0
- SSR 対応
- はい
- 公開された契約
- テストハーネス
プレイグラウンド
16:9 · Cover
使用例
Square
The default ratio is 1. A square frame crops a landscape image at the sides.
import { AspectRatio } from "@gunkin/uiify";
<AspectRatio>
<img src="/mountains.svg" width="640" height="400" alt="An amber sun above blue mountain ridges" />
</AspectRatio>Portrait
Set ratio to 4 / 5 for a portrait frame. The image keeps its proportions while filling the frame.
import { AspectRatio } from "@gunkin/uiify";
<AspectRatio ratio={4 / 5}>
<img src="/mountains.svg" width="640" height="400" alt="An amber sun above blue mountain ridges" />
</AspectRatio>Contain
Apply .uncropped { object-fit: contain; } to keep the whole image visible. The optional skin supplies the frame background.
import { AspectRatio } from "@gunkin/uiify";
<AspectRatio ratio={16 / 9}>
<img className="uncropped" src="/mountains.svg" width="640" height="400" alt="An amber sun above blue mountain ridges" />
</AspectRatio>API
AspectRatio
| Prop | 型 | 既定値 | 説明 |
|---|---|---|---|
ratio | number | 1 | Positive finite width divided by height. Invalid numbers fall back to 1. When omitted, the CSS custom property can set the ratio. |
children | ReactNode | — | Content placed inside the frame. Intrinsic content cannot enlarge the frame. |
className | string | — | Class applied to the frame root. |
style | CSSProperties | — | Native root styles, including --uiify-aspect-ratio when ratio is omitted. |
ref | Ref<HTMLElement> | — | Ref forwarded to the rendered root element. |
as | ElementType | "div" | Native element or component used for the root. |
render | ReactElement | ((props, state) => ReactElement) | — | Replace the rendered root while preserving its props, ref and identity marker. |
キーボード
| キー | 操作 |
|---|
アクセシビリティ
Static layout adds no role, focus target or keyboard behavior. Give meaningful images alt text; keep captions outside the frame. Required behavior CSS preserves the ratio even when children have intrinsic dimensions. Optional styles fill images with object-fit: cover; use contain to show the entire image.
スタイリングのフック
data-uiify-aspect-ratiodata-part="content"--uiify-aspect-ratio