Bird
Raised Fist0
SASSmarkup~10 mins

@if conditional logic in SASS - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to apply red color only if $is-error is true.

SASS
$is-error: true;

.error-message {
  @if [1] {
    color: red;
  }
}
Drag options to blanks, or click blank then click option'
A$is-error
B$error
Cis-error
Derror
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting the $ sign before the variable name.
Using a variable name that is not defined.
2fill in blank
medium

Complete the code to set background to green if $status equals 'success'.

SASS
$status: 'success';

.status {
  @if $status [1] 'success' {
    background: green;
  }
}
Drag options to blanks, or click blank then click option'
A===
B=
C==
D!=
Attempts:
3 left
💡 Hint
Common Mistakes
Using = instead of == for comparison.
Using !== or === which are JavaScript operators, not Sass.
3fill in blank
hard

Fix the error in the code to check if $width is greater than 100px.

SASS
$width: 120px;

.container {
  @if $width [1] 100px {
    width: $width;
  }
}
Drag options to blanks, or click blank then click option'
A=>
B>
C<
D==
Attempts:
3 left
💡 Hint
Common Mistakes
Using => instead of >.
Using == which checks equality, not greater than.
4fill in blank
hard

Fill both blanks to set font-size to 2rem if $large-text is true and $screen-width is at least 600px.

SASS
$large-text: true;
$screen-width: 700px;

.text {
  @if [1] and [2] {
    font-size: 2rem;
  }
}
Drag options to blanks, or click blank then click option'
A$large-text
B$screen-width >= 600px
C$screen-width > 600px
D$large-text == false
Attempts:
3 left
💡 Hint
Common Mistakes
Using > instead of >= which excludes 600px exactly.
Using $large-text == false which is the opposite condition.
5fill in blank
hard

Fill all three blanks to create a conditional that sets margin to 1rem if $is-mobile is true, $orientation is 'portrait', and $width is less than 500px.

SASS
$is-mobile: true;
$orientation: 'portrait';
$width: 480px;

.container {
  @if [1] and [2] and [3] {
    margin: 1rem;
  }
}
Drag options to blanks, or click blank then click option'
A$is-mobile
B$orientation == 'portrait'
C$width < 500px
D$width > 500px
Attempts:
3 left
💡 Hint
Common Mistakes
Using > instead of < for $width comparison.
Forgetting to compare $orientation to 'portrait'.

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