Sass Extend
Sass Extend (@extend)
Sass Extend @extend is used to share CSS rules between selectors.
Instead of copying properties (like mixins), @extend lets one selector inherit the styles of another, producing cleaner and smaller CSS output.
Basic Syntax
Define a Base Class
Extend It
Compiled CSS
✔ No duplicated CSS properties
Multiple Extensions
Extending Placeholder Selectors (%)
Why Placeholders?
Placeholders don’t generate CSS unless extended.
Output
✔ Best practice for @extend
Extending with Nesting
Extend with Pseudo-Classes
⚠️ Be careful: selectors can become complex.
@extend vs Mixins
| Feature | @extend | @mixin |
|---|---|---|
| Reusability | Shares selectors | Copies properties |
| Parameters | ❌ No | ✅ Yes |
| CSS Size | Smaller | Larger |
| Control | Limited | High |
❌ When NOT to Use @extend
-
Across unrelated components
-
Inside media queries (can cause issues)
-
When parameters are needed
✅ Best Practices
✔ Prefer %placeholder selectors
✔ Use extend for similar components
✔ Avoid extending complex selectors
✔ Keep CSS readable
📌 Summary
-
@extendshares styles between selectors -
Produces smaller CSS
-
Best used with placeholders
% -
Use mixins for dynamic styles
