SASS @extend

Sass (Syntactically Awesome Style Sheets) is a CSS preprocessor that offers various features to simplify and enhance the way you write stylesheets. One of its powerful features is @extend, which enables you to create efficient and DRY (Don’t Repeat Yourself) CSS by inheriting styles from one selector to another. In this comprehensive guide, we will delve into the concept of Sass @extend, understand its syntax, and explore its benefits in modern web development.

Understanding Sass @extend

The @extend directive in Sass allows you to share styles from one CSS selector (the source selector) with another selector (the target selector). This promotes code reusability by eliminating the need to duplicate styles for multiple selectors with similar properties.


Syntax of Sass @extend

To use @extend, you specify a source selector that contains the styles you want to share, and a target selector that receives those styles. The syntax is as follows:

.source-selector {
/* CSS properties and values */


.target-selector {
@extend .source-selector;
/* Additional CSS properties and values */


Here, the styles defined in .source-selector are inherited by .target-selector.


Benefits of Using Sass @extend

Sass @extend offers several advantages in terms of code efficiency and maintainability:


DRY (Don’t Repeat Yourself) Code

@extend promotes DRY code by allowing you to define styles once and reuse them across multiple selectors. This reduces redundancy and makes your codebase more concise.



By inheriting styles from a source selector, you ensure that all target selectors share the same styles. This guarantees visual consistency throughout your stylesheet.


Efficient Updates

When you need to update a shared style, you only have to modify it in one place—the source selector. All target selectors will automatically reflect the changes, simplifying maintenance and reducing the risk of errors.


Semantic Selectors

@extend encourages the use of semantic selectors, as you can create source selectors that represent the purpose or function of the styles. This improves code readability and makes it easier for other developers to understand your styles.


Smaller CSS Output

Sass’s compiler intelligently combines and groups selectors that share styles when generating the final CSS output. This can lead to smaller file sizes and improved performance.


Using Sass @extend

To demonstrate how @extend works, let’s consider an example where we have a base button style that we want to reuse for primary and secondary buttons:

.button {
padding: 10px 20px;
font-size: 16px;
background-color: #3498db;
color: #fff;
border: none;
cursor: pointer;


.primary-button {
@extend .button;
/* Additional styles for primary buttons */


.secondary-button {
@extend .button;
/* Additional styles for secondary buttons */


In this example, the .primary-button and .secondary-button selectors both inherit styles from the .button selector using @extend. Any changes made to the base button styles will automatically apply to both primary and secondary buttons.


Best Practices for Sass @extend

While @extend is a powerful tool, it should be used judiciously to avoid potential issues:

  1. Limit Extending: Avoid excessive use of @extend. Over-extending can lead to complex CSS output and potential performance problems.

  2. Avoid Chaining Extends: Be cautious when chaining extends (extending a selector that itself extends another selector). This can create unexpected results and specificity issues.

  3. Use % Placeholder Selectors: In many cases, it’s more efficient to use % placeholder selectors instead of classes for source selectors. Placeholder selectors are not compiled into CSS unless extended, reducing unused code in the final output.

%button {
/* Button styles */


.primary-button {
@extend %button;
/* Additional styles for primary buttons */


In conclusion, Sass @extend is a valuable feature that promotes code reusability, consistency, and efficiency in your CSS. By inheriting styles from source selectors, you can create more maintainable and concise stylesheets while reducing redundancy. However, it’s important to use @extend thoughtfully, keeping an eye on potential side effects and ensuring your code remains clean and maintainable. When used effectively, @extend becomes a key component in crafting efficient and organized CSS code for modern web development.

Build something ULTIMATE!

About Us

Learn about HTML, CSS, SASS, Javascript, jQuery, PHP, SQL, WordPress. From basics to tips and tricks.

Connect With us

© 2023 Ultimate WebDev

This website uses cookies to improve your experience. By browsing this website, you agree to our cookies. Accept Read More