Backgrounds, Borders and Effects
|
This content was generated with the assistance of AI and should be verified against the official Webflow documentation before being relied on in production. This sub-section’s Webflow bibliography lists the reference material consulted while preparing these pages. |
This page was written against the Webflow Designer as it was on 2026-10-28. Every control described here is part of the Style panel, which is available on all plans, including the free Starter Site plan, so each example can be reproduced without paying. Webflow is a hosted service without version numbers, and the Help Center renames and rearranges panel sections from time to time, so the names below should be matched against the panel by their meaning. A few features are flagged by Webflow itself as beta (backdrop filters) and are marked as such in the text.
The Backgrounds, Borders and Effects sections of the Style panel are where a flat layout becomes a finished visual design: a photograph behind a heading, a card with rounded corners and a soft shadow, a button that lifts when the pointer rests on it. Webflow writes each control as one or more ordinary CSS properties on the selected class, so the page repeats the same pattern for every feature: what the control is, which CSS property it writes, what the generated rule looks like and what to be careful about. The foundations of the Style panel (selectors, units, the amber inheritance indicators) are in Style Panel and Box Model, and classes and states are in Classes, Combo Classes and Selectors.
The running example is the Fernbrook Gardens site, a fictitious botanical garden. The Home page opens with a full-width hero section: a photograph of the glasshouse, a dark gradient that keeps the white headline readable, a frosted-glass booking card, and event cards that lift when hovered. The hero is built from a Section with the class hero, a Container, a Div Block hero-card and a Heading.
Who uses these controls
-
The designer sets backgrounds, borders and effects on classes and decides which of them are variables or part of a component.
-
The marketer and the content editor rarely touch these controls, but they feel their effects: a hero background image that is replaced in the Designer, or a CMS-driven background, changes the whole look of a page.
-
The developer reads the generated CSS to match it with custom code, to export it or to port it to another stack. The CSS in this page is what the Designer writes and what the published stylesheet contains.
-
The site owner is concerned with performance: large background images and heavy filters are the most frequent cause of a slow first paint.
Backgrounds
The Backgrounds section of the Style panel controls what is painted behind an element’s content, inside its border box. The section holds a stack of layers: any number of images and gradients, plus a single background color that sits underneath all of them. Layers are listed from top to bottom in the same order as they are painted, and they can be reordered by dragging. This maps directly to the CSS background model, in which background-image takes a comma-separated list where the first item is on top.
Background color
The color swatch writes background-color. It accepts hexadecimal, RGB and HSL values, an alpha channel, and, since the introduction of variables, a color variable chosen from the variable picker. Using a variable keeps the color in the site’s design tokens, so a rebrand or a dark mode changes it in one place (see Variables and Modes).
.hero-card {
background-color: #ffffffcc;
}
.hero-card {
background-color: var(--_colors---surface--card);
}
The second rule shows the form written when a variable is chosen. The exact name Webflow generates depends on the variable collection and group names, so it is read from the Designer rather than guessed.
Background images
An image layer is added with the plus button of the Backgrounds section and chosen from the Assets panel or uploaded from the computer. The layer then exposes the settings that map to the CSS background properties.
| Setting in the panel | CSS property | Notes |
|---|---|---|
Image |
|
Written as a |
Size: Auto, Cover, Contain, Custom |
|
Cover fills the element and may crop the image; Contain shows the whole image and may leave empty bands; Custom takes lengths or percentages |
Position |
|
A nine-point grid plus custom values; the focal point decides what survives cropping at narrow widths |
Repeat |
|
Repeat, repeat-x, repeat-y or no-repeat; photographs use no-repeat, textures use repeat |
Attachment: Scroll or Fixed |
|
Scroll is the default; Fixed pins the image to the viewport |
Clipping |
|
None, clip to padding, clip to text (see below) |
For the Fernbrook hero, a photograph is set to Cover, centered, no-repeat. The generated rule is:
.hero {
min-height: 70vh;
background-image: url(https://cdn.prod.website-files.com/EXAMPLE_SITE_ID/EXAMPLE_ASSET_ID_glasshouse.jpg);
background-position: 50% 50%;
background-size: cover;
background-repeat: no-repeat;
}
The identifiers in the URL are placeholders: Webflow assigns real ones when the file is uploaded, and they differ for every site.
Three practical points follow from how background images work in the browser.
-
A background image is not content. It has no alt text, it is not announced by a screen reader, and search engines do not treat it as an image of the page. A photograph that carries meaning (a product, a person, a plant to identify) belongs in an Image element with alt text; a background image is for decoration. The Image element and its alt text are described in Images and Assets.
-
A background image does not lazy-load or get a responsive
srcset. An Image element can be lazy-loaded and served in several sizes, but a CSS background is one file at one URL for every viewport. A hero photograph that is 2400 pixels wide is downloaded in full by a phone. The remedy is to upload an image sized for the largest use, to use the image-compression settings of the Assets panel, or to swap in a smaller image on the mobile breakpoint (the background is a style, so it can be overridden per breakpoint). The general techniques are in Native HTML Images and Lazy Loading. -
Text on top of a photograph must stay readable. The contrast between the text and the busiest part of the photograph is what the accessibility audit and visitors will judge, which is the reason for the overlay in the next section.
Fixed attachment
Setting the attachment to Fixed writes background-attachment: fixed, and the image stays in place while the page scrolls over it, which gives a simple parallax look. Two caveats apply. The browser sizes a fixed background against the viewport rather than the element, so Cover can crop differently than on the canvas. Fixed attachment is also handled differently by mobile browsers, some of which ignore it or repaint it expensively, so a hero that depends on it should be tested on a real phone. For a scroll-driven effect with more control, see Scroll and Page Animations.
.parallax-band {
background-image: url(https://cdn.prod.website-files.com/EXAMPLE_SITE_ID/EXAMPLE_ASSET_ID_garden-path.jpg);
background-attachment: fixed;
background-position: 50% 50%;
background-size: cover;
}
Gradients
A gradient is a layer like an image, added with the plus button and then configured. Webflow offers linear and radial gradients. A linear gradient has an angle and a list of color stops; each stop has a color (with alpha) and a position along the line. A radial gradient has a center, a shape and stops. Gradients are written as linear-gradient() and radial-gradient() values inside background-image, so they are resolution independent and cost no download.
The Fernbrook hero needs a dark veil that is strongest at the bottom, where the headline sits. That is a linear gradient from transparent to a translucent dark green, placed above the photograph in the layer stack:
.hero {
background-image:
linear-gradient(180deg, rgba(10, 36, 24, 0), rgba(10, 36, 24, 0.75)),
url(https://cdn.prod.website-files.com/EXAMPLE_SITE_ID/EXAMPLE_ASSET_ID_glasshouse.jpg);
background-position: 0 0, 50% 50%;
background-size: auto, cover;
background-repeat: repeat, no-repeat;
}
Each layer has its own position, size and repeat value, which is why the other background properties become comma-separated lists with one item per layer. The first item of every list belongs to the gradient and the second to the photograph. If the layers are reordered in the panel, Webflow reorders all the lists together.
Overlays
The gradient above is the simplest overlay and needs no extra element. Two other ways are common and differ in what they cost.
-
A flat tint layer. A gradient whose two stops have the same color, for example
linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)), darkens the whole image evenly. Webflow has no separate "solid color layer", so a flat tint is written as a two-stop gradient. -
A positioned element. A Div Block with
position: absolute,inset: 0and a translucent background color, placed inside the section behind its content. It is heavier in the markup, but it can be animated, hidden on a breakpoint or given a blend mode independently of the photograph. Positioning is described in Positioning and Overflow.
The gradient approach is the better default: it adds no element to the page, keeps the markup clean for screen readers and survives being exported with the rest of the stylesheet.
Clipping a background to text
The Clipping dropdown at the bottom of the Backgrounds section limits where the background is painted. None is the default and paints out to the border edge. Clip to padding stops the paint at the border. Clip to text paints the background only where the glyphs are, which turns a gradient or a photograph into the fill of the text. Webflow introduced the clipping control in a product update, so older tutorials fill text only by using an image of the text or a Code Embed.
For the Fernbrook headline, a green-to-gold gradient fills the letters:
.hero-title {
background-image: linear-gradient(90deg, #2f7d4f, #d9b44a);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
}
The text color must be transparent for the fill to show, and Webflow writes this when Clip to text is chosen. Clipped text is a decorative treatment and it is the contrast of the weakest stop that counts: if one end of the gradient is pale on a pale page, part of the headline becomes unreadable, and when background painting is switched off (high-contrast modes) the headline can disappear. Keep clipped text for large headings and test it in a forced-colors mode.
Backgrounds from the CMS
A background image can be bound to a CMS image field, so each item of a Collection has its own. In the Designer, the section or Div Block is placed inside a Collection list item or on a Collection template page, and the background image is connected to the field in the Style panel. Webflow cannot write a CSS rule per item in the stylesheet, so for these cases the page carries the image as an inline style attribute on the element.
<div class="event-card-image" style="background-image:url(https://cdn.prod.website-files.com/EXAMPLE_SITE_ID/EXAMPLE_ASSET_ID_orchid-evening.jpg)"></div>
This is the reason why a CMS-driven background cannot be changed per breakpoint by the stylesheet alone, and why it is a poor choice for the largest image of a page: it has no srcset, no lazy loading and no alt text. For content images, use an Image element bound to the field. Collections and fields are described in Collections and Field Types.
Source: Data API: Create Items
Borders and radius
The Borders section draws a line around the element on one, several or all sides, and rounds its corners.
| Control | CSS property | Notes |
|---|---|---|
Style: none, solid, dashed, dotted, double |
|
Nothing is drawn until the style is set, whatever the width or color |
Width |
|
Per side or for all sides; the default unit is px |
Color |
|
Accepts alpha and color variables |
Radius |
|
All corners together or each corner on its own; px by default and percentages by typing |
Clicking the middle of the box diagram in the panel edits all four sides together, and clicking one edge edits that side only. The same diagram is used for the radius, with the four corners.
.hero-card {
border-style: solid;
border-width: 1px;
border-color: rgba(255, 255, 255, 0.5);
border-radius: 16px;
}
.avatar {
width: 96px;
height: 96px;
overflow: hidden;
border-radius: 50%;
}
The second rule is the classic circular crop: a square element with a 50% radius and overflow hidden, so that an Image inside it is cut to a circle.
Three behaviours cause most of the surprises.
-
A border takes up space. With the Webflow default
box-sizing: border-boxfor the elements added from the Add panel, a border is included in the element’s width and height, but an element that has no explicit size grows by the border width. Adding a one-pixel border to every card in a grid shifts content by two pixels unless the layout was designed for it. To draw a line that takes no space, use a box shadow with a zero blur and a spread of one pixel (see the next section), or an outline. -
A radius only clips the background, not the children. The corners of an image inside a rounded card stay square unless the card has overflow hidden or the image has its own radius. Overflow is described in the positioning page.
-
Percentages are relative to the element’s own box.
50%makes a circle only on a square element; on a rectangle it makes an ellipse, which is occasionally what is wanted for a pill shape (use a large pixel value, such as 999px, for a pill that stays a pill whatever the size).
Webflow has also been moving some of its controls under the Changes panel and the redesigned style sections, which show the same options (style, width, radius) under a different heading. The CSS written is the same.
Effects
The Effects section collects the properties that change how an element is composited and drawn after its box is laid out: opacity, blending, shadows, filters, backdrop filters, transforms and transitions. Most of them can be set on a state such as hover, focus or pressed, by selecting the state in the Style selector menu, and the effect is then written as a state rule on the same class. A layer-based effect (shadows, filters, transforms) is a stack that can be reordered by dragging.
Opacity
Opacity writes opacity as a percentage from 0 to 100, which Webflow stores as a number between 0 and 1. The value applies to the element and everything inside it, including its text and children, which is the difference from a translucent color: rgba(0, 0, 0, 0.5) on a background makes only the background translucent, while opacity: 0.5 fades the whole subtree. Elements with an opacity below 1 also create a stacking context, which can change which element sits on top of which.
.event-card.is-past {
opacity: 0.6;
}
A fully transparent element (opacity 0) is invisible but still takes up space, still receives clicks and is still read by screen readers. To remove an element from the layout, use Display: none; to hide it from assistive technology as well, see Accessibility.
Source: Webflow Help Center: Effects
Blending
The Blending control writes mix-blend-mode. It decides how the element’s pixels combine with what is painted behind it (its parent’s background and earlier siblings). Webflow lists the sixteen blend modes of the CSS specification: normal, multiply, screen, overlay, darken, lighten, color-dodge, color-burn, hard-light, soft-light, difference, exclusion, hue, saturation, color and luminosity. Multiply darkens, screen lightens, and overlay increases contrast; the others are for special effects.
.hero-leaves {
mix-blend-mode: multiply;
}
Blending is the reason why a white-background illustration, saved as a JPEG, can sit on a colored section: with multiply the white drops out. The background layers have their own background-blend-mode, which blends the layers of one element’s backgrounds with each other and not with the element behind.
Source: Webflow Help Center: Effects
Box shadow
Shadows are layers. Each has a type (outside, the default, or inside, written with the inset keyword), a horizontal and a vertical offset, a blur, a size (the CSS spread) and a color with alpha. Several shadows can be stacked, which produces the natural two-layer shadows of modern interfaces: a tight dark one for contact and a wide pale one for ambient light.
.event-card {
box-shadow: 0 1px 2px rgba(10, 36, 24, 0.12), 0 8px 24px rgba(10, 36, 24, 0.12);
transition: transform 200ms ease, box-shadow 200ms ease;
}
.event-card:hover {
box-shadow: 0 2px 4px rgba(10, 36, 24, 0.16), 0 16px 40px rgba(10, 36, 24, 0.18);
transform: translate(0, -4px);
}
.field-line {
box-shadow: inset 0 -1px 0 0 #2f7d4f;
}
The last rule is the "border that takes no space" mentioned earlier: an inside shadow with no blur draws a line on the bottom edge without changing the element’s size. Shadows do not take up space, do not push siblings and are clipped by an ancestor that has overflow hidden. Animated blurs are slow, because the browser repaints the shadow at every frame, so it is the transform and opacity of a card that should be animated, and the shadow should change with a short transition or be swapped by the state rather than animated across a long duration.
Source: Webflow Help Center: Effects
Filters
Filters apply to the element and its descendants, after they are painted. The control writes filter with a list of functions, and each function has its own slider.
| Filter | What it does |
|---|---|
Blur |
Gaussian blur with a radius in px |
Brightness |
Below 100% darkens, above 100% lightens |
Contrast |
Below 100% flattens, above 100% increases the difference between lights and darks |
Grayscale, Sepia, Invert |
Remove color, tint warm brown, or invert |
Hue rotate |
Shifts all hues by an angle in degrees |
Saturate |
Below 100% desaturates, above 100% intensifies colors |
Drop shadow |
A shadow that follows the visible shape of the element, including transparent areas of a PNG or SVG |
.plant-photo {
filter: grayscale(100%);
transition: filter 300ms ease;
}
.plant-photo:hover {
filter: grayscale(0%) saturate(110%);
}
.logo-mark {
filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.25));
}
The difference between a Box shadow and the Drop shadow filter is the shape: a box shadow follows the rectangle of the element, a drop shadow follows the pixels. The order of the functions matters because they are applied in sequence. A filter, like opacity, creates a stacking context and applies to the whole subtree. Heavy blurs on large elements, or on elements that animate, are among the most expensive things a page can ask a phone to do.
Source: Webflow Help Center: Effects
Backdrop filters
A backdrop filter writes backdrop-filter and applies its functions to whatever is behind the element, seen through the element’s transparent or translucent parts, instead of to the element itself. This is the "frosted glass" effect. Webflow labels the feature as beta in its Help Center, and notes that the styles do not display properly in Firefox, in the Designer or on a published site, until that browser supports them. The set of functions is similar to that of filters (blur, brightness, contrast, color shifts), and the number listed has changed between Help Center versions, so the panel itself is the reference.
The Fernbrook booking card uses a blurred backdrop over the hero photograph:
.hero-card {
background-color: rgba(255, 255, 255, 0.35);
-webkit-backdrop-filter: blur(12px) saturate(120%);
backdrop-filter: blur(12px) saturate(120%);
}
The effect only shows if the element’s own background is translucent: with an opaque background there is nothing to see through. Because the effect is not available everywhere, the card must also be readable without it, which is why the background color above is chosen with enough opacity to hold the text on its own. A backdrop filter is a good example of a progressive enhancement.
2D and 3D transforms
The 2D and 3D transforms control writes transform, with four kinds of transformation that can be stacked on one element: Move (translate), Scale, Rotate and Skew. Each kind has its own fields for the X, Y and Z axes where meaningful. A transform moves the painted result of an element and not its place in the layout: the neighbours do not move, the element’s original space stays reserved, and a transformed element can overlap others.
| Transform | CSS function written |
|---|---|
Move |
|
Scale |
|
Rotate |
|
Skew |
|
The ellipsis next to the section opens the settings that make 3D transforms useful: the transform origin (the point around which rotation and scaling happen, default the center), the backface visibility (whether the reverse side of a rotated element is drawn), the self perspective (perspective on the element itself) and the children perspective (the perspective given to the element’s children, which is what makes a flipping card look three-dimensional).
.event-card {
transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
transform-style: preserve-3d;
}
.event-card:hover {
transform: translate3d(0, -4px, 0) scale3d(1.02, 1.02, 1);
}
.flip-card {
perspective: 1000px;
}
.flip-card-inner {
transform-style: preserve-3d;
transform-origin: 50% 50%;
}
.flip-card-face-back {
backface-visibility: hidden;
transform: rotateY(180deg);
}
Webflow writes the three-dimensional forms (translate3d, scale3d) even for flat motion. Transforms and opacity are the two properties that browsers can animate on the compositor without recalculating layout, which is why they are the right properties to animate on hover. A transform on an element also creates a containing block for fixed-positioned descendants and a stacking context, which breaks fixed headers placed inside a transformed ancestor.
Source: Webflow Help Center: Effects
Transitions
A transition animates the change of a property when an element moves from one state to another, for example from normal to hover. By default no transition is set, which means the change is instant. In the Transitions section a transition is added per property (or for All properties), and each has a duration, an easing curve and a delay. Webflow writes the transition shorthand.
.button {
background-color: #2f7d4f;
transition: background-color 200ms ease, transform 200ms ease;
}
.button:hover {
background-color: #256340;
transform: translate3d(0, -2px, 0);
}
The transition belongs on the base state, not on the hover state: it is the rule of the destination state that supplies the new values and the rule of the origin that says how to get there. If the transition is placed only on hover, the pointer entering is animated but leaving is instant. The options of the shorthand, the order of its values and the newer transition-behavior property are in CSS Transitions.
Two choices keep transitions healthy. Name the properties that change instead of using All, because All animates things that nobody intended (a width that changes with a breakpoint, a color variable switching with a mode). And respect visitors who ask for reduced motion: the Designer has no switch for it, so a small custom-code rule such as the one below turns transitions and transforms off for them.
@media (prefers-reduced-motion: reduce) {
.event-card,
.button {
transition: none;
}
.event-card:hover {
transform: none;
}
}
Longer, sequenced and scroll-driven motion is not a transition; it is built with interactions, covered in Scroll and Page Animations and Interactions with GSAP.
Source: Webflow Help Center: Effects
Building the Fernbrook hero step by step
-
Add a Section, give it the class
hero, set the minimum height to 70vh and set Display to Flex with the content aligned to the bottom. -
In Backgrounds, add the glasshouse photograph (Cover, centered, no-repeat), then add a linear gradient above it from transparent to translucent dark green.
-
Inside the Container, add a Div Block with the class
hero-card. Give it a translucent white background, a one-pixel white border at 50% opacity and a 16 px radius. -
In Effects, add a backdrop filter of 12 px blur to
hero-card, and check that the card is still readable when the filter is disabled. -
Add a Heading with the class
hero-title. Choose a gradient, set Clipping to text, and check the contrast of both ends of the gradient. -
For each event card, add a two-layer box shadow, a transition on transform and box-shadow, and, in the hover state, a move of minus 4 px on the Y axis and a stronger shadow.
-
Switch to the Mobile portrait breakpoint, replace the hero photograph by a smaller file, reduce the blur radius and check the result in Preview mode.
-
Publish, then open the page on a phone and on a slow connection.
The step list touches every section of the page. The finished hero has one background image, one gradient, a border, a radius, a backdrop filter, a box shadow, a transform and two transitions, and it is described by about forty lines of the site stylesheet.
Common mistakes and pitfalls
-
Photographs in backgrounds that should be content. They lose alt text, lazy loading and responsive sizes. Use an Image element for anything meaningful.
-
Huge hero images. A background is downloaded at its full size on every device. Compress it and swap it on small breakpoints.
-
Text over images without an overlay. The contrast depends on the part of the photograph under the text; add a gradient and verify with the Audit panel and a contrast checker.
-
Forgetting border style. A width and a color do nothing while the style is none.
-
Borders that shift the layout. Use an inside shadow or an outline for a line that must not take space.
-
Opacity instead of a translucent color. It fades the text too and creates a stacking context.
-
Animating All properties. It animates unintended changes and costs repaints. Name the properties.
-
Animating blur and large shadows. They repaint on every frame. Animate transform and opacity instead.
-
Relying on backdrop filters. They are beta and unsupported in some browsers; the design must hold without them.
-
Transforms on ancestors of fixed elements. A transformed ancestor becomes the containing block of fixed descendants, so a sticky header may stop sticking.
-
Ignoring reduced motion. Provide a rule for visitors who ask the system to limit animation.
Corrections to older tutorials
Ali Rushdan Tariq’s Webflow by Example (Packt, 2021) predates the current Style panel and the redesigned Designer of 2023. Its click paths and panel names do not match the screen of 2026. Several treatments that older tutorials build with an extra overlay element, an image of the text, interactions or custom code are plain styles today: a gradient can sit directly above a background image, a background can be clipped to text, backdrop filters and the full set of blend modes are available, and 2D and 3D transforms and transitions live in the Effects section. The CSS concepts the book teaches, such as layered backgrounds and the hover state, remain valid.