About this set
A segmented tab strip whose panels cross-fade and rise 8 pixels instead of cutting, with three steps named Write, Review and Ship. Use it where a softer change between panels helps, such as onboarding cards or feature explainers, and where the panels are short. The trick is that display:none cannot be animated, so every panel stays rendered: all three share one grid cell, which also makes the card as tall as the tallest panel, and the hidden ones sit at opacity 0 with visibility:hidden. Transitioning visibility together with opacity means a faded-out panel stops receiving clicks and leaves the accessibility tree once it has gone. The plain CSS version is a radio group and uses :has() to pick the visible panel. The Bootstrap version keeps the .nav-pills strip and Tab plugin but overrides the .tab-pane rules so the .active pane fades in rather than switching display. The Tailwind version toggles a data-active attribute from a small WAI-ARIA tabs script.
What’s included
- Panels cross-fade and rise instead of cutting
- Panels share one grid cell, so the card never jumps in height
- visibility is transitioned with opacity, so hidden panels take no clicks
- Movement and fades switch off under prefers-reduced-motion
- Bootstrap Tab plugin with the .tab-pane display rule overridden
Accessibility
In the plain CSS version the tabs are a radio group, not ARIA tabs: the radios sit inside an element with role="radiogroup" and an aria-label, each takes its name from its visible label, Tab enters the group and the arrow keys move the selection (radios have no Home or End). In the Bootstrap and Tailwind versions they follow the WAI-ARIA tabs pattern: role tablist, tab and tabpanel, aria-selected, aria-controls, a roving tabindex, arrow keys plus Home and End. Focus shows a 2px indigo outline, and under prefers-reduced-motion the panels swap without fading or moving.
Customise it
Change the timing in the .pane transition (plain CSS), the .stage > .tab-pane rule (Bootstrap) or the duration- and translate-y- utilities (Tailwind). Colours are #4f46e5 and #f2f5fa in plain CSS, --bs-nav-pills-* on .tabs in Bootstrap and --color-tab-* in Tailwind.

















