Bird
Raised Fist0
SASSmarkup~5 mins

Spacing scale generation in SASS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a spacing scale in CSS or Sass?
A spacing scale is a set of predefined space values (like margins or paddings) that help keep consistent spacing throughout a website.
Click to reveal answer
beginner
Why use a spacing scale instead of random values?
Using a spacing scale keeps design consistent, makes code easier to maintain, and helps create a balanced layout.
Click to reveal answer
intermediate
How can you generate a spacing scale in Sass?
You can use Sass loops and lists to create a list of spacing values, then use those values throughout your styles.
Click to reveal answer
intermediate
Example: What does this Sass code do? $spacing-scale: (0, 0.25rem, 0.5rem, 1rem, 2rem); @mixin space($index) { margin: nth($spacing-scale, $index); }
It defines a list of spacing sizes and a mixin that applies margin using the spacing value at the given position in the list.
Click to reveal answer
beginner
What is the benefit of using rem units in spacing scales?
Rem units scale with the root font size, making spacing responsive and accessible across different devices and user settings.
Click to reveal answer
What is the main purpose of a spacing scale in Sass?
ATo keep spacing consistent across a website
BTo create random spacing values
CTo increase font size automatically
DTo change colors dynamically
Which Sass feature helps generate spacing scales efficiently?
AFunctions only
BVariables only
CLoops and lists
DComments
Why are rem units preferred in spacing scales?
AThey scale with the root font size
BThey are fixed pixel values
CThey only work on mobile
DThey are deprecated
What does this Sass code do? $scale: (0, 1rem, 2rem); margin: nth($scale, 2);
AThrows an error
BSets margin to 2rem
CSets margin to 0
DSets margin to 1rem
Which is NOT a benefit of using a spacing scale?
AEasier maintenance
BRandom spacing values
CConsistent spacing
DBetter design balance
Explain how you would create a spacing scale in Sass and use it in your styles.
Think about storing values and accessing them by position.
You got /3 concepts.
    Why is using a spacing scale important for responsive and accessible web design?
    Consider how spacing affects layout and user settings.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of generating a spacing scale in Sass?
      easy
      A. To create consistent and reusable space sizes across a website
      B. To change font colors dynamically
      C. To add animations to elements
      D. To optimize image loading speed

      Solution

      1. Step 1: Understand spacing scale concept

        A spacing scale is a set of predefined space sizes used consistently in design.
      2. Step 2: Identify its purpose in Sass

        It helps keep spacing uniform and easy to manage by reusing values.
      3. Final Answer:

        To create consistent and reusable space sizes across a website -> Option A
      4. Quick Check:

        Spacing scale = consistent spacing [OK]
      Hint: Spacing scale means consistent space sizes reused [OK]
      Common Mistakes:
      • Confusing spacing scale with color or animation features
      • Thinking spacing scale changes fonts or images
      2. Which Sass syntax correctly defines a map for spacing scale with keys 1, 2, 3 and values 0.25rem, 0.5rem, 1rem?
      easy
      A. $spacing-scale = {1: 0.25rem, 2: 0.5rem, 3: 1rem};
      B. $spacing-scale: [1 => 0.25rem, 2 => 0.5rem, 3 => 1rem];
      C. $spacing-scale: (1: 0.25rem, 2: 0.5rem, 3: 1rem);
      D. $spacing-scale: (1 => 0.25rem, 2: 0.5rem, 3: 1rem);

      Solution

      1. Step 1: Recall Sass map syntax

        Sass maps use parentheses () with key: value pairs separated by commas.
      2. Step 2: Check each option

        $spacing-scale: (1: 0.25rem, 2: 0.5rem, 3: 1rem); uses correct syntax with colons and parentheses. Others use invalid symbols or brackets.
      3. Final Answer:

        $spacing-scale: (1: 0.25rem, 2: 0.5rem, 3: 1rem); -> Option C
      4. Quick Check:

        Sass map syntax = parentheses + colon [OK]
      Hint: Sass maps use (key: value) pairs inside parentheses [OK]
      Common Mistakes:
      • Using = instead of : for assignment
      • Using square brackets [] instead of parentheses ()
      • Using => instead of : for key-value pairs
      3. Given this Sass code:
      $spacing-scale: (1: 0.25rem, 2: 0.5rem, 3: 1rem);
      
      @mixin spacing($size) {
        margin: map-get($spacing-scale, $size);
      }
      
      .box {
        @include spacing(2);
      }

      What CSS will be generated for the .box class?
      medium
      A. .box { margin: 2rem; }
      B. .box { margin: 0.5rem; }
      C. .box { margin: 0.25rem; }
      D. .box { margin: 1rem; }

      Solution

      1. Step 1: Understand map-get usage

        map-get($spacing-scale, 2) returns the value for key 2, which is 0.5rem.
      2. Step 2: Apply mixin to .box

        The mixin sets margin to 0.5rem for .box.
      3. Final Answer:

        .box { margin: 0.5rem; } -> Option B
      4. Quick Check:

        map-get key 2 = 0.5rem [OK]
      Hint: map-get returns value for given key in Sass map [OK]
      Common Mistakes:
      • Confusing keys and values in map-get
      • Assuming mixin sets padding instead of margin
      • Mixing up rem values for keys
      4. Identify the error in this Sass code for generating spacing scale:
      @function generate-spacing($steps) {
        $scale: ();
        @for $i from 1 through $steps {
          $scale: map-merge($scale, $i: $i * 0.25rem);
        }
        @return $scale;
      }
      
      $spacing-scale: generate-spacing(3);
      medium
      A. Cannot multiply number by unit directly in map-merge key-value
      B. map-merge syntax is incorrect; keys must be strings
      C. The function does not initialize $scale as a map
      D. Using $i: $i * 0.25rem inside map-merge is invalid syntax

      Solution

      1. Step 1: Analyze map-merge usage

        map-merge expects a map and a map as arguments. The second argument must be a map with key-value pairs.
      2. Step 2: Check key-value pair syntax

        $i: $i * 0.25rem is invalid inside map-merge because $i: is not a valid map literal key syntax. It should be ($i: $i * 0.25rem) wrapped in parentheses.
      3. Final Answer:

        Using $i: $i * 0.25rem inside map-merge is invalid syntax -> Option D
      4. Quick Check:

        map-merge needs proper map syntax [OK]
      Hint: Wrap key-value pair in parentheses for map-merge [OK]
      Common Mistakes:
      • Forgetting parentheses around key-value pair in map-merge
      • Trying to multiply unitless number by unit incorrectly
      • Not initializing $scale as empty map ()
      5. You want to create a spacing scale in Sass that doubles each step starting from 0.25rem for 5 steps (0.25rem, 0.5rem, 1rem, 2rem, 4rem). Which function correctly generates this scale as a map with keys 1 to 5?
      hard
      A. @function generate-scale($steps) { $scale: (); $value: 0.25rem; @for $i from 1 through $steps { $scale: map-merge($scale, ($i: $value)); $value: $value * 2; } @return $scale; }
      B. @function generate-scale($steps) { $scale: (); @for $i from 1 through $steps { $scale: map-merge($scale, ($i: 0.25rem * $i)); } @return $scale; }
      C. @function generate-scale($steps) { $scale: (); $value: 0.25rem; @each $i in 1 2 3 4 5 { $scale: map-merge($scale, ($i: $value)); $value: $value + 0.25rem; } @return $scale; }
      D. @function generate-scale($steps) { $scale: (); $value: 0.25rem; @for $i from 1 through $steps { $scale: map-merge($scale, ($i: $value)); $value: $value + $value; } @return $scale; }

      Solution

      1. Step 1: Understand doubling logic

        The value starts at 0.25rem and doubles each step: multiply by 2 each loop.
      2. Step 2: Check each function

        @function generate-scale($steps) { $scale: (); $value: 0.25rem; @for $i from 1 through $steps { $scale: map-merge($scale, ($i: $value)); $value: $value * 2; } @return $scale; } correctly initializes $value, merges map with ($i: $value), then doubles $value by multiplying by 2.
      3. Step 3: Identify errors in others

        @function generate-scale($steps) { $scale: (); @for $i from 1 through $steps { $scale: map-merge($scale, ($i: 0.25rem * $i)); } @return $scale; } multiplies by $i (linear, not doubling). @function generate-scale($steps) { $scale: (); $value: 0.25rem; @each $i in 1 2 3 4 5 { $scale: map-merge($scale, ($i: $value)); $value: $value + 0.25rem; } @return $scale; } uses @each with addition (not doubling). @function generate-scale($steps) { $scale: (); $value: 0.25rem; @for $i from 1 through $steps { $scale: map-merge($scale, ($i: $value)); $value: $value + $value; } @return $scale; } adds $value to itself (works but less clear than multiply by 2).
      4. Final Answer:

        Option A function correctly generates doubling scale -> Option A
      5. Quick Check:

        Multiply by 2 each step = doubling scale [OK]
      Hint: Multiply value by 2 each loop to double spacing [OK]
      Common Mistakes:
      • Using addition instead of multiplication for doubling
      • Multiplying by loop index instead of doubling
      • Using @each instead of @for for numeric loops