Up to Five Colors
Compose the gradient with up to five colors, static or dynamic. Three of them are optional, so simple gradients stay simple.
NWD Gradient Pack (All-in-One) is a set of elements that paint gradients on what you already have on the page: the background, the border, the shadow or the text. You pick the element for the area you want, and it only asks for the fields that area needs.
Built for what Bubble does not cover.
Bubble's native gradients are static, limited to a few colors and basic options, and they apply only to the background of some elements.
Text, borders and shadows cannot take a gradient at all, and none of them can animate on hover, on mouse move or on their own. Any of that takes custom code.
Compose the gradient with up to five colors, static or dynamic. Three of them are optional, so simple gradients stay simple.
Two transition types, 22 predefined directions and a custom angle that opens up every direction in between.
Background, borders, box shadow, text and text shadow, each one with its own element that carries only the properties of that area.
Static, on hover, animated, or following the cursor on the background, so the gradient can react to the user instead of just sitting there.
Size, aspect ratio, color spread, start position, neon effect and background opacity, each one in the element of the area it belongs to.
Assign an ID, point the plugin at it, and the gradient is applied. No workflow and no custom code.
In detail
In the Bubble editor, go to the tab "Settings > General > Advanced options" and check the box "Expose the option to add an ID attribute to HTML elements".
Set an ID to the element that will receive the gradient.
To prevent compatibility issues, avoid starting IDs with numbers or symbols. Start with letters and use hyphens or underscores if needed.
There is one element per area, and each one only shows the fields that belong to it:
Gradient Pack (Legacy) is the original all-in-one element, still here and unchanged. Pages built with it keep working exactly as they are, so there is nothing to migrate. New features only go into the dedicated elements, so reach for them when you want the new options, effects and finer control.
Insert the plugin element anywhere on the page and ensure it is always visible.
In Bubble, any element-type plugin must be visible to work properly.
In the plugin element, provide the ID assigned to the target element (in step 2), then set Gradient colors, shape, effect, area settings and additional configuration when applicable.
One plugin element drives one area. To combine two areas on the same target, such as a background and a border, use two plugin elements pointing at the same ID.
Each area has its own element: Background, Border, Box Shadow and Text, which carries the text, its outline and its shadow together. The one you pick carries only the properties of that area, and the colors, the transition type and the effect work the same way in all of them, so what you learn in one carries over. To style two areas of the same target, point two of these elements at the same ID. The all-in-one element, which keeps the five areas in a single property panel, still works for the pages that already use it and will be deprecated in a future version.
Provide the ID assigned to the target element, the one that will receive the gradient. The element has to be on the page and visible when this runs; if the ID is empty or does not match anything, nothing is painted and the reason is written to the browser console.
The ID box has to be turned on first, in Settings, General, Advanced options, under "Expose the option to add an ID attribute to HTML elements". Without it there is no ID to point at.
Start the ID with a letter and use hyphens or underscores if you need a separator. An ID starting with a number or a symbol is valid in Bubble but not always valid as a CSS selector.
The target has to be on the page and visible when this runs. When the ID is empty or matches nothing, nothing is painted and the reason is written to the browser console, so check there first when a gradient does not appear.
Sets the first color of the gradient. This one is always used.
Sets the second color of the gradient. This one is always used.
Sets an optional third color for the gradient. Leave it empty to blend only the colors above.
Clearing a color field shortens the gradient instead of leaving a gap: the plugin reads the colors that are filled, in order, and stops at the first empty one.
Sets an optional fourth color for the gradient. Leave it empty to blend only the colors above.
Sets an optional fifth color for the gradient. Leave it empty to blend only the colors above.
Sets the color transition of the gradient. In linear gradients the colors spread in a straight line through the indicated position or angle. In radial gradients colors emerge from the indicated position and spread away from that position.
Sets the direction a linear gradient travels: eight fixed directions, or Custom angle to type any value from 0 to 359 degrees in the field below. Zero points up and the angle runs clockwise, so 90 goes to the right.
If "custom angle" was selected in Linear direction, set here the desired angle (0 to 360 degrees).
Zero points up and the angle runs clockwise, so 90 goes to the right, 180 goes down and 270 goes to the left. It matches the CSS angle, not a trigonometric one.
It only has an effect while Linear direction is set to Custom angle.
Sets where a radial gradient starts and how far it reaches. The eight positions move the center to an edge or a corner; circle and ellipse keep it in the middle and choose the shape; closest side, closest corner, farthest side and farthest corner decide where the last color lands, which is what changes how tight the transition looks.
Sets the interaction type of the gradient effect that will be applied to the element. NOTE: Currently, the "Follow Cursor" option only supports effects in the "Background" area.
Browsers read hover differently on touch devices, so the Hover interaction can behave inconsistently on phones and tablets. For a consistent experience there, switch this property to Static or Animated with a condition for small screens.
Applicable only for "Hover" type interactions. Sets the duration, in seconds, of the fill effect when the element is hovered (valid for any fill effect on hover).
It applies to every fill direction on hover, including the special ones, so the direction and the speed are set apart from each other.
Zero removes the transition and the gradient appears at once. The default of 0.4 is close to what reads as instant while still being visible.
Sets how the gradient moves in the animated effect. The slides and shifts move the background, which reads as a texture passing behind the element; the pulsing effect, the circular motion and the wave motion move it along a path instead. The speed comes from the duration field below.
The last three travel along an edge, so they are offered where there is a perimeter to travel: Gradient Border has all three, Gradient Box Shadow has the rotating sweep, and the background, the text and the all-in-one element have the nine above.
Applicable only for "Animated" type interactions. Sets the duration, in seconds, of each animation cycle (valid for any animated effect).
Longer cycles read as ambient movement and shorter ones draw attention. The default of 14 seconds is slow on purpose: a fast cycle on a large background is tiring to sit next to.
Sets the unit used by the width and height of the gradient in Follow cursor. In percent the gradient scales with the element, which keeps the effect proportional when the page is responsive; in pixels it stays the same size wherever the element goes.
If this box is checked, the 1:1 aspect ratio will be applied, ignoring the height value.
With this on, one of the two size fields stops being read and the reference field below decides which one survives.
Sets which dimension is the main reference for maintaining the aspect ratio (only when Aspect Ratio is enabled).
It only has an effect while the aspect ratio above is locked.
Sets the width of the gradient area, as a percentage of the target element.
Sets the height of the gradient area, as a percentage of the target element.
It is ignored while the aspect ratio is locked to 1:1 and the reference is the width.
Defines the spreading intensity of the gradient colors. It is suggested to use lower intensities for smaller gradients.
Smaller gradients usually read better at the lower settings: the same spread that looks soft on a large area erases a small one.
Sets where the gradient starts inside the target element, in one of nine positions.
By checking this box will make the gradient follow the cursor movement.
Turning it off is a way to keep the look of this interaction without the movement, which is useful on touch screens, where there is no pointer to follow.
Sets which area of the element the gradient will be applied to. Specific settings for unselected areas will be ignored. NOTE: Text areas are supported for text elements only.
In the Text Shadow area, browsers only draw the effect when the element background is fully white or left undefined. When it is undefined, the parent element is the one that needs the white background.
By checking this box the gradient will include the border area of the element, but will only be visible at the borders if these are not completely opaque.
It only shows when the border is not fully opaque: a solid border covers the gradient underneath it. For a gradient on the border itself, use the Gradient Border element.
Applicable only if the "Hover" option is selected. Sets the direction of the fill effect when the element is hovered.
Enables the transition between the gradient colors instead of keeping them fixed in place.
With it off the colors keep their positions and only the whole gradient moves, which is steadier and easier to read on text-heavy backgrounds.
Sets how the background transparency is handled. Each option trades one freedom for another, because of CSS limitations.
By checking this box, gradients will be generated in opposite directions. This effect will be applied only if the "Background opacity" property is set to "Full transparent" and available only when the gradient type is "Linear" and its direction is horizontal "to left" or "to right".
It needs Background opacity set to Full transparent. With Custom opacity the border is drawn a different way and this switch does nothing.
Applicable only if the "Static" option is selected and the "Background opacity" property is set to "Full transparent". By checking this box, the border will accept any gradient type and direction, but will not accept any roundness values. Otherwise, if this box is unchecked, limited roundness will be allowed, but only "Linear" type gradients and "to left" or "to right" directions will be accepted.
It needs the Static interaction and Background opacity set to Full transparent. Outside that combination it does nothing.
The wider freedom costs the border radius: with this on, rounded corners are not preserved.
Applicable only if the "Hover" option is selected. Sets the direction of the fill effect when the element is hovered.
The "Custom opacity" option does not support the six special effects: merge from top left, merge from top right, expand from center, expand from corner, clockwise fill and counter-clockwise fill.
Sets how far the shadow spreads past the edges, in pixels, which is what makes it soft or tight. Zero gives a hard copy of the element behind it, and the larger values read as a halo rather than a shadow.
The larger values stop reading as a shadow and start reading as a halo around the element, which is the point when the gradient colors become the subject rather than the depth.
By checking this box, the border defined on the element will be converted to a neon border. Note that the perspective of the neon effect will depend on the colors used in the gradient.
The element needs a border for this to have anything to light. How convincing the neon looks depends on the palette: saturated colors on a dark background are what the effect is built for.
In some cases, depending on the arrangement structure of the elements, if the element's parent container has a background defined, this can interfere with the rendering of the expected shadow effect. In such cases, assign an ID to the parent element and provide it in this field. If the parent element is also the parent of other elements that will use the same BOX SHADOW type gradient, then only 1 reference to the parent element ID is required in a single plugin element.
Leave it empty unless the shadow is being cut off. It exists for the arrangement where the parent paints over the area the shadow needs, and naming the parent lets the plugin work around it.
Applicable only if the "Hover" option is selected. Sets the direction of the fill effect when the element is hovered.
It only applies to the Hover interaction.
Applicable only if the "Hover" option is selected. Sets the direction of the fill effect when the element is hovered.
It only applies to the Hover interaction.
Sets the type of color blending effect that will be applied.
Moves the shadow sideways, in pixels. A negative value throws it to the left. With both offsets at zero the shadow stays centered behind the element, which reads as a halo instead of a drop shadow.
With both offsets at zero the shadow stays centered behind the text and reads as a halo. Giving it an offset is what makes it read as light coming from a direction.
Moves the shadow down, in pixels. A negative value throws it up. Pair it with the horizontal offset to give the shadow a light direction, the way a drop shadow does.
Sets how soft the shadow is, in pixels. Zero gives a hard copy of the text behind it, and larger values spread it until it reads as a glow. It takes any number or a dynamic value from the app.
It takes a number or a dynamic value from the app, so the softness can follow a condition instead of being fixed.
Applicable only if the "Hover" option is selected. Sets the direction of the fill effect when the element is hovered.
It only applies to the Hover interaction, and it is set apart from the direction of the text fill so the shadow can move the other way from the letters.
Provide the ID that was assigned to the target element.
The ID box has to be turned on first, in Settings, General, Advanced options, under "Expose the option to add an ID attribute to HTML elements". Without it there is no ID to point at.
Start the ID with a letter and use hyphens or underscores if you need a separator. An ID starting with a number or a symbol is valid in Bubble but not always valid as a CSS selector.
The target has to be on the page and visible when this runs. When the ID is empty or matches nothing, nothing is painted and the reason is written to the browser console, so check there first when a gradient does not appear.
Picks the space where the browser calculates the path between the colors. Classic is the plain sRGB path. Smooth keeps the middle of the gradient as bright as the ends. Vivid travels through the hue circle and stays saturated. Browsers without support fall back to classic.
Supported from Chrome 111, Safari 16.2 and Firefox 127, with mobile matching desktop. The element tests for support before using it, so an older browser simply renders the classic path instead of losing the gradient.
Picks a ready-made set of colors for the gradient, so a good result takes one click. With custom, the colors you set below are used instead.
The list carries the family in the name, because a Bubble dropdown has no groups, and the families come in alphabetical order: fifteen landscapes, then five metals, then ten stones. Custom comes last and hands the gradient back to the five color fields below.
Sets the first color of the gradient. This one is always used.
Sets the second color of the gradient. This one is always used.
Sets an optional third color for the gradient. Leave it empty to blend only the colors above.
Clearing a color field shortens the gradient instead of leaving a gap: the plugin reads the colors that are filled, in order, and stops at the first empty one.
Sets an optional fourth color for the gradient. Leave it empty to blend only the colors above.
Sets an optional fifth color for the gradient. Leave it empty to blend only the colors above.
Sets how the colors are laid out: linear spreads them in a straight line, radial spreads them out from a point, and mesh turns each color into a soft blob so the result has no beginning and no end.
Sets the direction of a "Linear" type gradient.
If "custom angle" was selected in Linear direction, set here the desired angle (0 to 360 degrees).
Zero points up and the angle runs clockwise, so 90 goes to the right, 180 goes down and 270 goes to the left. It matches the CSS angle, not a trigonometric one.
It only has an effect while Linear direction is set to Custom angle.
Sets the direction of a "Radial" type gradient.
Places the color blobs on the element. Each color becomes one blob, and the layout decides where they sit.
The layout holds four positions. With five colors the fifth reuses the first position, and with two colors only the first two are used. A linear base sits under the blobs to close the corners no blob reaches.
Sets the interaction type of the gradient effect that will be applied to the element.
Browsers read hover differently on touch devices, so the Hover interaction can behave inconsistently on phones and tablets. For a consistent experience there, switch this property to Static or Animated with a condition for small screens.
Sets how many seconds the fill takes to cross the element on hover. Zero makes it instant, with no transition at all.
It applies to every fill direction on hover, including the special ones, so the direction and the speed are set apart from each other.
Zero removes the transition and the gradient appears at once. The default of 0.4 is close to what reads as instant while still being visible.
Sets where the color ends up. The first eight send it toward that point, the two around send one head all the way round, and the last four grow from the middle or from the ends. Each area renders the same choice its own way: on a fill a straight front crosses the element, on a border two heads run along the edge and meet. Two of them are not a direction at all: fade in place brings the whole gradient up at once, and ripple from the pointer grows a circle from the spot where the pointer came in.
Sets how much the leading edge of the fill fades out as it advances, instead of moving as a straight cut. The value is a share of the advance itself, so it keeps its proportion on any element size. Use none to keep the hard edge.
The value is a share of the advance itself, not a fixed distance, so it keeps its proportion on an element of any size.
Sets the type of animation for animated effects.
The last three travel along an edge, so they are offered where there is a perimeter to travel: Gradient Border has all three, Gradient Box Shadow has the rotating sweep, and the background, the text and the all-in-one element have the nine above.
Sets how many seconds one full cycle of the animation takes. Higher is slower and calmer; below about four seconds the movement starts to read as restless.
Longer cycles read as ambient movement and shorter ones draw attention. The default of 14 seconds is slow on purpose: a fast cycle on a large background is tiring to sit next to.
Sets how the gradient reacts to the pointer. Anywhere follows it across the whole page, so the element stays alive while the visitor moves around it. Inside the element only reacts while the pointer is over the target, and drifts back to the start position when it leaves. Fixed parks the gradient at the start position and ignores the pointer.
Sets where the gradient sits when it is not following the pointer, in one of nine positions. It is used by the fixed behavior and by the resting position after the inactivity timeout.
Sets how many seconds of a still pointer it takes for the gradient to stop following and drift back to the start position. Zero means it never rests: the gradient stays wherever the pointer left it.
The resting place is the Start position field below, the same one the fixed behavior uses, so there is no second place to set it. The drift is animated frame by frame rather than by a CSS transition, so it does not touch any transition the page already has on the element.
Sets how many seconds the drift back to the start position takes.
Only the drift away from the pointer is eased. The next pointer movement puts the gradient back under the cursor at once, because easing the return would make it trail behind the pointer.
The drift on leaving uses the same Rest drift duration as the inactivity timeout, so both ways of stopping look the same. With anywhere, the pointer never leaves, so only the timeout brings the gradient home.
Enables the transition between the gradient colors instead of keeping them fixed in place.
With it off the colors keep their positions and only the whole gradient moves, which is steadier and easier to read on text-heavy backgrounds.
If this box is checked, the 1:1 aspect ratio will be applied, ignoring the height value.
With this on, one of the two size fields stops being read and the reference field below decides which one survives.
Sets which dimension is the main reference for maintaining the aspect ratio (only when Aspect Ratio is enabled).
It only has an effect while the aspect ratio above is locked.
Sets the unit used in the gradient dimensions.
Sets the width of the gradient area, as a percentage of the target element.
Sets the height of the gradient area, as a percentage of the target element.
It is ignored while the aspect ratio is locked and the reference is the width.
Defines how soft the edge of the light is. Lower settings keep a tighter core; higher settings fade the light out earlier, so it reads as a wider glow. Smaller gradients usually look better at lower settings.
Smaller gradients usually read better at the lower settings.
By checking this box the gradient will include the border area of the element, but will only be visible at the borders if these are not completely opaque.
It only shows when the border is not fully opaque: a solid border covers the gradient underneath it. For a gradient on the border itself, use the Gradient Border element.
Picks the pattern laid over the gradient. The weight below decides how heavy it is, so each pattern covers what used to be two or three separate options.
The texture sits on its own layer over the gradient, in soft light blending, so it follows the colors underneath instead of fighting them. Every pattern is drawn by the browser: there is no image to download.
Sets how heavy the texture is. It scales the pattern and its presence together, so the texture stays balanced at any weight.
The weight moves the geometry and the presence together, because a heavier pattern needs less opacity to carry the same visual weight. On low poly it changes both the triangle size and how strongly each facet lightens or darkens.
Adds a light layer over the gradient: mesh glow spreads soft colored lights, spotlight opens a highlight at the top, and vignette darkens the edges. They are drawn with the same colors of the gradient.
Sets how strong the light treatment is. It does nothing when the light treatment is none.
It does nothing while Light treatment is set to none.
Provide the ID that was assigned to the target element.
The ID box has to be turned on first, in Settings, General, Advanced options, under "Expose the option to add an ID attribute to HTML elements". Without it there is no ID to point at.
Start the ID with a letter and use hyphens or underscores if you need a separator. An ID starting with a number or a symbol is valid in Bubble but not always valid as a CSS selector.
The target has to be on the page and visible when this runs. When the ID is empty or matches nothing, nothing is painted and the reason is written to the browser console, so check there first when a gradient does not appear.
Picks the space where the browser calculates the path between the colors. Classic is the plain sRGB path. Smooth keeps the middle of the gradient as bright as the ends. Vivid travels through the hue circle and stays saturated. Browsers without support fall back to classic.
Supported from Chrome 111, Safari 16.2 and Firefox 127, with mobile matching desktop. The element tests for support before using it, so an older browser simply renders the classic path instead of losing the gradient.
Picks a ready-made set of colors for the gradient, so a good result takes one click. With custom, the colors you set below are used instead.
The list carries the family in the name, because a Bubble dropdown has no groups, and the families come in alphabetical order: fifteen landscapes, then five metals, then ten stones. Custom comes last and hands the gradient back to the five color fields below.
Sets the first color of the gradient. This one is always used.
Sets the second color of the gradient. This one is always used.
Sets an optional third color for the gradient. Leave it empty to blend only the colors above.
Clearing a color field shortens the gradient instead of leaving a gap: the plugin reads the colors that are filled, in order, and stops at the first empty one.
Sets an optional fourth color for the gradient. Leave it empty to blend only the colors above.
Sets an optional fifth color for the gradient. Leave it empty to blend only the colors above.
Sets how the colors are laid out: linear spreads them in a straight line, radial spreads them out from a point, and mesh turns each color into a soft blob so the result has no beginning and no end.
Sets the direction of a "Linear" type gradient.
If "custom angle" was selected in Linear direction, set here the desired angle (0 to 360 degrees).
Zero points up and the angle runs clockwise, so 90 goes to the right, 180 goes down and 270 goes to the left. It matches the CSS angle, not a trigonometric one.
It only has an effect while Linear direction is set to Custom angle.
Sets the direction of a "Radial" type gradient.
Places the color blobs around the border. Each color becomes one blob, and the layout decides where they sit.
The layout holds four positions. With five colors the fifth reuses the first position, and with two colors only the first two are used. A linear base sits under the blobs to close the corners no blob reaches.
Sets what drives the gradient: nothing, the pointer entering, the pointer position, or a loop that runs on its own.
Browsers read hover differently on touch devices, so the Hover interaction can behave inconsistently on phones and tablets. For a consistent experience there, switch this property to Static or Animated with a condition for small screens.
Sets how many seconds the fill takes to cross the element on hover. Zero makes it instant, with no transition at all.
It applies to every fill direction on hover, including the special ones, so the direction and the speed are set apart from each other.
Zero removes the transition and the gradient appears at once. The default of 0.4 is close to what reads as instant while still being visible.
Sets where the color ends up. The first eight send it toward that point, the two around send one head all the way round, and the last four grow from the middle or from the ends. Each area renders the same choice its own way: on a fill a straight front crosses the element, on a border two heads run along the edge and meet. Two of them are not a direction at all: fade in place brings the whole gradient up at once, and ripple from the pointer grows a circle from the spot where the pointer came in.
Sets how much the leading edge of the fill fades out as it advances, instead of moving as a straight cut. The value is a share of the advance itself, so it keeps its proportion on any element size. Use none to keep the hard edge.
The value is a share of the advance itself, not a fixed distance, so it keeps its proportion on an element of any size.
Sets how the gradient moves on its own. The first three turn around the border, so the light travels along it: a full sweep, one head orbiting, or two heads on opposite sides. The rest slide the colors behind the border instead, which reads as the border changing color in place.
The last three travel along an edge, so they are offered where there is a perimeter to travel: Gradient Border has all three, Gradient Box Shadow has the rotating sweep, and the background, the text and the all-in-one element have the nine above.
Sets how many seconds one full cycle of the animation takes. Higher is slower and calmer; below about four seconds the movement starts to read as restless.
Longer cycles read as ambient movement and shorter ones draw attention. The default of 14 seconds is slow on purpose: a fast cycle on a large background is tiring to sit next to.
Sets what the pointer does to the border. Lighting up near the cursor keeps the border hidden until the pointer arrives and shows only the part next to it. Turning toward the cursor keeps the whole border visible and aims the gradient at the pointer instead: it rotates a linear gradient, moves the center of a radial one, and slides a mesh. Light size only applies to the first one.
Sets how much of the border the light covers around the pointer.
If this box is checked, the element own border stays visible and the gradient is drawn over it. Leave it unchecked to hide the border and let the gradient take its place.
Adds a colored halo around the border, taken from the middle color of the palette. It follows the border shape, so it also follows whatever is lit at the moment.
It follows the border shape, so it also follows whatever part of the border is lit at the moment, including the light that tracks the pointer.
Provide the ID that was assigned to the target element.
The ID box has to be turned on first, in Settings, General, Advanced options, under "Expose the option to add an ID attribute to HTML elements". Without it there is no ID to point at.
Start the ID with a letter and use hyphens or underscores if you need a separator. An ID starting with a number or a symbol is valid in Bubble but not always valid as a CSS selector.
The target has to be on the page and visible when this runs. When the ID is empty or matches nothing, nothing is painted and the reason is written to the browser console, so check there first when a gradient does not appear.
Picks the space where the browser calculates the path between the colors. Classic is the plain sRGB path. Smooth keeps the middle of the gradient as bright as the ends. Vivid travels through the hue circle and stays saturated. Browsers without support fall back to classic.
Supported from Chrome 111, Safari 16.2 and Firefox 127, with mobile matching desktop. The element tests for support before using it, so an older browser simply renders the classic path instead of losing the gradient.
Picks a ready-made set of colors for the gradient, so a good result takes one click. With custom, the colors you set below are used instead.
The list carries the family in the name, because a Bubble dropdown has no groups, and the families come in alphabetical order: fifteen landscapes, then five metals, then ten stones. Custom comes last and hands the gradient back to the five color fields below.
Sets the first color of the gradient. This one is always used.
Sets the second color of the gradient. This one is always used.
Sets an optional third color for the gradient. Leave it empty to blend only the colors above.
Clearing a color field shortens the gradient instead of leaving a gap: the plugin reads the colors that are filled, in order, and stops at the first empty one.
Sets an optional fourth color for the gradient. Leave it empty to blend only the colors above.
Sets an optional fifth color for the gradient. Leave it empty to blend only the colors above.
Sets how the colors are laid out: linear spreads them in a straight line, radial spreads them out from a point, and mesh turns each color into a soft blob so the result has no beginning and no end.
Sets the direction of a "Linear" type gradient.
If "custom angle" was selected in Linear direction, set here the desired angle (0 to 360 degrees).
Zero points up and the angle runs clockwise, so 90 goes to the right, 180 goes down and 270 goes to the left. It matches the CSS angle, not a trigonometric one.
It only has an effect while Linear direction is set to Custom angle.
Sets the direction of a "Radial" type gradient.
Places the color blobs on the element. Each color becomes one blob, and the layout decides where they sit.
The layout holds four positions. With five colors the fifth reuses the first position, and with two colors only the first two are used. A linear base sits under the blobs to close the corners no blob reaches.
Sets the interaction type of the gradient effect that will be applied to the element.
Browsers read hover differently on touch devices, so the Hover interaction can behave inconsistently on phones and tablets. For a consistent experience there, switch this property to Static or Animated with a condition for small screens.
Sets how many seconds the fill takes to cross the element on hover. Zero makes it instant, with no transition at all.
It applies to every fill direction on hover, including the special ones, so the direction and the speed are set apart from each other.
Zero removes the transition and the gradient appears at once. The default of 0.4 is close to what reads as instant while still being visible.
Sets where the color ends up. The first eight send it toward that point, the two around send one head all the way round, and the last four grow from the middle or from the ends. Each area renders the same choice its own way: on a fill a straight front crosses the element, on a border two heads run along the edge and meet. Two of them are not a direction at all: fade in place brings the whole gradient up at once, and ripple from the pointer grows a circle from the spot where the pointer came in.
Sets how much the leading edge of the fill fades out as it advances, instead of moving as a straight cut. The value is a share of the advance itself, so it keeps its proportion on any element size. Use none to keep the hard edge.
The value is a share of the advance itself, not a fixed distance, so it keeps its proportion on an element of any size.
Sets the type of animation for animated effects.
The last three travel along an edge, so they are offered where there is a perimeter to travel: Gradient Border has all three, Gradient Box Shadow has the rotating sweep, and the background, the text and the all-in-one element have the nine above.
Sets how many seconds one full cycle of the animation takes. Higher is slower and calmer; below about four seconds the movement starts to read as restless.
Longer cycles read as ambient movement and shorter ones draw attention. The default of 14 seconds is slow on purpose: a fast cycle on a large background is tiring to sit next to.
Sets what the pointer does to the shadow. Lighting up near the cursor keeps the shadow hidden until the pointer arrives and shows only the part next to it. Turning toward the cursor keeps the whole shadow visible and aims the gradient at the pointer instead: it rotates a linear gradient, moves the center of a radial one, and slides a mesh. Light size only applies to the first one.
Sets how much of the border the light covers around the pointer.
Chooses where the gradient is thrown. Outside is the usual shadow, spreading past the edges. Inside keeps it within the element, running along the inner edge like a colored inner glow, which the native box shadow can only do in a single flat color.
Inside turns the neon border off, because neon paints the border outward and there is no border to paint on the inside.
With Inside and the Hover interaction, the glow fades in over the chosen duration and the Fill direction does not apply: the directional reveal and the inner frame need the same mask, and CSS has no way to combine them.
Sets how far the gradient spreads past the edges, in pixels, which is what makes the shadow soft or tight. It takes any number or a dynamic value from the app, so the same element can breathe with the data. Empty counts as zero and the shadow collapses onto the element.
The larger values stop reading as a shadow and start reading as a halo around the element, which is the point when the gradient colors become the subject rather than the depth.
Moves the shadow sideways, in pixels. A negative value throws it to the left. Outside the element the whole shadow slides, so with both offsets at zero it stays centered and reads as a halo. Inside the element nothing slides: the glow thickens on the side the light comes from and thins on the opposite one, which is how the native inset shadow behaves.
With both offsets at zero the shadow stays centered behind the text and reads as a halo. Giving it an offset is what makes it read as light coming from a direction.
Moves the shadow down, in pixels. A negative value throws it up. Outside the element it pairs with Offset X to give the shadow a light direction, the way a drop shadow does. Inside the element it thickens the glow on one side and thins it on the other, instead of moving the layer.
Turns the border defined on the element into a neon ring, lit by the gradient. It applies only when the shadow side is outside the element: inside there is no border to light up, so the option is ignored. The look depends on the colors in the gradient.
The element needs a border for this to have anything to light. How convincing the neon looks depends on the palette: saturated colors on a dark background are what the effect is built for.
Provide the ID that was assigned to the target element.
The ID box has to be turned on first, in Settings, General, Advanced options, under "Expose the option to add an ID attribute to HTML elements". Without it there is no ID to point at.
Start the ID with a letter and use hyphens or underscores if you need a separator. An ID starting with a number or a symbol is valid in Bubble but not always valid as a CSS selector.
The target has to be on the page and visible when this runs. When the ID is empty or matches nothing, nothing is painted and the reason is written to the browser console, so check there first when a gradient does not appear.
Picks the space where the browser calculates the path between the colors. Classic is the plain sRGB path. Smooth keeps the middle of the gradient as bright as the ends. Vivid travels through the hue circle and stays saturated. Browsers without support fall back to classic.
Supported from Chrome 111, Safari 16.2 and Firefox 127, with mobile matching desktop. The element tests for support before using it, so an older browser simply renders the classic path instead of losing the gradient.
Picks a ready-made set of colors for the gradient, so a good result takes one click. With custom, the colors you set below are used instead.
The list carries the family in the name, because a Bubble dropdown has no groups, and the families come in alphabetical order: fifteen landscapes, then five metals, then ten stones. Custom comes last and hands the gradient back to the five color fields below.
Sets the first color of the gradient. This one is always used.
Sets the second color of the gradient. This one is always used.
Sets an optional third color for the gradient. Leave it empty to blend only the colors above.
Clearing a color field shortens the gradient instead of leaving a gap: the plugin reads the colors that are filled, in order, and stops at the first empty one.
Sets an optional fourth color for the gradient. Leave it empty to blend only the colors above.
Sets an optional fifth color for the gradient. Leave it empty to blend only the colors above.
Sets how the colors are laid out: linear spreads them in a straight line, radial spreads them out from a point, and mesh turns each color into a soft blob so the result has no beginning and no end.
Sets the direction of a "Linear" type gradient.
If "custom angle" was selected in Linear direction, set here the desired angle (0 to 360 degrees).
Zero points up and the angle runs clockwise, so 90 goes to the right, 180 goes down and 270 goes to the left. It matches the CSS angle, not a trigonometric one.
It only has an effect while Linear direction is set to Custom angle.
Sets the direction of a "Radial" type gradient.
Places the color blobs on the element. Each color becomes one blob, and the layout decides where they sit.
The layout holds four positions. With five colors the fifth reuses the first position, and with two colors only the first two are used. A linear base sits under the blobs to close the corners no blob reaches.
Sets the interaction type of the gradient effect that will be applied to the element.
Browsers read hover differently on touch devices, so the Hover interaction can behave inconsistently on phones and tablets. For a consistent experience there, switch this property to Static or Animated with a condition for small screens.
Sets how many seconds the fill takes to cross the element on hover. Zero makes it instant, with no transition at all.
It applies to every fill direction on hover, including the special ones, so the direction and the speed are set apart from each other.
Zero removes the transition and the gradient appears at once. The default of 0.4 is close to what reads as instant while still being visible.
Sets where the color ends up. The first eight send it toward that point, the two around send one head all the way round, and the last four grow from the middle or from the ends. Each area renders the same choice its own way: on a fill a straight front crosses the element, on a border two heads run along the edge and meet. Two of them are not a direction at all: fade in place brings the whole gradient up at once, and ripple from the pointer grows a circle from the spot where the pointer came in.
Sets how much the leading edge of the fill fades out as it advances, instead of moving as a straight cut. The value is a share of the advance itself, so it keeps its proportion on any element size. Use none to keep the hard edge.
The value is a share of the advance itself, not a fixed distance, so it keeps its proportion on an element of any size.
Sets the type of animation for animated effects.
The last three travel along an edge, so they are offered where there is a perimeter to travel: Gradient Border has all three, Gradient Box Shadow has the rotating sweep, and the background, the text and the all-in-one element have the nine above.
Sets how many seconds one full cycle of the animation takes. Higher is slower and calmer; below about four seconds the movement starts to read as restless.
Longer cycles read as ambient movement and shorter ones draw attention. The default of 14 seconds is slow on purpose: a fast cycle on a large background is tiring to sit next to.
Sets what the pointer does to the text. Lighting up near the cursor keeps the text hidden until the pointer arrives and shows only the part next to it. Turning toward the cursor keeps the whole text visible and aims the gradient at the pointer instead: it rotates a linear gradient, moves the center of a radial one, and slides a mesh. Light size only applies to the first one.
Sets how much of the border the light covers around the pointer.
Paints the gradient inside each glyph, which is the usual effect. Turn it off to leave the text in its own color and use the gradient only on the outline or on the shadow.
Turn it off to leave the text in its own color and use the gradient only on the outline, on the shadow, or on both. With all three switches off the plugin paints nothing and the text stays exactly as the app styled it.
Paints the gradient on the outline of each glyph. With the text painted too, both get the gradient; alone, the glyph keeps its own color and only the ring shows the gradient.
The outline is drawn by painting the glyph fill over a transparent stroke, so the text is never duplicated and formatting inside the element survives.
Sets the thickness of the outline, in pixels. It only applies when the gradient is painted on the outline. Thin outlines read better on large text; on small text anything above two pixels starts to close the text.
It only applies while the gradient is painted on the outline. Thin outlines read better on large text; on small text anything above two pixels starts to close the counters of the letters.
Paints a shadow of the text with the gradient inside it. It is a blurred copy of the text, so it works over any background and can be combined with the gradient on the text or on the outline.
The shadow is a blurred copy of the text carrying its own gradient, so it works over any background, light or dark, and can be combined with the gradient on the text or on the outline.
Chooses how the shadow is drawn. Smooth gradient is a blurred copy of the text carrying the gradient, and it follows the interaction you chose (hover, animated or follow cursor). Stacked colors is one shadow layer per palette color, each a little further and softer; it works over any background but is always static, because a layered text shadow cannot be revealed or animated without touching the text itself.
The smooth gradient copies the text into the shadow, so inline formatting inside the element does not travel with it. In a blurred shadow that is invisible, and the copy is kept in sync when the app changes the text.
Moves the shadow sideways, in pixels. A negative value throws it to the left. With the color stack style this is where the last color lands, and the others spread along the way.
With both offsets at zero the shadow stays centered behind the text and reads as a halo. Giving it an offset is what makes it read as light coming from a direction.
Moves the shadow down, in pixels. A negative value throws it up. With the color stack style this is where the last color lands, and the others spread along the way.
Sets how soft the shadow is, in pixels. Zero gives a hard copy of the text behind it. With the color stack style each layer gets progressively softer, starting from this value.
It takes a number or a dynamic value from the app, so the softness can follow a condition instead of being fixed.
Sets how strong the gradient shadow is. It applies when the gradient is painted on the shadow.
It applies while the gradient is painted on the shadow.
Enable the option that exposes element IDs in Bubble, under Settings > General > Advanced options. Then assign an ID to the element you want to style, place the plugin element of the area you want anywhere on the page keeping it visible, and point it at that ID.
Yes, when they should all share the same gradient settings. Assign the same ID to every element you want to style and a single plugin element covers all of them. When the settings need to differ, use one plugin element per target instead.
Five areas, one element each: the background, the borders, the box shadow, the text and the text shadow. Each one has its own fill direction, and the same target can take more than one area by pointing two of these elements at the same ID.
There are 22 predefined directions across the two transition types, plus a custom angle field that covers every direction in between.
No. The gradient is applied from the plugin settings alone, with no workflow and no custom code.
Yes. The gradients are responsive and work on both desktop and mobile.
It started as a single element that handled everything at once. Splitting it is what made room for what came after, and for what comes next: new effects, finer control and areas that do not exist yet. The original element is still here as Gradient Pack (Legacy), unchanged for the pages that already use it.
This plugin is maintained by GCS Studios and is part of the NWD UI - Effect family, plugins that add visual output an element did not have, without replacing it. Each one attaches to something already on your page and draws on top of it, with no layout to redo, and is tested in real applications before release. See more plugins on the GCS Studios contributor page.