Media

Base responsive behaviour for images and video, plus the ln-media block for framed media with aspect ratios and captions. Media elements have intrinsic dimensions governed by their source files, so they will generally break vertical rhythm.

Base element defaults

The base layer makes all <img> and <video> elements responsive by default. They scale down to fit their container while preserving their intrinsic aspect ratio.

index.htmlhtml
<!-- Images and video are responsive by default — no classes needed -->
<img src="/placeholder.svg" alt="Responsive image">
<video src="/sample.mp4" controls>…</video>
Responsive image
styles.csscss
/* Base layer — applied automatically */
img, video {
  max-inline-size: 100%;
  block-size: auto;
}

Media block with caption

A container for images, video, and embeds with aspect-ratio control and captions. The __frame element holds the media and applies ratios and overflow clipping.

index.htmlhtml
<div class="ln-media ln-media--bordered">
  <div class="ln-media__frame">
    <img class="ln-media__img" src="/placeholder.svg" alt="Placeholder image">
  </div>
  <p class="ln-media__caption">A bordered media block with a descriptive caption below.</p>
</div>
Placeholder image

A bordered media block with a descriptive caption below.

Aspect ratios

index.htmlhtml
<div class="ln-media ln-media--ratio-1x1 ln-media--bordered">
  <div class="ln-media__frame">
    <img class="ln-media__img" src="/placeholder.svg" alt="1:1 ratio">
  </div>
</div>

<div class="ln-media ln-media--ratio-4x3 ln-media--bordered">
  <div class="ln-media__frame">
    <img class="ln-media__img" src="/placeholder.svg" alt="4:3 ratio">
  </div>
</div>

<div class="ln-media ln-media--ratio-3x2 ln-media--bordered">
  <div class="ln-media__frame">
    <img class="ln-media__img" src="/placeholder.svg" alt="3:2 ratio">
  </div>
</div>

<div class="ln-media ln-media--ratio-16x9 ln-media--bordered">
  <div class="ln-media__frame">
    <img class="ln-media__img" src="/placeholder.svg" alt="16:9 ratio">
  </div>
</div>

<div class="ln-media ln-media--ratio-21x9 ln-media--bordered">
  <div class="ln-media__frame">
    <img class="ln-media__img" src="/placeholder.svg" alt="21:9 ratio">
  </div>
</div>
1:1 ratio
4:3 ratio
3:2 ratio
16:9 ratio
21:9 ratio

Reference

ClassDescriptionResponsive
.ln-mediaMedia block containerNo
.ln-media__frameFrame wrapper for media contentNo
.ln-media__imgImage inside frameNo
.ln-media__captionCaption text below frameNo
.ln-media--borderedAdds border to frameNo
.ln-media--ratio-1x11:1 aspect ratioNo
.ln-media--ratio-4x34:3 aspect ratioNo
.ln-media--ratio-3x23:2 aspect ratioNo
.ln-media--ratio-16x916:9 aspect ratioNo
.ln-media--ratio-21x921:9 aspect ratioNo