Bird
Raised Fist0
SASSmarkup~10 mins

Extend limitations and gotchas in SASS - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to extend a placeholder selector in Sass.

SASS
%button-style { color: blue; }
.btn { [1] %button-style; }
Drag options to blanks, or click blank then click option'
A@extend
B@use
C@mixin
D@include
Attempts:
3 left
💡 Hint
Common Mistakes
Using @include instead of @extend for placeholders.
Trying to extend a class instead of a placeholder.
2fill in blank
medium

Complete the code to extend multiple selectors in Sass.

SASS
.alert { [1] .error, .warning; }
Drag options to blanks, or click blank then click option'
A@extend
B@include
C@mixin
D@forward
Attempts:
3 left
💡 Hint
Common Mistakes
Using @include instead of @extend for selectors.
Not separating selectors with commas.
3fill in blank
hard

Fix the error in the code by completing the blank to correctly extend a placeholder inside a nested selector.

SASS
.card {
  [1] %base-style;
  padding: 1rem;
}
Drag options to blanks, or click blank then click option'
A@include
B@extend
C@mixin
D@use
Attempts:
3 left
💡 Hint
Common Mistakes
Using @include instead of @extend inside nested selectors.
Trying to use @mixin without defining it first.
4fill in blank
hard

Fill both blanks to create a map and extend a placeholder from it.

SASS
$styles: (
  button: '%btn-style',
  alert: '%alert-style'
);

.btn {
  $[1]: map-get($styles, 'button');
  [2] #{$ [1];
}
Drag options to blanks, or click blank then click option'
Aplaceholder
B@extend
Cstyle
D@include
Attempts:
3 left
💡 Hint
Common Mistakes
Trying to use @include instead of @extend for placeholders.
Not storing the placeholder in a variable before extending.
5fill in blank
hard

Fill all three blanks to correctly extend a placeholder and avoid selector duplication.

SASS
%base-style {
  color: red;
}

.btn-primary {
  [1] %base-style;
  background: blue;
}

.btn-secondary {
  [2] %base-style;
  background: gray;
}

// To avoid duplication, use [3] to combine selectors.
Drag options to blanks, or click blank then click option'
A@extend
B@mixin
C@at-root
D@include
Attempts:
3 left
💡 Hint
Common Mistakes
Using @include instead of @extend for placeholders.
Not using @at-root to avoid duplicated selectors.

Practice

(1/5)
1. What is the main limitation of using @extend in Sass?
easy
A. It merges selectors which can cause unexpected CSS output
B. It duplicates all styles instead of reusing them
C. It only works with ID selectors
D. It cannot be used inside nested rules

Solution

  1. Step 1: Understand what @extend does

    @extend reuses styles by merging selectors in the final CSS output.
  2. Step 2: Identify the limitation

    Merging selectors can cause unexpected combined selectors, leading to unwanted CSS rules.
  3. Final Answer:

    It merges selectors which can cause unexpected CSS output -> Option A
  4. Quick Check:

    @extend merges selectors = A [OK]
Hint: Remember: @extend merges selectors, not duplicates styles [OK]
Common Mistakes:
  • Thinking @extend duplicates styles
  • Believing @extend only works with IDs
  • Assuming @extend cannot be nested
2. Which of the following is the correct syntax to extend a placeholder selector %button-base inside a class .primary-button?
easy
A. .primary-button { @extend button-base; }
B. .primary-button { @extend %button-base; }
C. .primary-button { extend %button-base; }
D. .primary-button { @extend #button-base; }

Solution

  1. Step 1: Recall placeholder selector syntax

    Placeholder selectors start with % and must be referenced exactly with @extend %name.
  2. Step 2: Check each option

    Only .primary-button { @extend %button-base; } uses @extend %button-base correctly.
  3. Final Answer:

    .primary-button { @extend %button-base; } -> Option B
  4. Quick Check:

    Use @extend %placeholder syntax = C [OK]
Hint: Always prefix placeholder selectors with % when extending [OK]
Common Mistakes:
  • Omitting the % in the extend statement
  • Using wrong keywords like 'extend' without @
  • Confusing ID (#) with placeholder (%) selectors
3. Given the Sass code:
.alert { color: red; }
.error { @extend .alert; font-weight: bold; }

What will be the compiled CSS output?
medium
A. .alert, .error { color: red; } .error { font-weight: bold; }
B. .alert { color: red; } .error { font-weight: bold; }
C. .error { color: red; font-weight: bold; }
D. .alert { color: red; font-weight: bold; } .error { }

Solution

  1. Step 1: Understand @extend merges selectors

    The .error selector extends .alert, so both selectors share the color: red; style.
  2. Step 2: Check the output structure

    The merged selector .alert, .error has color: red;, and .error has its own font-weight: bold;.
  3. Final Answer:

    .alert, .error { color: red; } .error { font-weight: bold; } -> Option A
  4. Quick Check:

    Selectors merged, styles combined = D [OK]
Hint: Extended selectors share styles in a combined selector list [OK]
Common Mistakes:
  • Expecting duplicated styles instead of merged selectors
  • Thinking extended styles appear only inside the extending selector
  • Ignoring that @extend merges selectors
4. Consider this Sass code:
.btn { color: blue; }
.special-btn { @extend .btn; background: yellow; }
.btn-primary { @extend .btn; }

Why might the compiled CSS include unexpected selectors combined with .btn-primary?
medium
A. Because @extend duplicates styles instead of merging
B. Because @extend only works with placeholder selectors
C. Because @extend merges all selectors that extend .btn into one group
D. Because @extend cannot be used with classes

Solution

  1. Step 1: Understand how @extend merges selectors

    All selectors extending .btn are merged into one combined selector group in the output CSS.
  2. Step 2: Identify why unexpected combinations happen

    Since both .special-btn and .btn-primary extend .btn, their selectors get merged, causing combined selectors.
  3. Final Answer:

    Because @extend merges all selectors that extend .btn into one group -> Option C
  4. Quick Check:

    @extend merges selectors = B [OK]
Hint: Multiple extends on one selector merge all selectors together [OK]
Common Mistakes:
  • Thinking @extend duplicates styles
  • Believing @extend only works with placeholders
  • Assuming @extend cannot be used with classes
5. You want to reuse styles but avoid unwanted CSS output from @extend. Which approach is best?
hard
A. Use @extend inside media queries only
B. Use @extend on regular classes only
C. Duplicate styles manually instead of using @extend
D. Use placeholder selectors (e.g., %base-style) and extend them

Solution

  1. Step 1: Understand placeholder selectors

    Placeholder selectors start with % and do not output CSS unless extended.
  2. Step 2: Why use placeholders with @extend

    Extending placeholders avoids unwanted CSS output because placeholders themselves don't generate CSS.
  3. Step 3: Evaluate other options

    Extending regular classes merges selectors and outputs all styles, duplicating styles is inefficient, and limiting @extend to media queries doesn't solve unwanted output.
  4. Final Answer:

    Use placeholder selectors (e.g., %base-style) and extend them -> Option D
  5. Quick Check:

    Placeholders prevent unwanted CSS output = A [OK]
Hint: Use %placeholders with @extend to avoid extra CSS [OK]
Common Mistakes:
  • Extending regular classes causing large CSS output
  • Copy-pasting styles instead of reusing
  • Misusing @extend inside media queries
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