Bird
Raised Fist0
SASSmarkup~5 mins

Extend limitations and gotchas in SASS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a key limitation of the @extend directive in Sass?
It can only extend selectors that appear earlier in the stylesheet or in imported files. Extending selectors defined later will not work.
Click to reveal answer
intermediate
Why can @extend cause unexpected CSS output?
Because it merges selectors, it can create very long, complex selectors that affect more elements than intended, leading to styling bugs.
Click to reveal answer
intermediate
Can @extend be used inside media queries?
Yes, but the extended selectors must also be inside the same media query. Otherwise, the styles won’t be applied as expected.
Click to reveal answer
beginner
What happens if you try to @extend a placeholder selector that does not exist?
Sass will throw an error because it cannot find the selector to extend.
Click to reveal answer
beginner
How does @extend differ from mixins in Sass?
@extend merges selectors to share styles, while mixins copy properties into the selector. Mixins do not create combined selectors.
Click to reveal answer
What does @extend do in Sass?
AImports external stylesheets
BCopies properties into a selector
CMerges selectors to share styles
DDefines variables
Which of these is a limitation of @extend?
AIt can extend selectors defined later in the file
BIt can create very long combined selectors
CIt copies properties instead of merging selectors
DIt works only with variables
What happens if you @extend a selector inside a media query but the original selector is outside?
AStyles are ignored
BStyles apply normally
CSass throws an error
DStyles are duplicated
If you try to @extend a non-existent placeholder selector, what happens?
ASass throws an error
BIt creates an empty selector
CSass ignores it
DIt creates a warning but compiles
Which is true about @extend compared to mixins?
ABoth merge selectors
B<code>@extend</code> copies properties, mixins merge selectors
CBoth copy properties
D<code>@extend</code> merges selectors, mixins copy properties
Explain the main limitations and common gotchas when using @extend in Sass.
Think about order, selector merging, media queries, and errors.
You got /4 concepts.
    Compare @extend and mixins in Sass and describe when you might choose one over the other.
    Focus on how styles are shared or copied.
    You got /5 concepts.

      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