Bird
Raised Fist0
SASSmarkup~10 mins

Spacing scale generation in SASS - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a base spacing variable in Sass.

SASS
$base-spacing: [1];
Drag options to blanks, or click blank then click option'
A1rem
B10px
C5em
D100%
Attempts:
3 left
💡 Hint
Common Mistakes
Using absolute units like px which don't scale well.
Using percentage which is not typical for spacing base.
2fill in blank
medium

Complete the code to create a Sass map for spacing scale with key 'small'.

SASS
$spacing-scale: (small: [1]);
Drag options to blanks, or click blank then click option'
A0.5rem
B2rem
C10px
D5em
Attempts:
3 left
💡 Hint
Common Mistakes
Using larger values for 'small' spacing.
Mixing units inconsistently.
3fill in blank
hard

Fix the error in the Sass function that returns spacing by key.

SASS
@function get-spacing($key) {
  @return map-get($spacing-scale, [1]);
}
Drag options to blanks, or click blank then click option'
Akey
B$key
C'key'
D"key"
Attempts:
3 left
💡 Hint
Common Mistakes
Using quotes around the variable name, making it a string literal.
Omitting the dollar sign for the variable.
4fill in blank
hard

Fill both blanks to generate a spacing scale map with keys 'small' and 'medium'.

SASS
$spacing-scale: (small: [1], medium: [2]);
Drag options to blanks, or click blank then click option'
A0.5rem
B1rem
C2rem
D5rem
Attempts:
3 left
💡 Hint
Common Mistakes
Using the same value for both keys.
Using inconsistent units.
5fill in blank
hard

Fill all three blanks to create a Sass map with keys 'small', 'medium', and 'large' using a spacing scale.

SASS
$spacing-scale: (small: [1], medium: [2], large: [3]);
Drag options to blanks, or click blank then click option'
A0.25rem
B1rem
C2rem
D4rem
Attempts:
3 left
💡 Hint
Common Mistakes
Using values that do not increase logically.
Mixing units or inconsistent spacing.

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