Card Flip
The Card Flip block creates a two-sided content card with animated transitions.
It is designed to be:
- Content-first: both sides support standard Gutenberg content blocks.
- Configurable: choose flip or slide animations, speed, trigger behavior, min height, and aspect ratio.
- Accessible: supports keyboard interaction and an optional visible toggle button.
What this block creates
When you insert Card Flip, it creates two required child blocks:
yoko/card-flip-frontyoko/card-flip-back
Both child blocks support normal block editing and can contain common content blocks such as headings, paragraphs, lists, and buttons.
By default, each side starts with:
- white background
- light border
- internal padding
You can override these defaults using each face block's style controls.
Block settings
The parent Card Flip block includes these settings in the block sidebar.
Flip Speed (ms)
Controls transition duration.
- Default:
600 - Range:
200to2000
Animation Type
Controls the transition direction and style.
Available values:
flip-horizontalflip-verticalslide-upslide-downslide-leftslide-right
Default: flip-horizontal
Flip Trigger
Controls how the card toggles state.
Available values:
hoverclickboth
Default: hover
Minimum Height
Sets the minimum card height for both editor preview and frontend rendering.
- Default:
300px - Example values:
300px,20rem,40vh
On the frontend, the block also measures front/back content and raises effective min height when needed so content is not clipped.
Use Aspect Ratio
Enables or disables ratio-based sizing at the card container level.
- Default: enabled
When enabled, set:
- Aspect Ratio Width (default
1) - Aspect Ratio Height (default
1)
Example: width 16, height 9 produces a 16:9 card.
Show toggle button
Shows a visible button inside the card for manual toggling.
- Default: disabled
When enabled, the block renders a standard WordPress button structure (.wp-block-button + .wp-element-button) to improve consistency with theme styles and accessibility.
Interaction behavior
Hover trigger
- Card flips on pointer enter.
- Card resets on pointer leave.
Click trigger
- Card toggles on click.
- If no visible toggle button is shown, the card wrapper is made keyboard focusable and behaves like a button (
role="button",aria-pressed, Enter/Space support).
Both trigger
- Hover and click interactions are both active.
Styling
Parent block supports
- Alignment: wide, full
- Spacing: margin, padding
- Background color
Face block supports (Card Flip: Front and Card Flip: Back)
- Background and text color
- Border color/style/width/radius
- Padding
This allows each side to be styled independently.
Accessibility notes
- The optional visible toggle button is recommended for mixed input scenarios.
- In click mode without visible button, the wrapper gets accessible button semantics.
- Toggle state is synchronized with
aria-pressedattributes.
Troubleshooting
I cannot add blocks to the front or back side
Use the selected face block (Card Flip: Front or Card Flip: Back) and insert content inside that face. Each face supports normal inner block insertion.
The card is too short for my content
Increase Minimum Height, or disable aspect ratio if strict ratio sizing is limiting your layout.
Slide animations look clipped
This is usually due to content exceeding the available card area for the chosen ratio/min-height combination. Increase min height or adjust ratio.
I need a keyboard-friendly interaction without hover
Use Flip Trigger: click (or both) and enable Show toggle button.
Technical notes (for developers)
- Parent block name:
yoko/card-flip - Child blocks:
yoko/card-flip-frontyoko/card-flip-back
- Parent is dynamically rendered via
render.php. - Frontend interactions and content-aware height sync run in
view.js. - Aspect ratio is applied with CSS custom property
--flip-aspect-ratiowhen enabled. - Min height and speed are exposed as CSS vars (
--flip-min-height,--flip-speed).