Bird
Raised Fist0
SASSmarkup~20 mins

Content blocks with @content in SASS - Mini Project: Build & Apply

Choose your learning style10 modes available
Using Content Blocks with @content in Sass
📖 Scenario: You are creating a reusable button style in Sass. You want to allow different buttons to have custom inner styles or content blocks using @content. This helps keep your styles clean and flexible.
🎯 Goal: Build a Sass mixin called button-style that applies basic button styles and accepts a content block with @content to add extra styles inside the button.
📋 What You'll Learn
Create a mixin named button-style with basic button styles
Use @content inside the mixin to allow custom inner styles
Include the mixin in a class .btn-primary and add extra styles using the content block
Ensure the final CSS styles the button with base and custom styles
💡 Why This Matters
🌍 Real World
Using @content in Sass mixins helps create flexible, reusable style blocks for UI components like buttons, cards, or alerts.
💼 Career
Front-end developers often write Sass mixins with @content to keep CSS DRY and maintainable while allowing customization.
Progress0 / 4 steps
1
Create the button-style mixin with base styles
Write a Sass mixin named button-style that sets padding to 1rem 2rem, border-radius to 0.5rem, and font-weight to bold.
SASS
Hint

Use @mixin button-style { ... } and add the three CSS properties inside.

2
Add @content inside the button-style mixin
Inside the button-style mixin, add @content after the base styles to allow custom styles to be inserted.
SASS
Hint

Place @content; inside the mixin after the base styles.

3
Include the button-style mixin in .btn-primary class
Create a CSS class .btn-primary and include the button-style mixin inside it using @include button-style.
SASS
Hint

Use @include button-style { } inside the .btn-primary block.

4
Add custom background and color styles inside the mixin content block
Inside the @include button-style block in .btn-primary, add background-color: #007bff; and color: white; to style the button's background and text color.
SASS
Hint

Inside the content block, add background-color: #007bff; and color: white;.

Practice

(1/5)
1. What is the main purpose of @content in Sass?
easy
A. To pass custom styles into a mixin for flexible reuse
B. To define variables inside a mixin
C. To import external CSS files
D. To create loops in Sass

Solution

  1. Step 1: Understand what @content does

    @content allows you to insert custom CSS blocks inside a mixin, making it flexible.
  2. Step 2: Compare with other options

    Variables, imports, and loops are different Sass features unrelated to @content.
  3. Final Answer:

    To pass custom styles into a mixin for flexible reuse -> Option A
  4. Quick Check:

    @content = custom styles in mixin [OK]
Hint: Remember: @content inserts custom styles inside mixins [OK]
Common Mistakes:
  • Confusing @content with variables or imports
  • Thinking @content creates loops
  • Assuming @content is for defining selectors
2. Which of the following is the correct syntax to use @content inside a mixin?
easy
A. @mixin example { @include content; }
B. @mixin example { content(); }
C. @mixin example { @content; }
D. @mixin example { content; }

Solution

  1. Step 1: Recall the syntax for content blocks

    Inside a mixin, @content; is used to insert the passed block.
  2. Step 2: Check each option

    Only @mixin example { @content; } uses @content; correctly with the semicolon.
  3. Final Answer:

    @mixin example { @content; } -> Option C
  4. Quick Check:

    Correct syntax uses @content; inside mixin [OK]
Hint: Use @content; with a semicolon inside mixins [OK]
Common Mistakes:
  • Omitting the @ symbol before content
  • Using parentheses like a function call
  • Forgetting the semicolon after @content
3. What will be the output CSS of this Sass code?
@mixin card {
border: 1px solid black;
padding: 1rem;
@content;
}

.box {
@include card {
background-color: yellow;
}
}
medium
A. .box { border: 1px solid black; padding: 1rem; } .box { background-color: yellow; }
B. .box { border: 1px solid black; padding: 1rem; background-color: yellow; }
C. .box { background-color: yellow; }
D. Syntax error, no output

Solution

  1. Step 1: Understand mixin with @content

    The mixin card adds border and padding, then inserts the passed block with @content.
  2. Step 2: Check how .box includes the mixin

    The block inside @include card { ... } adds background-color: yellow; inside the mixin's content.
  3. Final Answer:

    .box { border: 1px solid black; padding: 1rem; background-color: yellow; } -> Option B
  4. Quick Check:

    Mixin + @content block = combined styles [OK]
Hint: Mixin styles + @content block styles combine inside selector [OK]
Common Mistakes:
  • Thinking @content styles appear outside the selector
  • Expecting separate CSS blocks for mixin and content
  • Assuming syntax error due to block usage
4. Identify the error in this Sass code using @content:
@mixin highlight {
background: yellow;
@content
}

.text {
@include highlight {
color: red;
}
}
medium
A. Missing semicolon after @content
B. Mixin name should be @content
C. Cannot use blocks with @include
D. Background property is invalid

Solution

  1. Step 1: Check syntax of @content inside mixin

    @content must end with a semicolon to be valid.
  2. Step 2: Verify other parts

    Mixin name and block usage are correct; background property is valid CSS.
  3. Final Answer:

    Missing semicolon after @content -> Option A
  4. Quick Check:

    @content requires semicolon [OK]
Hint: Always put semicolon after @content inside mixins [OK]
Common Mistakes:
  • Omitting semicolon after @content
  • Confusing mixin and content names
  • Thinking block usage with @include is invalid
5. You want to create a reusable button style mixin that allows custom hover styles using @content. Which Sass code correctly achieves this?
hard
A. @mixin button { padding: 1rem; border: none; @content; &:hover { @content; } }
B. @mixin button { padding: 1rem; border: none; @content; } .btn:hover { @content; }
C. @mixin button { padding: 1rem; border: none; } .btn { @include button; &:hover { @content; } }
D. @mixin button { padding: 1rem; border: none; @content; &:hover { @content; } } .btn { @include button { color: blue; &:hover { color: red; } } }

Solution

  1. Step 1: Understand the goal

    Create a mixin that sets base button styles and allows custom styles including hover via @content.
  2. Step 2: Analyze each option

    @mixin button { padding: 1rem; border: none; @content; &:hover { @content; } } .btn { @include button { color: blue; &:hover { color: red; } } } defines the mixin with @content inside and inside &:hover, then includes it with a block that passes normal and hover styles. This correctly applies custom hover styles.
  3. Step 3: Why others fail

    @mixin button { padding: 1rem; border: none; @content; &:hover { @content; } } tries to use @content twice in the mixin without passing blocks properly. @mixin button { padding: 1rem; border: none; @content; } .btn:hover { @content; } applies hover styles outside the mixin, losing reusability. @mixin button { padding: 1rem; border: none; } .btn { @include button; &:hover { @content; } } misuses @content outside mixin context.
  4. Final Answer:

    @mixin button { padding: 1rem; border: none; @content; &:hover { @content; } } .btn { @include button { color: blue; &:hover { color: red; } } } -> Option D
  5. Quick Check:

    Mixin with @content block for hover = @mixin button { padding: 1rem; border: none; @content; &:hover { @content; } } .btn { @include button { color: blue; &:hover { color: red; } } } [OK]
Hint: Pass hover styles inside @include block with nested &:hover [OK]
Common Mistakes:
  • Using @content outside mixin
  • Trying to call @content multiple times without blocks
  • Defining hover styles outside mixin losing flexibility
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