Pick an element
Click anything on your page and switch its trigger to Click. The Builder edits the live site.
Wire a click to any element and it opens a panel, an accordion row, or a mobile menu, with the second click deciding whether it reverses, restarts, or plays again. There's no handler to write and no open/closed state to track by hand. Try it below.
The Falls Suite
Cedar, linen, and the sound of water: sleeps two, from €340/night.
320 sq ft · king bed · river-facing balcony
Meet Motion.page: All-in-One platform for web animation · YouTube
Set a 1st click selector, add an optional 2nd click selector, and choose Restart or Reverse for what the second click does. Start from scratch or from a preset such as Smooth Transitions, Creative Effects, or Text Reveals, then switch its trigger to Click.

.reveal-btn, 2nd click in sync, with the Restart and Reverse switches below. Builder v3.2.10.Click anything on your page and switch its trigger to Click. The Builder edits the live site.
A selector is just the CSS class or ID that names an element. Leave 2nd click in sync with the 1st, or point it at a separate element: a close icon, a different button entirely.
Two switches decide what a second click does. Leave both off and every click just plays forward.
Works with every platform you already use
The first click always plays. What the second click does is your call, and the difference shows when a click lands mid-animation. Try interrupting these:
A third shape, Play, is the default when both switches are off. Every click of the main control starts a fresh forward run.
You just clicked mid-animation and watched it reverse instead of restart. Wire that same trigger to your own buttons in a few minutes.
Toggling on click sounds simple until nested selectors, lists, and links get involved. The engine running this page was built to handle all of them.
A click animation responds to a click rather than the clock, the scrollbar, or the pointer's position: press a button, and a timeline plays. What a second click does is the interesting part: it can alternate the animation open and closed, replay it from scratch, or simply start another forward run.
Reverse is the accordion pattern: click once to open, click again to close. Restart replays from the beginning every time, useful for a flash or a notification that should always look the same. Play, the default, starts a fresh forward run on every click of the main control.
Motion.page adds a second control: the trigger and the animated element can be different nodes entirely, and an optional 2nd click selector, a close icon or a different button, always performs the toggle action while the primary control always restarts. With Play each iteration individually on, every matched element in a list gets its own click state.
You can, until the edge cases arrive. A hand-rolled handler has to track alternating open/closed state, survive a click that lands mid-animation (reverse from current progress, not snap), scope correctly when clickable elements nest, and keep per-card state across a list. The Click trigger handles all of that, and the published code is dependency-free: nothing extra to load or keep updated.
No. Select an element, switch its trigger to Click, set the 1st and 2nd click selectors, and choose Restart or Reverse for the second click. The published code is generated for you.
No, nothing resumes on the main control: a fresh first click always replays from the beginning. With Reverse on, the second click plays backward from wherever the animation currently is. Interrupt it mid-open and it closes from that exact point instead of snapping to the end first.
Yes, it's the canonical use case. Point the trigger at the accordion title with Reverse selected: first click opens, second click closes. Add a separate close-icon selector as the 2nd click target if you want a dedicated close control instead of a toggle.
Yes. The Click trigger ships in both the Motion.page WordPress plugin and the Desktop app, with the same 1st/2nd click and Restart/Reverse controls, and it clicks the buttons Elementor, Bricks, Divi, or Gutenberg output like any other element.
Timelines published as local code live in your own site and keep running. They don't phone home. CDN-hosted delivery (where we host and serve the animation file for you) and further editing require an active license.
Still deciding? Try free for 7 days →
Animations, shaders, or both. Flat pricing, no per-seat math.


Instant access, in Motion.page for WordPress and Desktop. Animations published as local code keep running on your site, even if you cancel.