Discover how a simple loop can save you hours of repetitive styling work!
Why @each loop over lists in SASS? - Purpose & Use Cases
Imagine you are styling a website with multiple buttons, each needing a different background color. You write CSS rules for each button color one by one, repeating similar code again and again.
If you want to add or change a color, you must find and update every single rule manually. This takes a lot of time and can cause mistakes or inconsistent styles.
The @each loop in Sass lets you list all your colors once and automatically create styles for each. You write less code and can easily add or remove colors without repeating yourself.
.btn-red { background: red; }
.btn-blue { background: blue; }
.btn-green { background: green; }@each $color in (red, blue, green) { .btn-#{$color} { background: $color; } }
You can quickly generate many similar styles from a list, making your CSS easier to maintain and update.
When building a theme with multiple color options, you can define all colors in a list and use @each to create button styles, link colors, or backgrounds automatically.
@each loops over a list of items to repeat code for each.
It saves time and reduces errors by avoiding repeated manual code.
It makes your styles flexible and easy to update.
Practice
@each loop do in Sass when used with a list?Solution
Step 1: Understand the purpose of
The@each@eachloop is designed to run a block of code for every item in a list.Step 2: Identify what happens with each item
For each item, it repeats the styles or code inside the loop, creating multiple style blocks.Final Answer:
It repeats a block of styles for each item in the list. -> Option AQuick Check:
@eachloops = repeat styles [OK]
@each repeats code for every list item [OK]- Thinking
@eachmodifies the list itself - Confusing
@eachwith list functions like map - Assuming it deletes or filters items
(red, green, blue) using @each in Sass?Solution
Step 1: Identify correct
The correct syntax uses@eachsyntax@each $variable in (list)to loop over items.Step 2: Check each option
@each $color in (red, green, blue) { color: $color; } uses@each $color in (red, green, blue)which is correct. Options A, B, and D use wrong keywords or miss the $ sign.Final Answer:
@each $color in (red, green, blue) { color: $color; } -> Option AQuick Check:
Use@each $var in (list)syntax [OK]
- Omitting the $ before the variable
- Using wrong keywords like 'from' or 'on'
- Not wrapping list in parentheses
@each $size in (small, medium, large) {
.btn-#{$size} {
font-size: if($size == small, 1rem, if($size == medium, 1.5rem, 2rem));
}
}Solution
Step 1: Understand the loop and interpolation
The loop runs over sizes: small, medium, large. The class name uses interpolation to create .btn-small, .btn-medium, .btn-large.Step 2: Evaluate the font-size condition
Using nestedif: small -> 1rem, medium -> 1.5rem, large -> 2rem.Final Answer:
.btn-small { font-size: 1rem; } .btn-medium { font-size: 1.5rem; } .btn-large { font-size: 2rem; } -> Option CQuick Check:
Loop + interpolation + if = correct CSS [OK]
- Mixing up font-size values
- Thinking nested if causes syntax error
- Ignoring interpolation in class names
@each loop:@each $color (red, green, blue) {
.text-#{$color} {
color: $color;
}
}Solution
Step 1: Check the
The correct syntax requires the keyword@eachloop syntaxinbetween the variable and the list.Step 2: Identify the missing keyword
The code missesinafter$color, causing a syntax error.Final Answer:
Missing 'in' keyword after $color in the loop. -> Option DQuick Check:
@each $var in (list)needs 'in' [OK]
- Forgetting the 'in' keyword
- Removing $ from variable names
- Misusing interpolation syntax
(10px, 20px, 0, 30px), how can you use @each to create margin classes but skip the zero value?Solution
Step 1: Loop over all margin values
The@eachloop goes through each value including zero.Step 2: Use
Inside the loop, add@ifto skip zero@if $m != 0to only create classes for non-zero margins.Final Answer:
@each $m in (10px, 20px, 0, 30px) { @if $m != 0 { .m-#{$m} { margin: $m; } } } -> Option BQuick Check:
Use@ifinside@eachto filter items [OK]
- Not filtering zero, so unwanted class is created
- Using wrong condition like == 0 instead of != 0
- Trying to filter outside the loop
Ready to prove it?
Pass the test and this pattern moves unknown
