What if your styles could adapt automatically without you rewriting code every time?
Why Default values with !default in SASS? - Purpose & Use Cases
Imagine you are styling a website and want to set a color variable. You write $primary-color: blue; at the top of your file.
Later, you want to let others change this color without editing your file directly.
If you just write $primary-color: blue; again, it will overwrite any previous value, making it hard to customize.
You might try commenting or deleting lines manually, which is slow and error-prone.
Using !default lets you set a variable only if it hasn't been set before.
This means others can set their own value, and your default stays only if no value exists yet.
$primary-color: blue; $primary-color: red;
$primary-color: blue !default; $primary-color: red;
This lets you create flexible stylesheets that others can easily customize without changing your original code.
A theme library sets default colors with !default. Users can override colors in their own files without touching the library code.
Manually overwriting variables is slow and risky.
!default sets a variable only if it is not already set.
This makes stylesheets easier to customize and maintain.
Practice
!default flag do when used with a Sass variable?Solution
Step 1: Understand the purpose of
The!default!defaultflag in Sass is used to assign a value to a variable only if it has not been assigned a value before.Step 2: Compare with other options
The other options describe behaviors that!defaultdoes not perform. It does not make the variable global regardless of scope, force overwrites of previous values, or delete the variable after use.Final Answer:
It sets the variable only if it has not been set before. -> Option BQuick Check:
!defaultmeans set if unset [OK]
- Thinking !default always overwrites values
- Confusing !default with variable scope
- Assuming !default deletes variables
blue to a Sass variable $color?Solution
Step 1: Recall Sass variable assignment syntax
Sass variables are assigned using$variable-name: value;. To set a default value, add!defaultafter the value.Step 2: Check each option
$color: blue; assigns a value but does not use!default. $color: blue !default; correctly uses!default. $color = blue !default; uses an invalid assignment operator=. $color: blue !important; uses!importantwhich is CSS, not Sass variable syntax.Final Answer:
$color: blue !default; -> Option DQuick Check:
Correct syntax uses colon and !default [OK]
- Using = instead of : for variable assignment
- Confusing !default with !important
- Omitting !default when intending default value
$font-size after compilation?$font-size: 16px !default; $font-size: 18px;
Solution
Step 1: Understand the effect of !default on first assignment
The first line sets$font-sizeto 16px only if it is not already set. Since it is the first assignment, it sets$font-sizeto 16px.Step 2: Analyze the second assignment without !default
The second line assigns$font-sizeto 18px unconditionally, overwriting the previous value.Final Answer:
18px -> Option AQuick Check:
Later assignment overwrites default [OK]
- Assuming !default prevents any overwrite
- Thinking duplicate assignments cause errors
- Ignoring order of variable declarations
$primary-color: red !default $primary-color: blue;
Solution
Step 1: Check syntax of variable declarations
In Sass, each variable declaration must end with a semicolon. The first line is missing a semicolon after!default.Step 2: Verify other options
Assigning two values to the same variable is allowed; the later overwrites the earlier. The use of!defaultis correct. Variables can be declared globally, not only inside selectors.Final Answer:
Missing semicolon after first variable declaration. -> Option CQuick Check:
Every Sass statement ends with semicolon [OK]
- Omitting semicolon after !default
- Thinking multiple assignments cause errors
- Believing variables must be inside selectors
!default to achieve this?Solution
Step 1: Understand how !default works with user overrides
The!defaultflag sets a variable only if it is not already set. To allow user override, the user must set the variable before this file is loaded.Step 2: Analyze each option
$button-color: green; $button-color: blue !default; sets$button-colorfirst without!default, then tries to set default, which won't work as intended. $button-color: blue !default; $button-color: green; sets default first, then overwrites it, so user cannot override easily. $button-color: blue !default; sets default but does not mention user override. $button-color: blue !default; // User sets $button-color: green before importing this file correctly shows default with comment explaining user sets variable before import, enabling override.Final Answer:
Use !default and let user set variable before import. -> Option AQuick Check:
User sets variable before default with !default [OK]
- Setting default after user value
- Not allowing user to set variable before import
- Confusing order of assignments
Ready to prove it?
Pass the test and this pattern moves unknown
