Opens in a new tab
All guides

Scroll Animations in Bricks Builder Without Writing JavaScript

Six triggers, ten animation types and stagger set once on the parent β€” plus the above-the-fold rule that cost us two seconds of LCP before we found it.

Bricks scroll animations are easy to do badly. The usual result is a page where everything slides in from somewhere, each element on its own timer, and reading it feels like waiting. Done with restraint they do something useful: they signal that a new section has begun, and they draw the eye to the one thing that matters on each screen.

This guide covers how to add entrance, hover, click and scroll-linked animations to any Bricks element with the Djia Animate module β€” configured in the element controls panel, with no JavaScript files and no custom CSS β€” and, just as importantly, when not to.

Bricks scroll animations: trigger, animation, timing

Every animation is three decisions:

  • Trigger β€” what makes it fire
  • Animation β€” what it does, and with what easing
  • Timing β€” duration, delay, and stagger for children

All three live in the standard Bricks controls panel next to spacing and typography, so animating an element is the same kind of action as changing its padding.

Six triggers for Bricks scroll animations

TriggerFires whenTypical use
Scroll EnterElement enters the viewport, at an offset you setContent reveals β€” the one you will use most
Scroll ExitElement leaves the viewportFade-outs, sticky element transitions
Hover Enter / LeavePointer enters or leavesCards, buttons, image treatments
ClickElement is clicked; toggle mode reverses on second clickExpand and collapse
Page LoadImmediately after load, with optional delayHero entrance sequences
Scroll-linked ProgressProgress is tied to scroll positionProgress bars, counters, storytelling sections

Scroll Enter has two settings that decide whether it feels right: the offset (how far into the viewport the element must be) and repeat (once, or every time it re-enters). Set repeat to once for content. Repeating reveals on every scroll-by is the fastest way to make a page feel cheap.

Animations and easing

Fade, slide (up, left, right), scale up and down, rotate, blur in, clip, bounce and flip, plus stagger for children. The easing matters more than the animation type:

  • Smooth β€” the default, and correct for almost all content.
  • Spring β€” overshoots then settles. Good on small interactive elements, bad on paragraphs.
  • Linear β€” constant speed. For marquees, progress bars and loops, where acceleration would look wrong.
  • Elastic β€” heavy overshoot. One element per page at most, if any.

Stagger: set it once on the parent

The feature that saves the most time. Apply the animation to a parent, set a stagger delay, and every direct child animates in sequence β€” no per-element configuration. It works on grid, flex and list layouts, and the direction can be reversed.

Keep the stagger short. 60–80ms between cards reads as one coordinated movement; 300ms reads as a queue, and by the fourth card the visitor has started scrolling anyway.

A worked example: section reveal

Bricks scroll animations model: trigger, animation type, easing and timing
Three decisions per animation β€” and one rule about the first screen.

Three settings, a whole section that enters as one movement, and nothing to maintain. Set offset to around 20% so the animation starts as the section comes into view rather than after the visitor has already read the heading.

The part most guides skip: what it costs

Entrance animations have a specific failure mode that hurts both users and Core Web Vitals. An element that starts at opacity: 0 and animates in is, to the browser, invisible until its trigger fires. If that element is the largest thing on the first screen, your Largest Contentful Paint is measured when the animation finishes, not when the page renders.

Three rules that avoid the problem:

  • Never animate the hero heading or hero image on entrance. Above-the-fold content should be visible at first paint. Animate what is below.
  • Animate transform and opacity only. Those are composited by the GPU. Animating width, height, top or margin forces layout on every frame and also shifts the page, which is a Cumulative Layout Shift penalty.
  • Make sure content is visible if the animation never runs. If an element is still at opacity 0 because its trigger never fired, that content is gone for that visitor β€” and for anything that matters, gone for search engines.

We hit exactly the first problem on this site: a hero line was the LCP element and an entrance animation was adding over two seconds of render delay to it. Removing the animation from that one element was the single biggest win in the page’s score. The performance guide covers the rest of that work.

Respecting reduced motion

Some visitors have motion sensitivity and set a system preference for reduced motion. Honouring it is a line of CSS and it is not optional for a site that animates a lot:

@media (prefers-reduced-motion: reduce) {
  * { animation-duration: .01ms !important;
      transition-duration: .01ms !important; }
}

Content still appears; it simply appears rather than moves. Parallax and scroll-linked effects are the ones that cause the most discomfort, so disable those first.

Troubleshooting

The animation never fires

Usually the element is already in the viewport at load, so the scroll-enter threshold is never crossed. Use Page Load for anything on the first screen.

Elements are permanently invisible

Same cause, worse symptom. An element inside a container with its own overflow or transform may never register as entering the viewport. Check whether an ancestor is clipping it.

Animation stutters on mobile

Something is animating a layout property, or too many elements animate at once. Reduce the count and keep to transform and opacity.

The page jumps as sections reveal

The animation changes the element’s size and therefore the page height. Animate transform instead of dimensions.

FAQ

Do I need to write any JavaScript?

No. Triggers, animation types, easing, duration, delay and stagger are all controls in the Bricks panel.

Can one element have several animations?

Yes β€” an entrance on scroll and a separate hover animation, for example. Combining two entrance animations on the same element is where things start to look unintentional.

Will animations hurt my PageSpeed score?

Only if they touch above-the-fold content or animate layout properties. Below-the-fold transform and opacity animations have essentially no effect on the score.

Next steps

Djia Animate is one of 15 modules included in every licence. The Animate feature page has a live playground where you can try each type and easing before you build, and Interactions extends the same system with click, hover, scroll and form triggers that act on other elements.

Build it faster with Djia Bricks

15 modules and 400+ native Bricks elements: AJAX filters, Pro Forms, WooCommerce builder, conditions and animations. One plugin, every feature.

See pricingExplore features