Bird
Raised Fist0
SASSmarkup~5 mins

Property nesting for related styles in SASS

Choose your learning style10 modes available
Introduction

Nesting selectors helps keep related styles together. It makes your code cleaner and easier to read.

When you want to style a button and its hover state together.
When you have a menu with items and sub-items that share styles.
When you want to group styles for a form and its input fields.
When you want to organize styles for a card component and its title and content.
When you want to reduce repetition in your CSS code.
Syntax
SASS
$selector {
  property: value;
  nested-selector {
    property: value;
  }
}
Use indentation to show nesting clearly.
Nested selectors are written inside the parent selector's block.
Examples
This styles a button and changes its color when hovered.
SASS
.button {
  color: blue;
  &:hover {
    color: red;
  }
}
Styles a menu and its items together.
SASS
.menu {
  background: white;
  .item {
    padding: 1rem;
  }
}
Groups styles for a card and its parts.
SASS
.card {
  border: 1px solid #ccc;
  .title {
    font-weight: bold;
  }
  .content {
    margin-top: 0.5rem;
  }
}
Sample Program

This example shows a card with nested styles for its title, content, and hover background color. Nesting keeps related styles inside the .card block.

SASS
@use 'sass:color';

.card {
  border: 2px solid #333;
  padding: 1rem;
  background: color.scale(#eee, $lightness: -10%);

  .title {
    font-size: 1.5rem;
    font-weight: bold;
    color: #222;
  }

  .content {
    margin-top: 0.5rem;
    color: #555;
  }

  &:hover {
    background: color.scale(#eee, $lightness: 10%);
  }
}
OutputSuccess
Important Notes

Always indent nested styles properly to avoid confusion.

Use & to refer to the parent selector inside nested blocks.

Nesting helps reduce repeated selectors and keeps styles organized.

Summary

Nesting groups related styles inside one block.

Use & to refer to the parent selector for states like :hover.

It makes your styles easier to read and maintain.

Practice

(1/5)
1. What is the main benefit of using property nesting in Sass?
easy
A. It groups related styles inside one block for better readability.
B. It automatically compiles CSS faster.
C. It removes the need for selectors in CSS.
D. It disables browser default styles.

Solution

  1. Step 1: Understand the purpose of nesting

    Nesting groups related CSS rules inside one block, making the code easier to read and maintain.
  2. Step 2: Compare options

    Only 'It groups related styles inside one block for better readability.' correctly describes this benefit. Other options describe unrelated or incorrect effects.
  3. Final Answer:

    It groups related styles inside one block for better readability. -> Option A
  4. Quick Check:

    Nesting groups styles = C [OK]
Hint: Nesting groups styles inside blocks for clarity [OK]
Common Mistakes:
  • Thinking nesting speeds up CSS compilation
  • Believing nesting removes selectors
  • Assuming nesting disables default styles
2. Which of the following is the correct Sass syntax to nest a :hover style inside a button class?
easy
A. .button:hover { & { color: red; } }
B. .button { &:hover { color: red; } }
C. &.button { :hover { color: red; } }
D. .button { :hover & { color: red; } }

Solution

  1. Step 1: Identify correct nesting syntax

    In Sass, & refers to the parent selector. To nest :hover, write .button { &:hover { ... } }.
  2. Step 2: Check each option

    .button { &:hover { color: red; } } uses correct syntax. Others misuse & or place pseudo-class incorrectly.
  3. Final Answer:

    .button { &:hover { color: red; } } -> Option B
  4. Quick Check:

    Nesting with & before :hover = A [OK]
Hint: Use & before pseudo-class inside parent block [OK]
Common Mistakes:
  • Placing & outside the parent selector
  • Using :hover without & inside nesting
  • Misplacing pseudo-class after &
3. Given the Sass code:
.card {
  background: white;
  &:hover {
    background: gray;
  }
  .title {
    font-weight: bold;
  }
}

What is the compiled CSS output?
medium
A. .card { background: white; } .card:hover { background: gray; } .card .title { font-weight: bold; }
B. .card { background: white; } &:hover { background: gray; } .title { font-weight: bold; }
C. .card { background: white; } .card:hover { background: gray; } .title { font-weight: bold; }
D. .card { background: white; } .card:hover { background: gray; } .card.title { font-weight: bold; }

Solution

  1. Step 1: Understand nesting output

    The &:hover becomes .card:hover. The nested .title becomes .card .title.
  2. Step 2: Match compiled CSS

    .card { background: white; } .card:hover { background: gray; } .card .title { font-weight: bold; } correctly shows all selectors expanded properly. Others miss the parent selector or combine incorrectly.
  3. Final Answer:

    .card { background: white; } .card:hover { background: gray; } .card .title { font-weight: bold; } -> Option A
  4. Quick Check:

    Nesting expands selectors fully = B [OK]
Hint: Nested selectors become parent + child in CSS [OK]
Common Mistakes:
  • Forgetting to prepend parent selector to nested classes
  • Leaving & in compiled CSS
  • Combining classes without space incorrectly
4. Identify the error in this Sass code:
.nav {
  color: black;
  &:hover {
    color: blue;
  }
  &.active {
    color: red;
  }
  .item {
    font-size: 1rem;
  }
  &:item {
    font-weight: bold;
  }
}
medium
A. The nested .item selector should be outside the .nav block.
B. The &.active selector is incorrect and should be .active.
C. The &:hover pseudo-class is not allowed inside nesting.
D. The selector &:item is invalid and should be .item.

Solution

  1. Step 1: Review each nested selector

    &:hover and &.active are valid. .item nested inside .nav is correct.
  2. Step 2: Identify invalid selector

    &:item is invalid because :item is not a valid pseudo-class. It should be .item without &:.
  3. Final Answer:

    The selector &:item is invalid and should be .item. -> Option D
  4. Quick Check:

    Invalid pseudo-class &:item = A [OK]
Hint: Pseudo-classes start with :, classes with . [OK]
Common Mistakes:
  • Using & with invalid pseudo-class
  • Confusing class and pseudo-class syntax
  • Moving nested selectors outside parent unnecessarily
5. You want to style a card component so that when hovered, its title text turns blue and the card background changes to light gray. Using property nesting, which Sass code achieves this correctly?
hard
A. .card { background: white; &:hover { .title { background: lightgray; color: blue; } } .title { color: black; } }
B. .card { background: white; .title { color: black; &:hover { color: blue; } } &:hover { background: lightgray; } }
C. .card { background: white; &:hover { background: lightgray; } .title { color: black; } &:hover .title { color: blue; } }
D. .card { background: white; &:hover { background: lightgray; } .title:hover { color: blue; } .title { color: black; } }

Solution

  1. Step 1: Understand the hover effect scope

    The card's background changes on hover, and the title text color changes only when the card is hovered, not the title itself.
  2. Step 2: Check nesting for hover on parent affecting child

    .card { background: white; &:hover { background: lightgray; } .title { color: black; } &:hover .title { color: blue; } } uses &:hover .title to style the title when the card is hovered, which is correct. .card { background: white; &:hover { .title { background: lightgray; color: blue; } } .title { color: black; } } nests .title inside &:hover but incorrectly applies background: lightgray to .title instead of the card. .card { background: white; .title { color: black; &:hover { color: blue; } } &:hover { background: lightgray; } } incorrectly applies hover on .title itself. .card { background: white; &:hover { background: lightgray; } .title:hover { color: blue; } .title { color: black; } } styles .title:hover, which triggers only when hovering the title, not the card.
  3. Final Answer:

    .card { background: white; &:hover { background: lightgray; } .title { color: black; } &:hover .title { color: blue; } } -> Option C
  4. Quick Check:

    Parent hover affecting child style = D [OK]
Hint: Use & hover then space child selector for nested hover effects [OK]
Common Mistakes:
  • Applying hover on child instead of parent
  • Nesting child inside &:hover block incorrectly
  • Using child:hover instead of parent:hover child
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