# Index strip

> A carousel standing still: one wide 3:2 lead frame at the full measure, a tracked label and a position counter under it, and a strip of five square thumbnails at equal width, the first one marked as current by a hairline rule beneath it. Nothing moves and nothing is hidden, so the whole set is readable at once. Includes replaceable example images. States no colour and no font of its own.

Canonical: https://patternpaste.com/pattern/index-strip.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, carousel, slider, thumbnails, strip, counter, index

## Variations (2)

### Lead first (the default)

Identical markup in every theme.

The lead frame opens the section and the index sits under it: label on the left, counter on the right, then the five thumbnails. The marked thumbnail is frame 01, so use the same photograph in the lead and in the first square. On a phone the strip stays five across rather than stacking, so the counter still describes what you can see.

### Strip above

Identical markup in every theme.

The index moves above the lead, so a visitor meets the contact strip and the counter before the picture. Same six frames, same proportions, same colours; only the order changes. Use it where the section follows a headline and you want the set announced before it is shown.


---

## The signature moment: a carousel at rest

The section borrows every part of a slider except the sliding. A lead frame, a
strip of thumbnails, a position counter and a marked current frame are the four
things a visitor has been trained to read as "there is more, wait for it", and
here all of them are true at once and none of them is a promise. The whole set is
already on the page, so the visitor reads it instead of waiting for it.

**This pattern has no motion and needs no plugin.** There is no script, no
`<style>`, no `core/html` and no `patternpaste/` block in it; it is core blocks and nothing
else, and it looks the same with JavaScript switched off. That is the point
rather than a limitation: a real carousel hides four photographs out of five and
asks the visitor to earn them, and the counter on a real carousel is a promise it
keeps only if the visitor keeps clicking.

**The counter is honest because every frame is already on the page.** `01 / 05` is
not a state a script maintains; it is a caption describing a composition that
cannot change. There are five photographs in the set, all five are visible in the
strip, and the lead is frame one shown at size. That is why the pattern uses six
image blocks for five pictures: the buyer puts the same photograph in the lead
and in the first square, and the marked thumbnail and the lead are then the same
frame. Move the rule to the third square and change the counter to `03 / 05` and
the section is still true.

**It survives colourlessness** because the marker is a `currentColor` hairline and
the counter is type. `currentColor` cannot blank, needs no chain and no slug a
theme might not define, and it follows whatever colour the theme paints text on
the band: an ink line on paper in a light theme, a pale line on ink in a dark one,
and in both exactly as dark as the counter beside it. Nothing in the signature is
carried by a hue, so a theme with twelve palette slugs and a theme with two make
the same argument. Nothing a visitor reads sits on a photograph: the label and the
counter are on the band's own ground, above the strip.

## What happens at 390px

The strip is the thing at risk. Core stacks every `core/columns` below 782px, and
a stacked strip would turn five 60px thumbnails into five full-width square
frames, one under another, which is not a smaller version of this section but a
different and much worse one: a six-frame column in which the lead is no longer
the lead and the marker rule reads as a divider.

So the strip states `isStackedOnMobile: false`, which serialises to the
`is-not-stacked-on-mobile` class core's own
`.wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column{flex-basis:100%!important}`
is testing. That 0-3-0 important rule cannot be beaten by anything a pattern can
emit inline, and the attribute is the only thing that turns it off. At 390px, with
the band's `clamp(1.25rem, 4vw, 4rem)` gutters at their 20px floor and the strip's
own gutter at its 0.5rem floor, the five thumbnails land at about 64px square: a
real thumbnail rail, small but still five things in a row, still square, still
marked.

The counter still makes sense, and it makes MORE sense, because at 390px the strip
is the only way to see the other four frames at all and the counter is the label
on it. The label and the counter sit in a wrapping flex row; if the two do not fit
on one line the counter drops below the label and stays legible, because both are
incidental tracked caps rather than measured copy. The lead keeps its 3:2 crop at
whatever width it is given.

## What it inherits, what it decides

Inherits: every colour (the band is a `base` chain, its type a `contrast` chain,
the marker is `currentColor`), the typeface, and the spacing scale
(`spacing|70` above and below the band, `spacing|50` between the lead and the
index, `spacing|30` between the counter row and the strip, `spacing|20` between
each thumbnail and its rule).

Decides: the 1240px measure and the clamp gutters, the 3:2 lead against 1:1
thumbnails, five thumbnails rather than four or six (four reads as a grid, six
crowds the rail at 390px), the tight `clamp(0.5rem, 1vw, 0.875rem)` strip gutter
that keeps the row reading as one object, the 13px to 14px tracked caps at 0.22em
for both the label and the counter, and the 2px `currentColor` rule that marks the
current frame.

**The marker is a per-side group border, never a `core/separator`.** Twenty
Twenty-Four narrows any separator that is not `is-style-wide` to a centred stub,
which would put a 100px dash under the middle of the first thumbnail instead of a
rule across it. Each of the five thumbnails is wrapped in its own group with the
same `padding-bottom`, and only the first group carries the border, so moving the
marker is a matter of moving three lines of JSON rather than re-spacing the strip.
The marked column is 2px taller than its neighbours and that difference falls at
the bottom edge of the row, where nothing is aligned to it.

## What a buyer changes first

The photographs. **All six image blocks include example photographs**; choose Replace to select an image from your media library. Use the same photograph twice,
in the lead and in the first square, and the counter tells the truth.

Then the two lines of type. Both are set in caps with 0.22em tracking and read
best under about 24 characters; the label names the set and the counter names the
position. If you use a different number of frames, change the counter to match and add or
remove `core/column` blocks in the strip: no column states a `width`, so the row
re-divides itself evenly at whatever count you leave it.

## Variations

- **Strip above**: the index group, counter row and strip together, moves above
  the lead frame, so the visitor meets the contact strip before the picture. Every
  other byte is identical: the same six frames, the same proportions, the same
  chains. It is a composition change and nothing else, which is why it reads as
  deliberate in a serif theme and a sans one.

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