Bird
Raised Fist0
SASSmarkup~5 mins

State class generation (hover, active, disabled) in SASS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the purpose of state classes like :hover, :active, and :disabled in CSS/Sass?
They define how elements look or behave when users interact with them, such as when hovering with a mouse, clicking, or when an element is disabled and not interactive.
Click to reveal answer
intermediate
How can you generate multiple state classes in Sass efficiently?
By using Sass features like @each loops and mixins to write reusable code that applies styles for each state without repeating code.
Click to reveal answer
beginner
What does the & symbol represent in Sass when used inside a nested selector?
It refers to the parent selector, allowing you to append pseudo-classes or other selectors to the current selector.
Click to reveal answer
intermediate
Write a simple Sass mixin to generate styles for :hover, :active, and :disabled states.
A mixin can loop through states and apply styles like this:
@mixin states($states) {
  @each $state in $states {
    &:#{$state} {
      // styles here
    }
  }
}

// Usage:
.button {
  @include states((hover, active, disabled));
}
Click to reveal answer
beginner
Why is it important to style the :disabled state differently?
Because disabled elements should look inactive and not respond to user actions, helping users understand they cannot interact with them.
Click to reveal answer
Which Sass feature helps you write styles for multiple states without repeating code?
A@each loop
B@import directive
C@extend placeholder
D@function
In Sass, what does the selector &:hover mean inside a nested block?
ASelects the parent element when hovered
BSelects all hover elements
CSelects the child element on hover
DSelects the parent element with hover state
Which state class should visually indicate that an element cannot be interacted with?
A:hover
B:active
C:disabled
D:focus
What is the main benefit of using a Sass mixin for state classes?
AIt makes the CSS file larger
BIt reduces code repetition and keeps styles consistent
CIt disables the states automatically
DIt changes HTML structure
Which of these is NOT a common state class in CSS/Sass?
A:loading
B:active
C:disabled
D:hover
Explain how you would use Sass to create styles for hover, active, and disabled states without repeating code.
Think about looping through states and nesting selectors.
You got /4 concepts.
    Why is it important to visually differentiate the disabled state from hover and active states in a web interface?
    Consider how users understand what they can or cannot click.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using state classes like :hover, :active, and .disabled in Sass?
      easy
      A. To change the appearance of elements based on user interaction or status
      B. To add animations to elements automatically
      C. To create new HTML elements dynamically
      D. To load external CSS files conditionally

      Solution

      1. Step 1: Understand state classes

        State classes like :hover and :active change how elements look when users interact with them.
      2. Step 2: Identify their purpose

        They help show different styles for hover, active, or disabled states to improve user experience.
      3. Final Answer:

        To change the appearance of elements based on user interaction or status -> Option A
      4. Quick Check:

        State classes change look on interaction [OK]
      Hint: State classes show style changes on user actions [OK]
      Common Mistakes:
      • Thinking state classes create new elements
      • Confusing state classes with animations
      • Believing state classes load files
      2. Which of the following is the correct Sass syntax to create a mixin for hover and active states?
      easy
      A. @mixin states { :hover { color: blue; } :active { color: red; } }
      B. @mixin states { &:hover { color: blue; } &:active { color: red; } }
      C. @mixin states { .hover { color: blue; } .active { color: red; } }
      D. @mixin states { hover { color: blue; } active { color: red; } }

      Solution

      1. Step 1: Review Sass mixin syntax

        Mixins use @mixin name { ... } and nested selectors use &:state for pseudo-classes.
      2. Step 2: Check correct pseudo-class usage

        Correct syntax uses &:hover and &:active inside the mixin.
      3. Final Answer:

        @mixin states { &:hover { color: blue; } &:active { color: red; } } -> Option B
      4. Quick Check:

        Use & with :hover and :active in mixins [OK]
      Hint: Use & before pseudo-classes inside mixins [OK]
      Common Mistakes:
      • Omitting & before pseudo-classes
      • Using class selectors instead of pseudo-classes
      • Missing @mixin keyword
      3. Given this Sass code, what color will the button text be when hovered?
      @mixin states {
        &:hover { color: green; }
        &:active { color: orange; }
        &.disabled { color: gray; cursor: not-allowed; }
      }
      
      .button {
        color: black;
        @include states;
      }
      medium
      A. Green
      B. Black
      C. Orange
      D. Gray

      Solution

      1. Step 1: Understand the mixin states

        The mixin sets color: green on :hover, color: orange on :active, and gray with disabled class.
      2. Step 2: Check the hover state

        When the button is hovered, the :hover style applies, changing text color to green.
      3. Final Answer:

        Green -> Option A
      4. Quick Check:

        Hover changes color to green [OK]
      Hint: Hover state color overrides base color [OK]
      Common Mistakes:
      • Confusing active color with hover color
      • Ignoring the disabled class
      • Assuming base color stays on hover
      4. Identify the error in this Sass code that tries to create disabled state styles:
      @mixin states {
        &:hover { color: blue; }
        &:active { color: red; }
        &:disabled { color: gray; cursor: not-allowed; }
      }
      
      .button {
        @include states;
      }
      medium
      A. Cannot use mixins inside class selectors
      B. Missing semicolon after color: red
      C. Using &:disabled instead of &.disabled for disabled class
      D. Mixin name should be capitalized

      Solution

      1. Step 1: Check pseudo-class vs class usage

        :disabled is a pseudo-class for form elements, but here disabled is a class, so &.disabled is correct.
      2. Step 2: Verify other syntax

        Semicolons are present, mixin naming is flexible, and mixins can be used inside classes.
      3. Final Answer:

        Using &:disabled instead of &.disabled for disabled class -> Option C
      4. Quick Check:

        Use .disabled class selector, not :disabled pseudo-class [OK]
      Hint: Use .disabled class, not :disabled pseudo-class [OK]
      Common Mistakes:
      • Confusing :disabled pseudo-class with .disabled class
      • Forgetting semicolons
      • Thinking mixins need capital letters
      5. You want to create a reusable Sass mixin that adds hover, active, and disabled states to any button. The disabled state should make the button look faded and prevent clicks. Which of these mixins correctly implements this behavior?
      hard
      A. @mixin button-states { &:hover { background-color: lightblue; } &:active { background-color: blue; } &.disabled { opacity: 1; pointer-events: auto; cursor: not-allowed; } }
      B. @mixin button-states { &:hover { background-color: lightblue; } &:active { background-color: blue; } &:disabled { opacity: 0.5; pointer-events: none; cursor: not-allowed; } }
      C. @mixin button-states { &:hover { background-color: lightblue; } &:active { background-color: blue; } &.disabled { opacity: 0.5; cursor: default; } }
      D. @mixin button-states { &:hover { background-color: lightblue; } &:active { background-color: blue; } &.disabled { opacity: 0.5; pointer-events: none; cursor: not-allowed; } }

      Solution

      1. Step 1: Check disabled state styling

        The disabled state should fade the button with opacity: 0.5 and prevent clicks using pointer-events: none.
      2. Step 2: Verify cursor and selector usage

        Using &.disabled is correct for a class. Cursor should be not-allowed to show disabled status.
      3. Step 3: Compare options

        @mixin button-states { &:hover { background-color: lightblue; } &:active { background-color: blue; } &.disabled { opacity: 0.5; pointer-events: none; cursor: not-allowed; } } correctly uses &.disabled, sets opacity to 0.5, disables pointer events, and sets cursor properly.
      4. Final Answer:

        @mixin button-states { &:hover { background-color: lightblue; } &:active { background-color: blue; } &.disabled { opacity: 0.5; pointer-events: none; cursor: not-allowed; } } -> Option D
      5. Quick Check:

        Disabled state fades and disables clicks with pointer-events none [OK]
      Hint: Use pointer-events:none and opacity for disabled state [OK]
      Common Mistakes:
      • Using :disabled pseudo-class instead of .disabled class
      • Not disabling pointer events on disabled
      • Setting opacity to 1 in disabled state