Gradient Waves for GoHighLevel: Section Backgrounds Widget | FunnelSlayer
Animated Elements
Section Backgrounds

Gradient Waves for GoHighLevel

A horizon of gradient water rolling toward the viewer, fading into haze at the distance. Every pixel is traced through the surface by a self-contained WebGL raymarcher, so the swells are real geometry rather than a looping picture.

Controls
46
Variants shown
4
Dependencies
None
Variants

4 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.

violet horizon
deep ocean
sunset dunes
calm swell, faded
What you can control

46 controls, grouped the way you build

  • Where it paints4
  • The waves18
  • Texture3
  • Pointer interaction5
  • How it sits7
  • Performance8
  • In the builder1

Everything it does

  • Three colours from the distance to the crest
  • wave speed and travel direction
  • wave height, size and crosswise stretch
  • rolling swell
  • choppiness
  • camera tilt
  • independent desktop/mobile field of view and surface detail
  • water level
  • haze distance
  • brightness
  • grain on/off, strength and scale
  • pointer parallax with strength, smoothing, axis and return-to-centre
  • section/row/column/custom target
  • behind, above the background or over content
  • edge inset
  • opacity
  • seven blend modes
  • vignette, top, bottom and two-sided fades
  • fade size
  • corners
  • backdrop colour and visibility
  • four quality presets including custom resolution, retina and pixel-budget guards
  • frame rate
  • off-screen and hidden-tab pausing
  • reduced-motion still or hide
  • builder-only handle label
Worth knowing

How it actually behaves

The canvas stays inside the widget and is positioned over the chosen GoHighLevel section, row, column or custom selector, which receives only one scoped class. The sky above the horizon is transparent, so the backdrop colour is what shows through it and the effect drops onto an existing section background without a seam. A deterministic SVG still ships beside the canvas as a fallback rather than an underlay: gallery thumbnails, visitors with JavaScript disabled and browsers without WebGL keep a complete horizon, and the moment WebGL is ready the still steps out of the way so the shader itself is what renders. Tracing costs more than a flat background, so the quality preset caps the march length as well as the resolution, and phones get their own field of view and detail.

Setup

How to add Gradient Waves 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. Search by name or by what it does, or use the category rail on the left to narrow the list. 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.