Sass/SCSS Extend and Inheritance

Sharing styles with @extend

Basic Extend

.message {
    padding: 10px;
    border: 1px solid #ccc;
}
.success {
    @extend .message; # inherit .message styles
    border-color: green;
}

Placeholder Selectors

%button-base { # placeholder (not output in CSS)
    padding: 10px 20px;
    border-radius: 4px;
}
.btn-primary {
    @extend %button-base; # extend placeholder
    background: blue;
}

Multiple Extends

.error {
    @extend .message;
    @extend %border-thick; # extend multiple
    color: red;
}

Extend vs Mixin

// @extend: shares styles (smaller CSS)
// @mixin: duplicates styles (more flexible)