The fallback value of the CSS variable is set through the second parameter of the var() function, which provides a default value when the variable is undefined or invalid. For example, in .box { background-color: var(--main-color, #ccc); }, if --main-color is undefined or invalid, the background color will use #ccc. The fallback value is suitable for various CSS value types, such as length, keywords and nested variables, such as: 1. Default spacing padding: var(--spacing, 1rem); 2. Font stack font-family: var(--heading-font, sans-serif); 3. Nested fallback color: var(--text-color, var(--default-text-color, black)); However, it should be noted that when the variable is defined but the type is illegal (such as --my-width: red; width: var(--my-width, 50%);), the fallback mechanism will not take effect. Best practices include: defining basic variables in :root, using semantic naming, keeping the fallback value concise, testing the variable missing scenario, and setting the fallback value to other variables to build the topic hierarchy.
You can set a fallback value for a CSS variable by using the second parameter in the var()
function. This is super useful when you want to ensure a default value kicks in if the variable isn't defined or is invalid.
Why You Might Want to Use a Fallback
Sometimes, your CSS variables might not be defined due to scope issues, typos, or loading order problems. Rather than having styles break unexpectedly, a fallback gives you control over what happens in those cases.
For example:
:root { /* --main-color might be missing or invalid */ } .box { background-color: var(--main-color, #ccc); }
In this case, if --main-color
doesn't exist or is invalid, .box
will use #ccc
as its background color.
How to Apply Fallbacks in Different Contexts
Fallback values ??aren't just for colors — they work with any kind of CSS value, like lengths, keywords, or even other variables.
Here are some common use cases:
Default spacing
padding: var(--spacing, 1rem);
Fallback font stack
font-family: var(--heading-font, sans-serif);
Nested fallback (using another variable)
color: var(--text-color, var(--default-text-color, black));
This kind of nesting lets you build more robust themes and component systems.
When Fallbacks Won't Work
It's worth noting that fallbacks only help inside var()
. If you're not using the var()
syntax at all, there's no way for the browser to fall back. Also, the fallback won't apply if the variable exists but has an invalid property-specific value.
For instance:
width: var(--my-width, 50%); /* works if --my-width is undefined or invalid */
But if you do something like this:
--my-width: red; width: var(--my-width, 50%); /* invalid for 'width', but still resolves to 'red' */
The browser will try to use red
as a width, which doesn't make sense — but it won't fall back to 50%
.
So, fallbacks don't protect against incorrect types — just missing or malformed variables.
Best Practices for Using Fallbacks
- Always define base variables on
:root
to avoid scoping issues. - Use semantic names so it's clear what the fallback is for.
- Keep fallbacks simple unless you're intentionally building layered defaults.
- Test scenarios where a variable might be missing — especially in larger projects or design systems.
And one more tip: fallbacks can also be custom properties themselves, which is handy when organizing theme layers or providing dynamic defaults.
Basically, it's a small feature that adds a lot of flexibility without much overhead.
The above is the detailed content of How to set a fallback value for a CSS variable?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

There are three ways to selectively include CSS on a specific page: 1. Inline CSS, suitable for pages that are not frequently accessed or require unique styles; 2. Load external CSS files using JavaScript conditions, suitable for situations where flexibility is required; 3. Containment on the server side, suitable for scenarios using server-side languages. This approach can optimize website performance and maintainability, but requires balance of modularity and performance.

Flexboxisidealforone-dimensionallayouts,whileGridsuitstwo-dimensional,complexlayouts.UseFlexboxforaligningitemsinasingleaxisandGridforprecisecontroloverrowsandcolumnsinintricatedesigns.

The HTML popover attribute transforms elements into top-layer elements that can be opened and closed with a button or JavaScript. Popovers can be dismissed a number of ways, but there is no option to auto-close them. Preethi has a technique you can u

CSS blocks page rendering because browsers view inline and external CSS as key resources by default, especially with imported stylesheets, header large amounts of inline CSS, and unoptimized media query styles. 1. Extract critical CSS and embed it into HTML; 2. Delay loading non-critical CSS through JavaScript; 3. Use media attributes to optimize loading such as print styles; 4. Compress and merge CSS to reduce requests. It is recommended to use tools to extract key CSS, combine rel="preload" asynchronous loading, and use media delayed loading reasonably to avoid excessive splitting and complex script control.

In the following tutorial, I will show you how to create Lottie animations in Figma. We'll use two colorful designs to exmplify how you can animate in Figma, and then I'll show you how to go from Figma to Lottie animations. All you need is a free Fig

We put it to the test and it turns out Sass can replace JavaScript, at least when it comes to low-level logic and puzzle behavior. With nothing but maps, mixins, functions, and a whole lot of math, we managed to bring our Tangram puzzle to life, no J

ThebestapproachforCSSdependsontheproject'sspecificneeds.Forlargerprojects,externalCSSisbetterduetomaintainabilityandreusability;forsmallerprojectsorsingle-pageapplications,internalCSSmightbemoresuitable.It'scrucialtobalanceprojectsize,performanceneed

No,CSSdoesnothavetobeinlowercase.However,usinglowercaseisrecommendedfor:1)Consistencyandreadability,2)Avoidingerrorsinrelatedtechnologies,3)Potentialperformancebenefits,and4)Improvedcollaborationwithinteams.
