Flickering Grid for GoHighLevel: Section Backgrounds Widget | FunnelSlayer
Animated Elements
Section Backgrounds

Flickering Grid for GoHighLevel

A field of small squares that flicker behind your section, drawn on canvas. Drop the widget anywhere inside the section and it covers the section. It walks up through however many rows and columns you have nested and lights the container itself. On the live page the widget has no footprint at all; in the builder it leaves a small click target so you can get back to its settings.

Controls
21
Variants shown
5
Dependencies
None
Variants

5 ways to run it

Every one of these is the real element with different settings. Press play again to watch any of them from the start.

over the content, screen blend
dense grid, vignette
big squares, top fade
frozen grid (0% re-roll)
inset with rounded corners
What you can control

21 controls, grouped the way you build

  • Where it paints4
  • The grid8
  • How it sits5
  • Performance3
  • In the builder1

Everything it does

  • Target a section, a row, a column, or any class you name
  • sits behind the content, above the section’s own background, or over the content
  • pull in from the edges
  • square size
  • space between squares
  • square color
  • brightest and dimmest opacity
  • how much of the grid re-rolls each second
  • time between frames
  • a coarser grid on phones
  • overall strength
  • seven blend modes
  • fade towards the edges, the top, the bottom or both
  • rounded corners
  • pauses when scrolled past
  • pauses in background tabs
  • retina or standard sharpness
  • your own label on the builder handle
Worth knowing

How it actually behaves

The first element that paints somewhere other than itself. It walks up with closest() to the .c-section (or .c-row, .c-column, or a class you type) around it and covers that container. The canvas ships inside the widget’s own markup and is positioned over the target. It is never inserted into the section, because GoHighLevel owns that subtree and re-renders it when a foreign node appears, which breaks every other animated element in the same section.

Invisible on a published page. The widget root has no height and renders nothing for visitors; only the background shows. Inside the builder it shows a small labelled pill so the element stays selectable.

Rendering a demo standalone: there is no .c-section in a demo grid, so it falls back to painting its own box (min-height 190px, dark surface). That is the intended preview and needs no extra markup. Wrap it in a `<div class="c-section">` if you want to demo the real targeting.

Setup

How to add Flickering Grid to a GoHighLevel page

  1. 01

    Open the element panel

    In the page builder, click the + button to add a new element.

  2. 02

    Go to Widget Marketplace

    In the left menu, select Widget Marketplace.

  3. 03

    Find Animated Elements

    Locate the Animated Elements widget by Funnelslayer in the installed apps list.

  4. 04

    Drag and drop it into the page

    Drop the widget where you want it. The Web Widget Settings modal opens on the element gallery: "Select an element to start with".

  5. 05

    Select an element and continue

    Choose an element (Animated Counter, Typing Animation, and more), then click Continue. You can switch elements later without losing your settings.

  6. 06

    Customize it

    Use the element's settings to customize everything to match your brand. The live preview updates as you go, with separate desktop and mobile views.

Questions

Common questions

Does the animated background show up as an empty block on my page?
No. On a published page the widget root has no height and renders nothing for visitors, so only the background itself is visible. Inside the builder it shows a small labelled pill so the element stays selectable.
Will a canvas background hurt performance?
It pauses when scrolled past and pauses in background tabs, and it can render a coarser grid on phones. You can also set the re-roll rate to zero for a completely static pattern that still fades and blends.
Why does it cover the section instead of being placed inside it?
GoHighLevel owns the section subtree and re-renders it when a foreign node appears, which would break every other animated element in the same section. The canvas therefore ships inside the widget’s own markup and is positioned over the target rather than inserted into it.