# Drift columns

> Six portrait frames in three columns of two, each column started lower than the one before it, so the frames read as a descending diagonal. A tracked label sits above the first column and one short line of type sits in the space the offset opens at the top of the third. Includes replaceable example photographs cropped to 4:5. States no colour and no font of its own.

Canonical: https://patternpaste.com/pattern/drift-columns.html
Section: Gallery
Access: Included in Pattern Paste access.
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, group, image, paragraph
Keywords: gallery, columns, portrait, staircase, offset, diagonal, six frames

## Variations (2)

### Falling drift (the default)

Identical markup in every theme.

The columns start progressively lower, left to right, so the six frames step down across the section. The line of type occupies the space the last step opens up. On a phone the columns stack and the offsets become a rhythm of gaps between the pairs.

### Rising drift

Identical markup in every theme.

The same six frames with the staircase reversed: the first column starts lowest and the last starts at the top, so the drift climbs left to right. The label and the line move with it, to the space the reversal opens on the other side.


---

## The signature moment: the baseline drifts across the columns

There is no decoration in this pattern at all. The design is the staircase of
unequal starting heights and nothing else. Column one begins at the top of the
band, column two is pushed down 4rem, and column three is pushed down about the
same again, so the tops of the six frames trace a descending diagonal from the
top-left corner to the middle of the right-hand edge.

Two things stop that reading as a mistake. **The step is constant**, so the eye
gets a rule rather than three arbitrary positions; a single odd column reads as a
broken layout, three evenly spaced ones read as a decision. And **the type occupies
the void the last step creates**: the short line sits in the empty space at the top
of the third column rather than leaving it blank, so the offset is doing work
instead of merely existing.

It survives colourlessness because it is made of offset alone. Take every colour
away and the diagonal is still there, since it is built from `padding-top` on the
columns and from nothing that a palette can carry. That is the point: a pattern
whose signature is a coloured wash has no signature in a theme that resolves that
wash to something else.

**What happens below 782px.** Core stacks `core/columns` into a single vertical
run, and the three columns become three full-width groups one under another. The
diagonal cannot survive that, and it is not asked to: the `padding-top` on each
column stays where it is and becomes vertical space above that column's pair of
frames, on top of the `spacing|40` block gap between the columns. So on a phone the
section reads as three pairs of frames separated by a growing rhythm of gaps,
first pair tight, second pair set apart, third pair set apart with the line of
type in the space. The drift changes axis rather than disappearing, and no frame
moves sideways, because no negative margin is used anywhere.

## How the offsets are built

The offset is `style.spacing.padding.top` on the `core/column` itself, in `rem`.
A column is not a direct child of a constrained band, so padding on it is safe:
nothing centres a column inside the columns row, so the padding stays inside the
column's own box instead of pushing the block out of the layout's `max-width`
(the failure `content-columns` shipped, recorded in the authoring skill). Negative
margins are not used, so there is no margin collapse to reason about.

The third column's offset is split in two, and deliberately: `2.5rem` of padding,
then the line of type, then a `2.25rem` bottom margin under it. With the line's
own two lines of body copy that lands the third column's first frame at roughly
`8rem`, the same step again, while putting the type inside the void rather than
above it. Every value is `rem`, never `vh`: 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.

## What it inherits, what it decides

Inherits: every colour (the band is a `base` chain, all type a `contrast` chain,
and there is no third colour anywhere), the typeface, and the spacing scale
(`spacing|70` above and below the band, `spacing|50` between the label and the
row, `spacing|40` between the two frames in a column and between the columns once
they stack).

Decides: the 4:5 portrait proportion of all six frames and the `cover` scale that
crops the buyer's uploads to it, the constant offset step and its `rem` values,
the 1240px measure with `clamp(1.25rem, 4vw, 4rem)` gutters, the
`clamp(1rem, 2vw, 2rem)` gap between the columns, and the proportion of the two
pieces of type: a 13px to 14px label at `0.22em` tracking in caps, and a 15px to
17px line at 1.5.

## What a buyer changes first

The photographs. **All six image blocks include example photographs**; choose Replace to select an image from your media library, and the 4:5 crop and the
whole composition are already set. The frames read best as a sequence, so use six
pictures that belong together; the drift is what makes them one thing rather than
a grid of six unrelated ones.

The two pieces of type are the second thing. The label is set in caps with wide
tracking and reads best under 30 characters. The line wants to run to about two
lines in the column, roughly 80 to 100 characters, because it is holding open the
space the last step created; one short clause leaves that space looking abandoned.

To change the depth of the drift, change the `padding-top` on the second and third
columns together, keeping the two steps equal. Making them unequal is the one edit
that breaks the signature.

## Variations

- **Rising drift** (`drift-rise`): the staircase climbs instead of falling. The
  first column carries the largest offset and the third carries none, so the six
  frames step UP from the bottom-left to the top-right. The label moves with it,
  to the top-right above the column that now starts at the top, and the line of
  type moves into the void the reversal opens at the top of the first column. Same
  six frames, same 4:5 proportion, same colours, same values: only the composition
  mirrors, which is a change of one axis and not a dial. It reads differently
  because a falling diagonal settles and a rising one lifts, and a portfolio that
  ends high is a different sentence from one that ends low.

## 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.
