Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Using Future CSS Features to Replace SASS Variables and Nesting
📖 Scenario: You are building a simple website style using modern CSS features that can replace some common SASS features like variables and nesting.This helps you write CSS without needing a preprocessor, making your styles easier to maintain and faster to load.
🎯 Goal: Create a CSS style using native CSS custom properties (variables) and nesting to style a navigation menu with colors and hover effects.
📋 What You'll Learn
Use CSS custom properties to define colors instead of SASS variables
Use native CSS nesting to style nested elements instead of SASS nesting
Create a navigation bar with background color and link hover color using these features
Ensure the CSS is valid and works in modern browsers
💡 Why This Matters
🌍 Real World
Modern CSS features reduce the need for preprocessors like SASS, simplifying your workflow and improving performance.
💼 Career
Front-end developers increasingly use native CSS features to write cleaner, faster, and more maintainable stylesheets.
Progress0 / 4 steps
1
Create CSS custom properties for colors
Write CSS code that defines two custom properties inside the :root selector: --main-bg-color with the value #3498db and --main-text-color with the value #ffffff.
SASS
Hint
Use :root to define global CSS variables with --variable-name: value;.
2
Create a navigation bar container with background color
Add a CSS rule for the nav element that sets its background color to the custom property --main-bg-color and adds padding of 1rem.
SASS
Hint
Use var(--main-bg-color) to access the custom property value.
3
Style navigation links with native CSS nesting
Inside the nav rule, use native CSS nesting to style a elements so that their text color is the custom property --main-text-color and remove the underline with text-decoration: none.
SASS
Hint
Use & a inside nav to nest styles for links.
4
Add hover effect to navigation links using native CSS nesting
Inside the nested a rule, add a hover style using &:hover that changes the link color to #f1c40f.
SASS
Hint
Use &:hover inside the nested a rule to add hover styles.
Practice
(1/5)
1. Which future CSS feature allows you to store reusable values like colors or sizes directly in CSS without using SASS variables?
easy
A. CSS Modules
B. CSS Custom Properties (variables)
C. CSS Functions
D. CSS Mixins
Solution
Step 1: Understand CSS Custom Properties
CSS Custom Properties let you define variables using the syntax --name: value; inside selectors.
Step 2: Compare with SASS variables
SASS variables are replaced by CSS Custom Properties which work natively in browsers and can be reused.
Final Answer:
CSS Custom Properties (variables) -> Option B
Quick Check:
Variables in CSS = CSS Custom Properties [OK]
Hint: Remember CSS variables start with double dashes -- [OK]
Common Mistakes:
Confusing CSS Mixins with variables
Thinking CSS Functions are variables
Assuming CSS Modules are variables
2. Which of the following is the correct syntax for nesting selectors using future CSS features (without SASS)?
easy
A. nav { ul { list-style: none; } }
B. nav > ul { list-style: none; }
C. nav { & ul { list-style: none; } }
D. nav ul { list-style: none; }
Solution
Step 1: Understand future CSS nesting syntax
Future CSS uses the & nesting selector to nest selectors, e.g., nav { & ul { list-style: none; } }.
Step 2: Compare with SASS nesting
SASS allows direct nesting like nav { ul { ... } }, but future CSS requires & or pseudo-classes like :is() or :where().
3. What will be the computed background color of the <div> in this CSS using future CSS variables?
:root { --main-color: coral; } div { background-color: var(--main-color); }
medium
A. var(--main-color)
B. transparent
C. black
D. coral
Solution
Step 1: Identify the variable definition
The variable --main-color is set to coral in the :root selector, making it global.
Step 2: Apply the variable in div
The div uses background-color: var(--main-color); which fetches the value coral.
Final Answer:
coral -> Option D
Quick Check:
CSS variable value applied = coral [OK]
Hint: var() fetches the value of CSS custom properties [OK]
Common Mistakes:
Thinking var() outputs the variable name
Assuming default color if variable is defined
Confusing transparent with variable usage
4. Identify the error in this future CSS code snippet that tries to use nesting:
section { article { padding: 1rem; } }
medium
A. Nesting must use & or :is() or :where()
B. The ampersand (&) is not supported in future CSS nesting
C. Incorrect property name 'padding'
D. Missing semicolon after padding value
Solution
Step 1: Check nesting syntax in future CSS
Future CSS requires nested selectors to start with & or pseudo-classes like :is() or :where(). Plain article is invalid.
Step 2: Identify correct nesting method
Correct would be section { & article { padding: 1rem; } } or using pseudo-classes.
Final Answer:
Nesting must use & or :is() or :where() -> Option A
Quick Check:
Future CSS nesting requires & or pseudo-classes [OK]
Hint: Future CSS nesting requires & or :is()/:where() [OK]
Common Mistakes:
Using plain selectors without & or pseudo-class
Ignoring missing semicolon which is correct here
Confusing property names
5. You want to create a responsive design using future CSS features replacing SASS. Which is the correct way to write a media query that changes font size for screens wider than 600px?
medium
A. @media screen and (min-width: 600px) { body { font-size: 1.2rem; } }
B. @media (min-width: 600px) { body { font-size: 12; } }
C. @media screen (min-width: 600px) { body { font-size: 1.2rem; } }
D. @media (min-width: 600) { body { font-size: 1.2rem; } }
Solution
Step 1: Understand media query syntax
Future CSS uses standard CSS media queries. The correct syntax includes the media type, e.g., screen and (min-width: 600px).
Step 2: Check font size units
Using 1.2rem is better for accessibility and scaling than fixed pixels.
Final Answer:
@media screen and (min-width: 600px) { body { font-size: 1.2rem; } } -> Option A
Quick Check:
Media query with screen and rem units [OK]
Hint: Always include media type and use rem units for fonts [OK]