Offset classes help move elements to the right by adding space on the left. This makes layouts cleaner and easier to manage.
Offset class generation in SASS
@for $i from 1 through $max-columns { .offset-#{$i} { margin-left: percentage($i / $max-columns); } }
This uses a loop to create multiple offset classes automatically.
The percentage() function converts the fraction to a percent value for CSS.
.offset-1 to .offset-12 for a 12-column grid.$max-columns: 12; @for $i from 1 through $max-columns { .offset-#{$i} { margin-left: percentage($i / $max-columns); } }
$max-columns: 4; @for $i from 1 through $max-columns { .offset-#{$i} { margin-left: percentage($i / $max-columns); } }
This example shows three boxes. The second and third boxes are pushed right by 25% and 50% respectively, using offset classes generated by Sass.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Offset Class Example</title> <style lang="scss"> $max-columns: 12; @for $i from 1 through $max-columns { .offset-#{$i} { margin-left: percentage($i / $max-columns); } } .box { width: 20%; background-color: #4caf50; color: white; padding: 1rem; margin-bottom: 1rem; } </style> </head> <body> <div class="box">No offset</div> <div class="box offset-3">Offset 3 columns</div> <div class="box offset-6">Offset 6 columns</div> </body> </html>
Offset classes add space on the left side using margin-left.
Make sure the container is wide enough to see the offset effect clearly.
Using Sass loops saves time and avoids writing many similar classes manually.
Offset classes move elements right by adding left margin.
Sass loops can generate many offset classes quickly.
Offsets help create clean, flexible layouts without extra HTML.
Practice
Solution
Step 1: Understand offset class function
Offset classes add left margin to elements, shifting them right.Step 2: Compare options with offset purpose
Only To move elements to the right by adding left margin describes moving elements right by left margin.Final Answer:
To move elements to the right by adding left margin -> Option DQuick Check:
Offset classes = move right by left margin [OK]
- Confusing offset with color or font changes
- Thinking offset hides elements
- Assuming offset changes element width
Solution
Step 1: Check loop syntax for generating classes
@for $i from 1 through 4 correctly loops 1 to 4 inclusive.Step 2: Verify property and unit usage
margin-left with $i * 1rem is correct; padding-left or margin-right are incorrect for offset.Final Answer:
@for $i from 1 through 4 { .offset-#{$i} { margin-left: $i * 1rem; } } -> Option BQuick Check:
Use @for with margin-left and rem units [OK]
- Using padding instead of margin
- Using margin-right instead of margin-left
- Incorrect loop range syntax
- Missing multiplication operator for units
@for $i from 1 through 3 {
.offset-#{$i} {
margin-left: $i * 2rem;
}
}What CSS is generated for
.offset-2?Solution
Step 1: Calculate margin-left for $i = 2
Margin-left = 2 * 2rem = 4rem.Step 2: Match calculation to options
Only .offset-2 { margin-left: 4rem; } matches margin-left: 4rem for .offset-2.Final Answer:
.offset-2 { margin-left: 4rem; } -> Option CQuick Check:
2 * 2rem = 4rem [OK]
- Using $i instead of $i * 2rem
- Confusing rem values
- Mixing margin-left with margin-right
@for $i from 1 to 4 {
.offset-#{$i} {
margin-left: $i rem;
}
}Solution
Step 1: Check unit usage in margin-left
In Sass, units must be multiplied, so '$i rem' is invalid; should be '$i * 1rem'.Step 2: Verify loop syntax and property
'to' is valid but excludes 4; margin-left is correct property for offset.Final Answer:
Missing multiplication operator between $i and rem -> Option AQuick Check:
Use $i * 1rem, not '$i rem' [OK]
- Writing '$i rem' without *
- Confusing 'to' and 'through' in loops
- Using padding-left instead of margin-left
Solution
Step 1: Calculate number of steps for 0.5 to 3rem
From 0.5 to 3 in 0.5 steps is 6 steps (0.5*1 to 0.5*6).Step 2: Check loop and multiplication correctness
@for $i from 1 through 6 with margin-left: $i * 0.5rem correctly generates 0.5rem to 3rem increments.Final Answer:
@for $i from 1 through 6 { .offset-#{$i} { margin-left: $i * 0.5rem; } } -> Option AQuick Check:
Use integer loop with 0.5rem multiplier [OK]
- Trying to loop with decimal steps (not supported in @for)
- Using incorrect unit multiplication
- Forgetting to initialize $i in @while loops
Ready to prove it?
Pass the test and this pattern moves unknown
