Skip to main content

Overview

Aspect Ratio displays content within a desired aspect ratio by automatically computing height based on the provided ratio and width.

Features

  • Ensures content maintains a specific aspect ratio
  • Accepts any custom ratio

Installation

npm install @radix-ui/react-aspect-ratio

Anatomy

import * as AspectRatio from '@radix-ui/react-aspect-ratio';

export default () => (
  <AspectRatio.Root>
    <img src="..." alt="..." />
  </AspectRatio.Root>
)

API Reference

Root

Contains the content constrained to the given ratio.
ratio
number
default:"1"
The desired ratio. For example, 16/9 for a 16:9 aspect ratio.

Examples

Image with 16:9 Ratio

import * as AspectRatio from '@radix-ui/react-aspect-ratio';

export default () => (
  <div style={{ width: 300 }}>
    <AspectRatio.Root ratio={16 / 9}>
      <img
        src="https://images.unsplash.com/photo-1535025183041-0991a977e25b"
        alt="Landscape"
        style={{
          objectFit: 'cover',
          width: '100%',
          height: '100%',
        }}
      />
    </AspectRatio.Root>
  </div>
);

Square Ratio

import * as AspectRatio from '@radix-ui/react-aspect-ratio';

export default () => (
  <div style={{ width: 300 }}>
    <AspectRatio.Root ratio={1}>
      <img
        src="https://images.unsplash.com/photo-1535025183041-0991a977e25b"
        alt="Square image"
        style={{
          objectFit: 'cover',
          width: '100%',
          height: '100%',
        }}
      />
    </AspectRatio.Root>
  </div>
);

Video with 4:3 Ratio

import * as AspectRatio from '@radix-ui/react-aspect-ratio';

export default () => (
  <div style={{ width: 500 }}>
    <AspectRatio.Root ratio={4 / 3}>
      <video
        src="https://example.com/video.mp4"
        controls
        style={{
          width: '100%',
          height: '100%',
        }}
      />
    </AspectRatio.Root>
  </div>
);

Use Cases

  • Maintaining consistent image ratios in responsive layouts
  • Embedding videos that maintain their aspect ratio
  • Creating placeholder containers with specific ratios
  • Building image galleries with consistent dimensions

Build docs developers (and LLMs) love