Bird
Raised Fist0
SASSmarkup~8 mins

Including mixins with @include in SASS - Performance & Optimization

Choose your learning style10 modes available
Performance: Including mixins with @include
MEDIUM IMPACT
This affects CSS file size and browser rendering speed by controlling how styles are reused and duplicated.
Reusing common style blocks in CSS
SASS
@mixin button-style {
  padding: 1rem;
  border-radius: 0.5rem;
  background-color: blue;
  color: white;
}

.button-primary {
  @include button-style;
}

.button-secondary {
  @include button-style;
  background-color: gray;
}
Defines the mixin once and includes it where needed, avoiding unnecessary duplication by customizing only what differs.
📈 Performance Gainreduces CSS file size by 30-50%, faster CSS parsing and rendering
Reusing common style blocks in CSS
SASS
@include button-style;
@include button-style;
@include button-style;
This duplicates the same CSS rules multiple times in the final CSS file, increasing file size and slowing down page load.
📉 Performance Costadds 5-10kb per repeated mixin use, increases CSS parsing time
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Repeated @include of large mixinsNo direct DOM impactNo direct reflowsHigher paint cost due to larger CSS[X] Bad
Single @include with customizationNo direct DOM impactNo direct reflowsLower paint cost with smaller CSS[OK] Good
Rendering Pipeline
Sass mixins are compiled to CSS before the browser loads the page. Overusing @include duplicates CSS rules, increasing CSS file size, which delays Style Calculation and Layout stages.
→Style Calculation
→Layout
→Paint
⚠️ BottleneckStyle Calculation due to larger CSS files
Core Web Vital Affected
LCP
This affects CSS file size and browser rendering speed by controlling how styles are reused and duplicated.
Optimization Tips
1Avoid repeating large mixins multiple times to keep CSS size small.
2Use mixins with parameters to customize styles without duplication.
3Prefer utility classes or CSS variables for common styles to reduce CSS bloat.
Performance Quiz - 3 Questions
Test your performance knowledge
What is a performance downside of using @include mixins excessively in Sass?
AIt increases the CSS file size by duplicating styles
BIt slows down JavaScript execution
CIt causes more DOM nodes to be created
DIt delays image loading
DevTools: Network
How to check: Open DevTools > Network tab > Reload page > Filter by CSS files > Check CSS file size and load time
What to look for: Large CSS files indicate duplicated styles from excessive mixin use; smaller CSS files load faster improving LCP

Practice

(1/5)
1. What does the @include directive do in Sass?
easy
A. It inserts the styles defined in a mixin into the current selector.
B. It defines a new mixin with reusable styles.
C. It imports another Sass file into the current file.
D. It creates a variable to store a color or value.

Solution

  1. Step 1: Understand the role of @include

    The @include directive is used to add the styles from a mixin into a selector.
  2. Step 2: Differentiate from other Sass features

    Defining mixins uses @mixin, importing files uses @import, and variables use $ syntax.
  3. Final Answer:

    It inserts the styles defined in a mixin into the current selector. -> Option A
  4. Quick Check:

    @include adds mixin styles [OK]
Hint: Remember: @include adds mixin styles inside selectors [OK]
Common Mistakes:
  • Confusing @include with @mixin which defines mixins
  • Thinking @include imports files
  • Mixing up variables with mixins
2. Which of the following is the correct syntax to include a mixin named button-style in Sass?
easy
A. @include button-style();
B. @mixin button-style();
C. @include button-style;
D. @use button-style();

Solution

  1. Step 1: Recall the syntax for including mixins

    The correct syntax to include a mixin is @include mixin-name(); with parentheses even if no arguments are passed.
  2. Step 2: Eliminate incorrect options

    @mixin defines a mixin, not includes it. @use is for modules. Omitting parentheses is invalid syntax.
  3. Final Answer:

    @include button-style(); -> Option A
  4. Quick Check:

    Include mixin with @include name() [OK]
Hint: Use @include mixinName() with parentheses [OK]
Common Mistakes:
  • Forgetting parentheses after mixin name
  • Using @mixin instead of @include to call mixin
  • Confusing @use with @include
3. Given the Sass code:
@mixin border-radius($radius) {
  border-radius: $radius;
}

.box {
  @include border-radius(10px);
  background: blue;
}

What CSS will this produce?
medium
A. .box { border-radius: 10; background: blue; }
B. .box { border-radius: $radius; background: blue; }
C. .box { border-radius: 10px; background: blue; }
D. .box { background: blue; }

Solution

  1. Step 1: Understand mixin with argument

    The mixin border-radius takes a parameter $radius and sets border-radius to that value.
  2. Step 2: Apply mixin with 10px argument

    Including @include border-radius(10px); replaces $radius with 10px in the output CSS.
  3. Final Answer:

    .box { border-radius: 10px; background: blue; } -> Option C
  4. Quick Check:

    Mixin argument replaces variable in output [OK]
Hint: Mixin arguments replace variables inside mixin [OK]
Common Mistakes:
  • Leaving variable name $radius in output CSS
  • Omitting units like px in argument
  • Ignoring mixin styles in output
4. Identify the error in this Sass code:
@mixin text-style {
  font-size: 1.2rem;
  color: black;
}

.title {
  @include text-style;
  font-weight: bold;
}
medium
A. Cannot use @include inside a selector.
B. Mixin should be defined with parentheses even if no arguments.
C. Mixin name should start with $ sign.
D. Missing parentheses after mixin name in @include.

Solution

  1. Step 1: Check @include syntax

    When including a mixin, parentheses are required even if no arguments are passed.
  2. Step 2: Verify other parts

    Mixin definition without parentheses is allowed if no arguments. Mixin names do not start with $. @include is valid inside selectors.
  3. Final Answer:

    Missing parentheses after mixin name in @include. -> Option D
  4. Quick Check:

    @include needs parentheses even if empty [OK]
Hint: Always add () after mixin name in @include [OK]
Common Mistakes:
  • Omitting parentheses in @include
  • Thinking mixin names start with $
  • Believing @include can't be inside selectors
5. You want to create a reusable mixin card that sets a white background, shadow, and border radius. You also want to customize the border radius when including it. Which Sass code correctly defines and uses this mixin?
hard
A. @mixin card { background: white; box-shadow: 0 2px 5px rgba(0,0,0,0.1); border-radius: $radius; } .container { @include card(1rem); }
B. @mixin card($radius) { background: white; box-shadow: 0 2px 5px rgba(0,0,0,0.1); border-radius: $radius; } .container { @include card(1rem); }
C. @mixin card($radius) { background: white; box-shadow: 0 2px 5px rgba(0,0,0,0.1); border-radius: 1rem; } .container { @include card; }
D. @mixin card($radius) { background: white; box-shadow: 0 2px 5px rgba(0,0,0,0.1); border-radius: $radius; } .container { @include card; }

Solution

  1. Step 1: Define mixin with parameter for border radius

    The mixin card must accept $radius to customize border radius.
  2. Step 2: Include mixin with argument

    When including, pass the desired radius value like @include card(1rem);.
  3. Step 3: Check other options for errors

    @mixin card { background: white; box-shadow: 0 2px 5px rgba(0,0,0,0.1); border-radius: $radius; } .container { @include card(1rem); } uses $radius without parameter, causing error. @mixin card($radius) { background: white; box-shadow: 0 2px 5px rgba(0,0,0,0.1); border-radius: 1rem; } .container { @include card; } hardcodes radius and omits parentheses in include. @mixin card($radius) { background: white; box-shadow: 0 2px 5px rgba(0,0,0,0.1); border-radius: $radius; } .container { @include card; } omits argument when including.
  4. Final Answer:

    @mixin card($radius) { background: white; box-shadow: 0 2px 5px rgba(0,0,0,0.1); border-radius: $radius; } .container { @include card(1rem); } -> Option B
  5. Quick Check:

    Define mixin with param, include with argument [OK]
Hint: Define mixin params and pass args in @include [OK]
Common Mistakes:
  • Using variables inside mixin without parameters
  • Forgetting parentheses in @include
  • Not passing required arguments when including
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