Matrix Animations
GPU-accelerated motion built into Matrix Framework — entrance reveals, scroll parallax, sticky card stacks, animated links and buttons, split text, and odometer-style counters. No WOW.js, no jQuery, no extra CDN scripts.
Overview
Matrix Framework ships a complete animation toolkit powered by Motion One. Everything runs from the main bundle — viewport entrance effects, scroll parallax, sticky pinning, CSS link/button micro-interactions, split text, and slot counters.
-
Global animations — one HTML widget applies entrance motion to all content modules
-
Custom classes — add
motion-*classes to any element -
Scroll effects — parallax, spin, zoom, opacity, blur via
data-motion-scroll -
Sticky sections — pin cards while scrolling with
has-sticky -
Split text & counters — word/letter reveals and odometer numbers
1 Global animations
Paste the snippet below into a Widget/HTML module in the content area (or footer) to apply one entrance effect to every Jimdo module in .hs-content.
<script type="text/javascript">
//<![CDATA[
(function() {
'use strict';
var config = {
effect: 'motion-fadeInUp', // motion-fadeIn, motion-slideUp, motion-zoomIn, etc.
speed: 'motion-normal', // motion-slower … motion-fastest
offset: 100, // viewport offset in px (0, 25, 50, 100)
sequential: false // true = 25ms stagger between modules
// delay: 'motion-delay-x1' // optional: motion-delay-x1, x2, x3
// mobile: 'motion-mobile-hidden' // optional: disable on mobile
};
})();
//]]>
</script>
<div class="matrix-msg invisible">Global animations</div>
How targeting works
-
Regular modules animate as a whole when they enter the viewport
-
Modules containing
.is-fullwidthor.hs-fullwidthonly animate inner.is-anim-blockchildren -
Elements with
text-splitare skipped — split text manages its own reveal
2 Custom animations
Add a motion-* class directly to any element. The animation runs when the element scrolls into view.
<div class="motion-fadeIn">Fades in on scroll</div>
<div class="motion-slideUp motion-faster motion-delay-x1 motion-mobile-hidden">
Fast slide-up with delay, disabled on mobile
</div>
Motion One entrance classes
| Class | Effect |
|---|---|
motion-fadeIn
|
Simple fade in |
motion-fadeInUp / Down / Left / Right
|
Fade with directional movement |
motion-slideUp / Down / Left / Right
|
Slide from edge |
motion-zoomIn / zoomOut
|
Scale in or out |
motion-bounceIn
|
Bounce entrance |
motion-flipInX / flipInY
|
2D flip |
motion-rotateIn
|
Rotate in |
motion-lightSpeedIn
|
Light-speed sweep |
Fold, flip & skew classes
| Class | Effect |
|---|---|
motion-foldLeft / Right / Top / Bottom
|
Fold from edge |
motion-foldMiddleLeftRight / TopBottom / Corner
|
Fold from center |
motion-foldBlur
|
Blur reveal |
motion-flipLeftRight / flipRightLeft
|
3D flip |
motion-skewLeft / skewRight
|
Skew reveal |
Utility classes
| Class | Description |
|---|---|
motion-slower / slow / normal / fast / faster / fastest
|
Speed multiplier (default: normal)
|
motion-delay-x1 / x2 / x3
|
0.1s / 0.2s / 0.3s delay |
motion-mobile-hidden
|
Disables animation on mobile (≤768px) |
Matrix Variables
Insert animation classes via a Variables tag on a columns module:
<var> motion-slideUp motion-delay-x1 </var>
With <var>, the effect applies to the whole columns module. For per-column control, use <ins> inside each column instead.
3 Scroll animations
Motion Scroll Effects replace the legacy enllax.js library. Add data-motion-scroll attributes to move, spin, zoom, or fade elements as the user scrolls.
<!-- Background parallax -->
<div data-motion-scroll="background" data-motion-ratio="0.5">
Background moves slower than scroll
</div>
<!-- Foreground parallax -->
<img src="photo.jpg" alt=""
data-motion-scroll="foreground"
data-motion-ratio="0.8"
data-motion-direction="horizontal-reverse" />
<!-- Spin on scroll -->
<div data-motion-scroll="spin" data-motion-ratio="0.5">
<div class="fa fa-thumbs-up fa-5x"></div>
</div>
<!-- Zoom out while scrolling -->
<img src="hero.jpg" alt="" data-motion-scroll="zoom-out" />
Available scroll effects
data-motion-scroll
|
Description |
|---|---|
background
|
Background image parallax |
foreground
|
Element moves with scroll |
spin
|
Rotation tied to scroll position |
zoom-in / zoom-out
|
Scale up or down while scrolling |
opacity
|
Fade in/out during scroll |
blur
|
Blur intensity tied to scroll |
color
|
Color transition (use data-motion-color-start / end)
|
Direction & ratio
| Attribute | Values |
|---|---|
data-motion-direction
|
vertical (default), horizontal, vertical-reverse, horizontal-reverse
|
data-motion-ratio
|
0.0–1.0 — intensity (default 0.5)
|
data-motion-offset
|
Custom starting offset in pixels |
4 Sticky animations
Pin sections while scrolling, then release them when a destroy trigger or the next card reaches the top. Built into Matrix Framework v1.7.6+ — no ScrollMagic, no jQuery.
<!-- Card that sticks while scrolling -->
<div class="is-matrix is-card has-sticky">…</div>
<!-- Next card stacks on top (cascading peek) -->
<div class="is-matrix is-card has-sticky has-sticky-top-margin">…</div>
<!-- End the sticky sequence -->
<div class="has-sticky-destroy">…</div>
Key classes
| Class | Effect |
|---|---|
has-sticky
|
Enable sticky pinning on this element |
has-sticky-destroy
|
Unpin all stickies when this section reaches the top |
has-sticky-top-margin
|
Cascading peek — each card sticks slightly lower |
has-sticky-top-20 … top-50
|
Explicit extra top offset in pixels |
has-sticky-anchor-middle / bottom
|
Stick centered or near bottom of viewport |
has-sticky-front / has-sticky-stack
|
Force front-pin or card-stack mode |
5 Animated links
CSS-only link hover effects — add classes to any <a> tag.
| Class | Style |
|---|---|
link-flash
|
Animated underline flash on hover |
link-outlined
|
Outlined underline animation |
line-bold / line-extra-bold / line-small
|
Modifiers for link-outlined line weight
|
no-line
|
Arrow only, no underline (with SVG arrow) |
arrow-link
|
Animated arrow that slides on hover |
arrow-link is-dark / is-white
|
Dark or white arrow variant |
<a class="link-flash has-link-dark" href="#">Link Flash</a>
<a class="link-outlined line-bold" href="#">Link Outlined bold</a>
<a class="arrow-link" href="#">See more<span class="arrow"> </span></a>
7 Floating animations
Continuous gentle movement — ideal for icons, badges, or decorative elements.
| Class | Effect |
|---|---|
anim-up-down
|
Floats up and down in a loop |
anim-left-right
|
Floats left and right in a loop |
<div class="anim-up-down">…</div>
<!-- Or via Matrix Variables on a columns module -->
<var> anim-left-right </var>
8 Animated text
Scroll-triggered split text built with Motion One and SplitType. Add text-split plus one effect attribute. No extra CDN scripts required.
| Attribute / class | Effect |
|---|---|
words-slide-up
|
Words slide up sequentially |
words-rotate-in
|
Words rotate into place |
words-slide-from-right
|
Words enter from the right |
letters-slide-up / letters-slide-down
|
Per-letter vertical reveal |
letters-fade-in / letters-fade-in-random
|
Letter fade (sequential or random) |
scrub-each-word
|
Words animate as you scroll (scrubbed) |
<h2 words-slide-up text-split>Words Slide Up Effect</h2>
<h2 letters-fade-in-random text-split>Letters Fade In Random</h2>
<p scrub-each-word text-split>
This sentence scrubs word by word as you scroll.
</p>
9 Slot counter
Odometer-style animation for numbers and text — each character scrolls through a vertical reel before landing on the final value. Respects prefers-reduced-motion.
<!-- Numbers -->
<p class="counter" data-counter-effect="slot">25</p>
<p class="counter-slot-slow">5000</p>
<!-- Words (auto-detected) -->
<h1 class="counter counter-slow center-align size-30"
data-counter-effect="slot"
data-counter-alternate-speed
data-counter-spins="2">
The choice is yours.
</h1>
Useful attributes
| Attribute / class | Description |
|---|---|
counter-slot / counter-slot-slow / slower
|
Speed presets for numbers |
data-counter-effect="slot"
|
Enable slot reel on a .counter element
|
data-counter-alternate-speed
|
Even chars faster, odd chars slower |
data-counter-spins="2"
|
Number of full reel spins before landing |
data-counter-speed-ratio="0.6,1.8"
|
Custom fast/slow speed multipliers |
Troubleshooting
| Issue | Fix |
|---|---|
| Animations not visible in editor |
Expected — preview the public page. Entrance, scroll, sticky, and split text are disabled when body.matrix is present.
|
| Global animation not applying |
Confirm the config snippet is in a saved Widget/HTML module and includes var config = { effect: … }. Check the console with debugMode: true.
|
| Scroll parallax not moving |
Use data-motion-scroll (not only legacy data-enllax-type without the new attribute). Verify ratio is between 0 and 1.
|
| Sticky section jumps or overlaps header |
Ensure a .sticky-wrapper or .hs-header exists so Matrix can measure the header offset. Try has-sticky-top-margin for stacked cards.
|
| Split text not splitting |
Both text-split and an effect attribute (e.g. words-slide-up) are required on the same element.
|
| Chrome tab freeze on old sites | Legacy WOW Fold/Flip/Skew affects Matrix One/Themes only. Matrix Framework uses Motion One — see the Chrome freeze guide. |
Next steps
Matrix Variables
Insert animation, spacing, and layout classes from the Variables popup — no manual typing.
Open Variables guide →Page Builder
Add entrance animations and split text per widget from the visual builder toolbar.
Open Page Builder guide →Style Editor
Configure button hover animations, colors, and global motion-friendly design tokens.
Open Style Editor →