Bird
Raised Fist0
SASSmarkup~8 mins

First SASS stylesheet - Performance & Optimization

Choose your learning style10 modes available
Performance: First SASS stylesheet
LOW IMPACT
This affects the CSS bundle size and the browser's style calculation and paint performance.
Writing styles for a website with repeated colors and fonts
SASS
$primary-color: #3498db;

.button {
  color: $primary-color;
  border: 1px solid $primary-color;
}

.link {
  color: $primary-color;
}
Using variables reduces repetition and CSS file size, making styles easier to update.
📈 Performance GainSaves a few bytes in CSS, improving load speed and LCP marginally.
Writing styles for a website with repeated colors and fonts
SASS
$primary-color: #3498db;

.button {
  color: #3498db;
  border: 1px solid #3498db;
}

.link {
  color: #3498db;
}
Repeating the same color value multiple times increases CSS size and maintenance effort.
📉 Performance CostAdds unnecessary CSS bytes increasing bundle size slightly, which can delay LCP.
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Repeated raw colors in CSSNo extra DOM nodes0 reflowsSlightly higher paint cost due to larger CSS[X] Bad
Using SASS variables for colorsNo extra DOM nodes0 reflowsLower paint cost due to smaller CSS[OK] Good
Rendering Pipeline
SASS compiles to CSS before the browser loads the page. The browser then parses CSS, calculates styles, performs layout, and paints pixels.
→Style Calculation
→Layout
→Paint
⚠️ BottleneckStyle Calculation can slow down if CSS is large or complex.
Core Web Vital Affected
LCP
This affects the CSS bundle size and the browser's style calculation and paint performance.
Optimization Tips
1Use SASS variables to avoid repeating values and reduce CSS size.
2Keep nesting shallow to prevent generating overly complex selectors.
3Remove unused styles to keep the compiled CSS minimal.
Performance Quiz - 3 Questions
Test your performance knowledge
How does using SASS variables affect CSS performance?
AIt reduces CSS file size by avoiding repeated values.
BIt increases CSS file size by adding extra code.
CIt causes more DOM nodes to be created.
DIt triggers more reflows during page load.
DevTools: Network
How to check: Open DevTools, go to Network tab, reload page, filter by CSS files, and check the size of the compiled CSS file.
What to look for: Look for large CSS file sizes that can delay LCP; smaller CSS files load faster.

Practice

(1/5)
1. What is the main benefit of using variables in a SASS stylesheet?
easy
A. They automatically fix CSS errors.
B. They make the stylesheet load faster in the browser.
C. They let you reuse values like colors and sizes easily.
D. They convert SASS to JavaScript.

Solution

  1. Step 1: Understand what variables do in SASS

    Variables store values such as colors or sizes so you can reuse them without repeating the same value.
  2. Step 2: Compare options with this understanding

    Only They let you reuse values like colors and sizes easily. correctly describes this benefit. Other options describe unrelated or incorrect features.
  3. Final Answer:

    They let you reuse values like colors and sizes easily. -> Option C
  4. Quick Check:

    Variables store reusable values = A [OK]
Hint: Variables store reusable values like colors or sizes [OK]
Common Mistakes:
  • Thinking variables speed up browser loading
  • Believing variables fix CSS errors automatically
  • Confusing SASS variables with JavaScript
2. Which of the following is the correct way to declare a variable in SASS?
easy
A. $main-color: #3498db;
B. var main-color = #3498db;
C. main-color: #3498db;
D. @main-color: #3498db;

Solution

  1. Step 1: Recall SASS variable syntax

    In SASS, variables start with a dollar sign ($) followed by the name, then a colon and the value.
  2. Step 2: Match options to this syntax

    $main-color: #3498db; matches this exactly. Options B, C, and D use incorrect syntax.
  3. Final Answer:

    $main-color: #3498db; -> Option A
  4. Quick Check:

    Variables start with $ in SASS = A [OK]
Hint: Variables always start with $ in SASS [OK]
Common Mistakes:
  • Using var keyword like JavaScript
  • Omitting the $ sign before variable name
  • Using @ instead of $ for variables
3. What will be the output CSS of this SASS code?
$primary-color: #ff0000;

.button {
  color: $primary-color;
  &:hover {
    color: darken($primary-color, 20%);
  }
}
medium
A. .button { color: $primary-color; } .button:hover { color: darken($primary-color, 20%); }
B. Syntax error: darken function not recognized
C. .button { color: #ff0000; } .button:hover { color: #ff3333; }
D. .button { color: #ff0000; } .button:hover { color: #cc0000; }

Solution

  1. Step 1: Understand variable substitution and nesting

    The variable $primary-color is replaced with #ff0000. The nested &:hover becomes .button:hover.
  2. Step 2: Calculate darken color

    darken(#ff0000, 20%) makes the red darker, resulting in #cc0000.
  3. Final Answer:

    .button { color: #ff0000; } .button:hover { color: #cc0000; } -> Option D
  4. Quick Check:

    Variables replaced and nesting expanded = B [OK]
Hint: Variables replaced, nesting expands selectors [OK]
Common Mistakes:
  • Leaving variables as-is in output CSS
  • Not expanding nested selectors
  • Misunderstanding darken color function
4. Identify the error in this SASS code:
$font-size: 16px

body {
  font-size: $font-size;
}
medium
A. body selector cannot be used in SASS
B. Missing semicolon after variable declaration
C. font-size property is invalid
D. Variable name should not start with $

Solution

  1. Step 1: Check variable declaration syntax

    In SASS, each statement must end with a semicolon. The variable declaration lacks a semicolon.
  2. Step 2: Verify other parts

    Variable names start with $, font-size is valid, and body selector is allowed.
  3. Final Answer:

    Missing semicolon after variable declaration -> Option B
  4. Quick Check:

    Semicolon missing after $font-size declaration = D [OK]
Hint: Always end variable declarations with semicolon [OK]
Common Mistakes:
  • Omitting semicolon after variable
  • Thinking $ is invalid for variables
  • Assuming selectors can't be used
5. You want to create a SASS stylesheet where all buttons have a background color stored in a variable, and on hover, the background becomes 15% lighter. Which SASS code correctly achieves this?
hard
A. $btn-bg: #007bff; button { background-color: $btn-bg; &:hover { background-color: lighten($btn-bg, 15%); } }
B. $btn-bg: #007bff button { background-color: $btn-bg; &:hover { background-color: lighten($btn-bg, 15%) } }
C. $btn-bg: #007bff; button { background-color: $btn-bg; &:hover { background-color: darken($btn-bg, 15%); } }
D. $btn-bg: #007bff; button { background-color: $btn-bg; &:hover { background-color: $btn-bg + 15%; } }

Solution

  1. Step 1: Check variable declaration and syntax

    $btn-bg: #007bff; button { background-color: $btn-bg; &:hover { background-color: lighten($btn-bg, 15%); } } correctly declares $btn-bg with a semicolon and uses proper nesting with &:hover.
  2. Step 2: Verify color function usage

    $btn-bg: #007bff; button { background-color: $btn-bg; &:hover { background-color: lighten($btn-bg, 15%); } } uses lighten($btn-bg, 15%) to make the color lighter on hover, which matches the requirement.
  3. Step 3: Identify errors in other options

    $btn-bg: #007bff button { background-color: $btn-bg; &:hover { background-color: lighten($btn-bg, 15%) } } misses semicolons; $btn-bg: #007bff; button { background-color: $btn-bg; &:hover { background-color: darken($btn-bg, 15%); } } darkens instead of lightens; $btn-bg: #007bff; button { background-color: $btn-bg; &:hover { background-color: $btn-bg + 15%; } } tries invalid addition of color and percentage.
  4. Final Answer:

    $btn-bg: #007bff; button { background-color: $btn-bg; &:hover { background-color: lighten($btn-bg, 15%); } } -> Option A
  5. Quick Check:

    Correct variable, nesting, and lighten function = C [OK]
Hint: Use lighten() with correct syntax and semicolons [OK]
Common Mistakes:
  • Forgetting semicolons after declarations
  • Using darken instead of lighten
  • Trying to add percentage directly to color
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard