Bird
Raised Fist0
SASSmarkup~5 mins

@if conditional logic in SASS

Choose your learning style10 modes available
Introduction

The @if directive lets you choose styles based on conditions. It helps you write flexible CSS that changes depending on your rules.

You want to apply different colors based on a variable value.
You need to change layout styles depending on screen size or theme.
You want to avoid repeating code by choosing styles conditionally.
You want to create reusable style blocks that adapt to inputs.
Syntax
SASS
@if <condition> {
  // styles here
} @else if <condition> {
  // other styles
} @else {
  // fallback styles
}
Conditions use simple expressions like $var == value or $var > 10.
You can chain multiple @else if for several choices.
Examples
Sets background white if theme is light, else black.
SASS
$theme: light;

@if $theme == light {
  body {
    background: white;
  }
} @else {
  body {
    background: black;
  }
}
Chooses box width based on size variable.
SASS
$size: 15;

@if $size > 20 {
  .box {
    width: 200px;
  }
} @else if $size > 10 {
  .box {
    width: 150px;
  }
} @else {
  .box {
    width: 100px;
  }
}
Sample Program

This code sets the page background and text color based on the $mode variable. If $mode is dark, background is black and text is white. If light, background is white and text is black. Otherwise, it uses gray background.

SASS
@use 'sass:color';

$mode: dark;

body {
  @if $mode == light {
    background-color: white;
    color: black;
  } @else if $mode == dark {
    background-color: black;
    color: white;
  } @else {
    background-color: gray;
    color: black;
  }
  font-family: Arial, sans-serif;
  padding: 2rem;
}
OutputSuccess
Important Notes

Use @if to keep your styles clean and avoid repeating similar code.

Remember to test your conditions carefully to avoid unexpected styles.

Summary

@if lets you write styles that change based on conditions.

You can use @else if and @else for multiple choices.

This helps make your CSS flexible and easier to maintain.

Practice

(1/5)
1. What does the @if directive do in Sass?
easy
A. It defines a variable.
B. It loops through a list of items.
C. It imports other Sass files.
D. It applies styles only if a condition is true.

Solution

  1. Step 1: Understand the purpose of @if

    The @if directive checks a condition and applies styles only when that condition is true.
  2. Step 2: Compare with other options

    Looping is done with @for or @each, importing with @import, and variables are defined with $.
  3. Final Answer:

    It applies styles only if a condition is true. -> Option D
  4. Quick Check:

    @if = conditional style application [OK]
Hint: Remember: @if controls styles by conditions [OK]
Common Mistakes:
  • Confusing @if with loops or imports
  • Thinking @if defines variables
  • Assuming @if always runs styles
2. Which of the following is the correct syntax for using @if in Sass?
easy
A. @if $color == red { color: red; }
B. @if ($color = red) { color: red; }
C. @if $color === red { color: red; }
D. @if $color => red { color: red; }

Solution

  1. Step 1: Check the correct comparison operator

    Sass uses == to compare values in @if conditions, not =, ===, or =>.
  2. Step 2: Verify syntax structure

    The correct syntax is @if $variable == value { ... } without parentheses around the condition.
  3. Final Answer:

    @if $color == red { color: red; } -> Option A
  4. Quick Check:

    Use == for comparison in @if [OK]
Hint: Use double equals (==) for conditions in @if [OK]
Common Mistakes:
  • Using single equals (=) instead of double (==)
  • Adding parentheses around condition
  • Using JavaScript style === or =>
3. What will be the output CSS of this Sass code?
$theme: dark;

body {
  @if $theme == light {
    background: white;
    color: black;
  } @else if $theme == dark {
    background: black;
    color: white;
  } @else {
    background: gray;
    color: black;
  }
}
medium
A. body { background: black; color: white; }
B. body { background: white; color: black; }
C. body { background: gray; color: black; }
D. No output due to syntax error

Solution

  1. Step 1: Check the value of $theme

    The variable $theme is set to dark.
  2. Step 2: Evaluate the @if conditions

    The first condition $theme == light is false, so it skips to @else if $theme == dark, which is true. So it applies background: black; and color: white;.
  3. Final Answer:

    body { background: black; color: white; } -> Option A
  4. Quick Check:

    $theme = dark triggers @else if dark block [OK]
Hint: Match variable value to @if conditions carefully [OK]
Common Mistakes:
  • Choosing first @if block without checking variable
  • Ignoring @else if and @else blocks
  • Assuming syntax error without checking carefully
4. Identify the error in this Sass code:
$size: 10px;

.box {
  @if $size > 5 {
    width: $size;
  } @else if $size < 5 {
    width: 5px;
  }
}
medium
A. Missing @else block for equal size case.
B. Units like px cannot be compared directly in @if.
C. Comparison operators like > and < are not allowed in @if.
D. Variable $size should be declared inside the block.

Solution

  1. Step 1: Understand unit comparison in Sass

    Sass does not allow direct comparison of values with units like 10px > 5 in @if conditions.
  2. Step 2: Check other options

    Comparison operators are allowed, @else block is optional, and variables can be declared outside blocks.
  3. Final Answer:

    Units like px cannot be compared directly in @if. -> Option B
  4. Quick Check:

    Cannot compare px units directly in @if [OK]
Hint: Avoid comparing units directly; use numbers or functions [OK]
Common Mistakes:
  • Thinking > and < are invalid operators
  • Assuming @else is mandatory
  • Declaring variables only inside blocks
5. You want to set a button's background color based on a variable $status that can be 'success', 'warning', or 'error'. Which Sass code correctly uses @if conditional logic to apply green for success, yellow for warning, and red for error, with a default gray if none match?
hard
A. @if $status = success { background: green; } @else if $status == warning { background: yellow; } @else if $status == error { background: red; } @else { background: gray; }
B. @if $status = 'success' { background: green; } @else if $status = 'warning' { background: yellow; } @else if $status = 'error' { background: red; } @else { background: gray; }
C. @if $status == 'success' { background: green; } @else if $status == 'warning' { background: yellow; } @else if $status == 'error' { background: red; } @else { background: gray; }
D. @if $status === 'success' { background: green; } @else if $status === 'warning' { background: yellow; } @else if $status === 'error' { background: red; } @else { background: gray; }

Solution

  1. Step 1: Check string comparison syntax

    In Sass, string values must be quoted and compared with ==, not = or ===.
  2. Step 2: Verify the use of quotes around strings

    Options A and B miss quotes or use wrong operators; @if $status === 'success' { background: green; } @else if $status === 'warning' { background: yellow; } @else if $status === 'error' { background: red; } @else { background: gray; } uses === which is invalid in Sass.
  3. Final Answer:

    @if $status == 'success' { background: green; } @else if $status == 'warning' { background: yellow; } @else if $status == 'error' { background: red; } @else { background: gray; } -> Option C
  4. Quick Check:

    Use == and quotes for string comparison in @if [OK]
Hint: Compare strings with == and quotes in @if [OK]
Common Mistakes:
  • Using single equals (=) instead of double (==)
  • Omitting quotes around strings
  • Using JavaScript style === operator
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