The @while loop helps you repeat a set of styles as long as a condition is true. It saves time and keeps your code neat.
@while loop usage in SASS
Introduction
Syntax
SASS
@while <condition> {
// styles or code here
// update condition variable
}The @while loop runs as long as the condition is true.
Make sure to update the variable inside the loop to avoid infinite loops.
Examples
SASS
$i: 1; @while $i <= 3 { .box-#{$i} { width: 100px * $i; height: 100px; background: blue; } $i: $i + 1; }
SASS
$count: 5; @while $count > 0 { .item-#{$count} { margin-bottom: 10px * $count; } $count: $count - 1; }
Sample Program
This SASS code creates four circle classes with increasing sizes. Each circle will be bigger than the last.
SASS
@charset "UTF-8"; $i: 1; @while $i <= 4 { .circle-#{$i} { width: 2rem * $i; height: 2rem * $i; background-color: teal; border-radius: 50%; margin: 0.5rem; display: inline-block; } $i: $i + 1; }
Important Notes
Always update the loop variable inside the @while block to prevent infinite loops.
You can use @while loops to generate repetitive styles dynamically, which keeps your CSS smaller and easier to maintain.
Summary
@while loops repeat styles while a condition is true.
They help avoid writing the same code many times.
Remember to change the loop variable inside the loop to stop it eventually.
Practice
1. What does the
@while loop do in Sass?easy
Solution
Step 1: Understand the purpose of
The@whileloop@whileloop repeats code as long as a condition remains true.Step 2: Compare options with the loop behavior
Only Repeats styles while a condition is true correctly describes repeating styles while a condition is true.Final Answer:
Repeats styles while a condition is true -> Option DQuick Check:
@whileloops repeat while true [OK]
Hint: Remember:
@while repeats until condition is false [OK]Common Mistakes:
- Thinking it runs only once
- Confusing with static style blocks
- Believing it stops styles immediately
2. Which of the following is the correct syntax for a
@while loop in Sass?easy
Solution
Step 1: Check the correct
The correct syntax uses@whilesyntax@while condition { ... }without parentheses or semicolons.Step 2: Identify the option matching this syntax
@while $i < 5 { .box-#{$i} { width: 10px * $i; } } uses@while $i < 5 { ... }which is correct Sass syntax.Final Answer:
@while $i < 5 { .box-#{$i} { width: 10px * $i; } } -> Option AQuick Check:
Correct@whilesyntax uses braces, no parentheses [OK]
Hint: Use braces {} after
@while, no parentheses needed [OK]Common Mistakes:
- Adding parentheses around condition
- Using semicolons after condition
- Missing braces for loop body
3. What will be the output CSS of this Sass code?
$i: 1;
@while $i <= 3 {
.item-#{$i} {
width: 10px * $i;
}
$i: $i + 1;
}medium
Solution
Step 1: Understand the loop iterations
The loop runs while $i is 1, 2, and 3, incrementing $i each time.Step 2: Calculate the width for each iteration
Widths are 10px * 1 = 10px, 10px * 2 = 20px, 10px * 3 = 30px, generating three classes.Final Answer:
.item-1 { width: 10px; } .item-2 { width: 20px; } .item-3 { width: 30px; } -> Option CQuick Check:
Loop runs 3 times, width multiplies by $i [OK]
Hint: Check loop count and multiply values carefully [OK]
Common Mistakes:
- Forgetting to increment $i
- Confusing units in multiplication
- Assuming syntax error without checking
4. Identify the error in this Sass
@while loop:$i: 1;
@while $i < 4 {
.box-#{$i} {
height: 20px * $i;
}
}medium
Solution
Step 1: Check loop variable update
The variable $i is never increased inside the loop, causing an infinite loop.Step 2: Confirm other syntax parts
Loop condition and braces are correct; multiplication with units is valid in Sass.Final Answer:
Missing increment of $i inside the loop -> Option AQuick Check:
Loop variable must change to stop loop [OK]
Hint: Always update loop variable inside
@while [OK]Common Mistakes:
- Forgetting to increment loop variable
- Assuming syntax error instead of logic error
- Confusing multiplication units
5. You want to create 4 button styles with increasing padding using
@while. Which code correctly achieves this?$count: 1;
@while $count <= 4 {
.btn-#{$count} {
padding: 5px * $count;
}
$count: $count + 1;
}hard
Solution
Step 1: Analyze loop condition and increment
The loop runs while $count is 1 to 4, incrementing $count each time.Step 2: Check padding calculation and class names
Each button gets padding 5px times $count, producing 5px, 10px, 15px, and 20px for .btn-1 to .btn-4.Final Answer:
Correctly creates .btn-1 to .btn-4 with padding 5px, 10px, 15px, 20px -> Option BQuick Check:
Loop with increment and multiplication works as expected [OK]
Hint: Increment loop variable and multiply padding inside loop [OK]
Common Mistakes:
- Not incrementing loop variable
- Using parentheses incorrectly in Sass
@while - Forgetting to multiply padding by loop variable
Recommended
Ready to prove it?
Pass the test and this pattern moves unknown
10 questions ~5 mineasy hard
