# Cover trio

> Three photograph frames in a row, each a cover with a small caption plate in its bottom-left corner, and the middle frame raised above the other two. The type never touches the image. Includes replaceable example images. States no colour and no font of its own.

Canonical: https://patternpaste.com/pattern/cover-trio.html
Section: Gallery
Access: Free, and free to keep.
Needs: Requires a block theme on WordPress 7.0 to 7.1. Classic themes and page builders are outside our supported setup. Adaptive patterns use the block theme’s colour, spacing and typography presets; styled variations declare their own colours or type.
Blocks: column, columns, cover, group, paragraph
Keywords: gallery, cover, photo, video, three up, triptych, caption

## Variations (3)

### Paper captions (the default)

Identical markup in every theme.

Three covers on your own photographs with a 30% veil of your contrast colour. Each caption plate is your base with your contrast as the type. The middle frame is 4rem taller and the row sits on its bottom edge, so the centre rises; on a phone the three stack and the rise disappears.

### In motion

Identical markup in every theme.

The raised middle frame plays a clip instead of a still; the outer two stay photographs. Choose a short, silent, looping video in the middle cover's media picker. The plates and the veil are unchanged, so the captions are exactly as legible over a clip as over a photograph.

### Ink captions

Identical markup in every theme.

The caption plates invert: your contrast as the ground, your base as the type. The same corner, more weight, for photographs that are mostly light.


---

## The signature moment: the middle frame is raised

The outer covers are 26rem tall and the middle one is 30rem, and the columns
block is vertically aligned to the bottom, set on EACH `core/column`
(`verticalAlignment: "bottom"`, written as `is-vertically-aligned-bottom`),
because the columns-level class is overridden by core's own
`align-items: normal !important` and does nothing on the front end; the
first draft set it on the parent only and the frames sat top-aligned, with
the tall one dropping instead of rising. So the three
bottoms sit flush and the centre frame rises 4rem above its neighbours: a
podium, not a grid. The rise is structural, made of height and alignment
rather than a margin, which is why it survives the phone. Below 782px core
stacks the columns, each one becomes its own flex line, the alignment has
nothing left to act on, and the three frames stack with the block gap between
them and no stray offset. No `margin-top` was needed on any column, and none
is set.

## The rule this pattern follows

**Type never sits on a photograph.** A photograph's luminance is unknowable,
and the buyer swaps all three anyway. So every caption is on a plate whose
ground is a `base` chain and whose type is a `contrast` chain, and the
contrast is measured as type on a guaranteed pair. Each cover also
states its own text colour (`base`) so that core's `:where()` rule, which
would otherwise paint any text in it `#fff`, never fires on anything a buyer
adds outside the plate.

## What it inherits, what it decides

Inherits: every colour (the band is `base`, its type `contrast`, the plates
`base` with `contrast` type, the veil `contrast` at 30%), the typeface, the
spacing scale (`spacing|70` above and below, `spacing|50` between intro and
row, `spacing|40` between stacked frames, `spacing|30` and `spacing|40`
inside each plate). Decides: the proportion of the type (a 13px tracked
label, a 15px to 17px line at 1.5), the 1240px measure, the clamp gutters,
the 21rem plate width held by a constrained wrapper with
`justifyContent: left`, the 26/30/26rem heights and the bottom alignment
that makes the centre rise, and the cover element order.

## What a buyer changes first

The photographs. **All three still-image covers include example photographs**: choose Replace on a cover, select an image from the media library, and set the focal point. The captions are the second thing; each
label is set in caps with wide tracking and reads best under 20 characters,
and each line should be long enough to wrap once at 21rem so the plate takes
its full width.

## Variations

- **Ink captions**: the plates invert, `contrast` ground and `base` type.
  Same corner, more weight, for photographs that are mostly light. The band,
  the veil and the intro row are unchanged.
- **In motion**: ONLY the middle cover gains `backgroundType: "video"`; the
  outer two stay stills and everything else is identical to the base. The
  middle cover remains empty for your own clip (an empty video cover is valid at both
  versions); choose a short, silent, looping clip in its media picker. Core
  writes the `<video>` with `autoplay muted loop playsinline`, which is what
  iOS requires to play inline without a gesture.

## Why the heights are in rem

`minHeight` is `26rem` and `30rem`, never a `vh` value. The preview on this page sizes its frame to the pattern, and a viewport-relative height would
size the pattern to the frame in turn; that loop only ever shrinks. `rem`
also keeps the 4rem rise the same in every theme at a given root size.

## Measured

The base and both variations survive an editor round-trip with every block
valid on WordPress 7.0, and each takes every colour and typeface
from the theme.

## Included images

The copied markup includes WordPress Photo Directory example photographs. The public image URLs
keep the examples visible after pasting. Select an image or cover and choose
**Replace** to use your own Media Library files. See [image credits](/image-credits/)
for the sources and licenses. Pasting an image URL does not import a Media Library
attachment.
