Fluid spacing helps your website look good on all screen sizes by adjusting space smoothly. Calculations let you create these spaces easily and consistently.
Fluid spacing with calculations in SASS
$space: calc(min + (max - min) * ((100vw - minViewport) / (maxViewport - minViewport)));
calc() lets you do math inside CSS or Sass.
Use vw units for viewport width to make spacing fluid.
$spacing: calc(1rem + (2rem - 1rem) * ((100vw - 320px) / (1280px - 320px)));
$padding: calc(0.5rem + (1.5rem - 0.5rem) * ((100vw - 400px) / (1200px - 400px)));
$margin: calc(2rem + (4rem - 2rem) * ((100vw - 600px) / (1600px - 600px)));
This code creates a container with padding that grows fluidly from 1rem to 3rem as the screen width changes from 320px to 1280px. The background and border help you see the container's size change.
@use 'sass:math'; $min-space: 1rem; $max-space: 3rem; $min-vw: 320px; $max-vw: 1280px; $fluid-space: calc(#{$min-space} + (#{$max-space} - #{$min-space}) * ((100vw - #{$min-vw}) / (#{$max-vw} - #{$min-vw}))); .container { padding: $fluid-space; background-color: #e0f7fa; border: 1px solid #00796b; max-width: 800px; margin: 2rem auto; font-family: Arial, sans-serif; } .container p { margin: 0; font-size: 1rem; color: #004d40; }
Remember to use calc() with interpolation #{} in Sass to combine variables and math.
Fluid spacing works best between two viewport widths; outside that range, spacing stays at min or max.
Test your design by resizing the browser to see the smooth spacing changes.
Fluid spacing adjusts space smoothly between screen sizes using calculations.
Use calc() with viewport units and Sass variables for easy control.
This technique reduces the need for many media queries and keeps designs balanced.
Practice
Solution
Step 1: Understand fluid spacing concept
Fluid spacing means spacing changes smoothly as screen size changes, not fixed values.Step 2: Compare options to concept
Only It allows spacing to adjust smoothly between different screen sizes. describes smooth adjustment between screen sizes, matching fluid spacing benefits.Final Answer:
It allows spacing to adjust smoothly between different screen sizes. -> Option DQuick Check:
Fluid spacing = smooth adjustment [OK]
- Thinking fluid spacing fixes size to one value
- Confusing fluid spacing with disabling responsiveness
- Assuming fluid spacing removes CSS variables
calc() for fluid spacing?Solution
Step 1: Identify correct calc() syntax
calc() requires an expression inside parentheses combining units properly, e.g., 1rem + 2vw.Step 2: Check each option
$space: calc(1rem + 2vw); uses calc() with rem and vw units added correctly. $space: calc(1rem + 2px); mixes rem and px but is valid CSS, but px is fixed, not fluid. $space: 1rem + 2vw; misses calc() function. $space: calc(1rem * 2vw); multiplies incompatible units, which is invalid.Final Answer:
$space: calc(1rem + 2vw); -> Option CQuick Check:
Correct calc() syntax = $space: calc(1rem + 2vw); [OK]
- Omitting calc() function
- Using multiplication between incompatible units
- Mixing fixed px with fluid vw without calc()
$min-space: 1rem;
$max-space: 3rem;
$min-vw: 320;
$max-vw: 1280;
.space {
padding: calc(#{$min-space} + (#{$max-space} - #{$min-space}) * ((100vw - #{$min-vw}px) / (#{$max-vw} - #{$min-vw})));
}What will be the padding value on a 800px wide screen?
Solution
Step 1: Calculate the fraction of viewport width
Fraction = (800 - 320) / (1280 - 320) = 480 / 960 = 0.5Step 2: Calculate padding using formula
Padding = 1rem + (3rem - 1rem) * 0.5 = 1rem + 2rem * 0.5 = 1rem + 1rem = 2remFinal Answer:
2rem -> Option BQuick Check:
Midpoint viewport = midpoint padding = 2rem [OK]
- Forgetting to subtract min viewport width
- Mixing up min and max values
- Not converting units properly
$min: 1rem;
$max: 3rem;
.container {
margin: calc($min + $max - $min) * 100vw;
}Solution
Step 1: Analyze calc() usage
calc() must contain the full expression inside parentheses. Multiplying outside calc() is invalid CSS.Step 2: Check multiplication placement
Multiplying by 100vw outside calc() causes syntax error. Multiplication should be inside calc() with variables interpolated.Final Answer:
Incorrect use of multiplication outside calc(). -> Option AQuick Check:
Multiplication must be inside calc() [OK]
- Placing math operations outside calc()
- Not interpolating Sass variables inside calc()
- Confusing units in calculations
Solution
Step 1: Check units consistency in denominator
Both 1200 and 400 must have units (px) to avoid invalid CSS math.Step 2: Verify numerator units and subtraction
Subtract 400px from 100vw (viewport width) correctly with units on 400px.Step 3: Confirm full formula correctness
margin: calc(#{$min} + (#{$max} - #{$min}) * ((100vw - 400px) / (1200px - 400px))); uses consistent units and correct formula for fluid margin between 400px and 1200px.Final Answer:
margin: calc(#{$min} + (#{$max} - #{$min}) * ((100vw - 400px) / (1200px - 400px))); -> Option AQuick Check:
Units must match in calc() fractions [OK]
- Omitting units on numbers in calc()
- Mixing unitless numbers with units
- Incorrect denominator causing invalid CSS
Ready to prove it?
Pass the test and this pattern moves unknown
