📖 Scenario: You are building a simple website style using Sass. You want to organize your styles by splitting colors and typography into separate files. Then you will import these files into a main stylesheet using the modern @use directive.
🎯 Goal: Create two Sass partial files named _colors.scss and _typography.scss with variables. Then use the @use directive in styles.scss to import them and apply the styles to the body.
📋 What You'll Learn
Create a partial file _colors.scss with a variable $primary-color set to #3498db.
Create a partial file _typography.scss with a variable $font-stack set to 'Helvetica, Arial, sans-serif'.
In styles.scss, use the @use directive to import both partials.
Apply the imported variables to style the body background color and font family.
💡 Why This Matters
🌍 Real World
Organizing CSS styles in large projects by splitting variables and styles into separate files improves maintainability and collaboration.
💼 Career
Modern front-end developers use Sass with <code>@use</code> to write scalable and clean stylesheets for websites and applications.
Progress0 / 4 steps
1
Create _colors.scss with a color variable
Create a Sass partial file named _colors.scss and define a variable called $primary-color with the value #3498db.
SASS
Hint
Start with $primary-color: then add the color #3498db and end with a semicolon.
2
Create _typography.scss with a font variable
Create a Sass partial file named _typography.scss and define a variable called $font-stack with the value 'Helvetica, Arial, sans-serif'.
SASS
Hint
Use $font-stack: then the font family string in quotes and a semicolon.
3
Import partials in styles.scss using @use
In styles.scss, write two @use directives to import _colors.scss and _typography.scss partials.
SASS
Hint
Use @use 'colors'; and @use 'typography'; to import the partials without the underscore or extension.
4
Apply imported variables to style the body
In styles.scss, add a body selector that sets background-color to colors.$primary-color and font-family to typography.$font-stack.
SASS
Hint
Use the namespace from @use followed by the variable name with a dot, like colors.$primary-color.
Practice
(1/5)
1. What is the main purpose of the @use directive in Sass?
easy
A. To import Sass files with a namespace to avoid conflicts
B. To directly copy CSS styles without any namespace
C. To run JavaScript code inside Sass files
D. To export variables from Sass files
Solution
Step 1: Understand the role of @use
The @use directive imports Sass files and applies a namespace to their contents.
Step 2: Compare with other import methods
Unlike @import, @use avoids naming conflicts by requiring namespace prefixes.
Final Answer:
To import Sass files with a namespace to avoid conflicts -> Option A
Quick Check:
@use adds namespace = C [OK]
Hint: Remember: @use always adds a namespace [OK]
Common Mistakes:
Thinking @use copies styles without namespace
Confusing @use with JavaScript execution
Believing @use exports variables
2. Which of the following is the correct syntax to import a Sass file named colors.scss using @use?
easy
A. @use 'colors';
B. @use colors.scss;
C. @use "colors.scss";
D. @use colors;
Solution
Step 1: Check correct quoting and file extension
The @use directive requires the file path as a string without the extension, usually quoted.
Step 2: Validate options
@use 'colors'; uses quotes and omits the extension, which is correct. Options B and C include the extension incorrectly or wrong quotes. @use colors; lacks quotes.
Final Answer:
@use 'colors'; -> Option A
Quick Check:
Quotes + no extension = D [OK]
Hint: Use quotes and omit .scss extension in @use [OK]
Common Mistakes:
Including the .scss extension inside @use
Not using quotes around the file name
Using double quotes inconsistently
3. Given the following Sass files, what will be the color of the h1 text?
@use 'colors';
h1 {
color: colors.$primary;
}
// colors.scss
$primary: blue;
$secondary: green;
medium
A. green
B. black
C. red
D. blue
Solution
Step 1: Identify the imported variables
The @use 'colors'; imports variables with the namespace colors. The variable $primary is set to blue.
Step 2: Check the usage in h1
The color is set to colors.$primary, which refers to blue.
C. Variables must be accessed with namespace prefix unless configured
D. Variables cannot be used inside selectors
Solution
Step 1: Understand @use namespace behavior
By default, variables must be accessed with the namespace prefix unless as * is used to remove it.
Step 2: Check the code usage
The code uses @use 'theme'; without as *, so variables must be accessed with the theme. prefix, but $main-color is used without it, causing an undefined variable error.
Step 3: Identify the actual problem
Without as *, the prefix is required, so Variables must be accessed with namespace prefix unless configured identifies the issue.
Final Answer:
Variables must be accessed with namespace prefix unless configured -> Option C
Quick Check:
Default namespace prefix required = A [OK]
Hint: Use namespace or as * to access variables directly [OK]
Common Mistakes:
Thinking as * is invalid syntax
Forgetting to prefix variables without as *
Including .scss extension in @use
5. You want to import variables.scss but rename its namespace to vars and override the variable $font-size to 1.5rem. Which @use syntax is correct?
hard
A. @use 'variables' as vars ($font-size: 1.5rem);
B. @use 'variables' as vars with ($font-size: 1.5rem);
C. @use 'variables' with ($font-size: 1.5rem) as vars;
D. @use 'variables' rename vars with ($font-size: 1.5rem);
Solution
Step 1: Recall @use syntax for renaming and configuring
The correct syntax is @use 'file' as namespace with (variable overrides);.
Step 2: Match options to syntax
@use 'variables' as vars with ($font-size: 1.5rem); matches the correct order and syntax. Options B, C, and D have incorrect order or keywords.
Final Answer:
@use 'variables' as vars with ($font-size: 1.5rem); -> Option B
Quick Check:
Namespace + with (overrides) = A [OK]
Hint: Use as then with for renaming and overrides [OK]
Common Mistakes:
Swapping as and with order
Using invalid keywords like rename
Omitting parentheses around overrides
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.