Typography scale helps keep font sizes consistent and balanced across a website. It makes text look nice and easy to read.
Typography scale generation in SASS
Start learning this pattern below
Jump into concepts and practice - no test required
@function typography-scale($step, $base-size: 1rem, $ratio: 1.25) { @return $base-size * pow($ratio, $step); }
The $step is how many steps up or down the scale you want.
The $base-size is the starting font size, usually for body text.
@function typography-scale($step, $base-size: 1rem, $ratio: 1.25) { @return $base-size * pow($ratio, $step); } body { font-size: typography-scale(0); // 1rem } h1 { font-size: typography-scale(3); // bigger heading } h6 { font-size: typography-scale(-1); // smaller heading }
@function typography-scale($step, $base-size: 1rem, $ratio: 1.2) { @return $base-size * pow($ratio, $step); } p { font-size: typography-scale(0); // base size } small { font-size: typography-scale(-2); // smaller text }
@function typography-scale($step, $base-size: 16px, $ratio: 1.333) { @return $base-size * pow($ratio, $step); } h2 { font-size: typography-scale(2); // larger heading } caption { font-size: typography-scale(-3); // very small text }
This code creates a simple typography scale with body text, headings, and small text. The font sizes grow or shrink by steps using the scale function.
@function typography-scale($step, $base-size: 1rem, $ratio: 1.25) { @return $base-size * pow($ratio, $step); } body { font-family: Arial, sans-serif; font-size: typography-scale(0); line-height: 1.5; margin: 2rem; } h1 { font-size: typography-scale(4); margin-bottom: 1rem; } h2 { font-size: typography-scale(3); margin-bottom: 0.75rem; } p { font-size: typography-scale(0); margin-bottom: 1rem; } small { font-size: typography-scale(-2); color: #555; }
The pow() function in Sass calculates the power of the ratio to the step.
Using a ratio between 1.2 and 1.333 is common for readable scales.
Remember to use relative units like rem for better accessibility and responsiveness.
Typography scales help keep font sizes balanced and consistent.
You create scales by multiplying a base size by a ratio raised to a step number.
Sass functions make it easy to generate these sizes dynamically.
Practice
Solution
Step 1: Understand typography scale concept
A typography scale is used to keep font sizes balanced and consistent, avoiding random sizes.Step 2: Identify the correct purpose
Options A, C, and D describe unrelated tasks like randomness, colors, or animations, which are not the purpose of typography scales.Final Answer:
To keep font sizes balanced and consistent across a website -> Option DQuick Check:
Typography scale = balanced font sizes [OK]
- Thinking typography scales create random sizes
- Confusing typography scale with color or animation features
- Assuming typography scales are for layout spacing
Solution
Step 1: Recall Sass math function syntax
Sass uses the math module for functions like pow(), so the correct syntax is math.pow($ratio, $step).Step 2: Check each option
font-size: $base * pow($ratio, $step); uses pow() without math module, which is invalid. font-size: $base * $ratio ^ $step; uses ^ which is not Sass syntax. font-size: $base * ($ratio ** $step); uses ** which is not Sass syntax for exponentiation. font-size: $base * math.pow($ratio, $step); correctly uses math.pow($ratio, $step).Final Answer:
font-size: $base * math.pow($ratio, $step); -> Option BQuick Check:
Sass math.pow() = correct syntax [OK]
- Using ^ for exponent instead of math.pow()
- Forgetting to use math module prefix
- Trying pow() without math module
$base: 1rem; $ratio: 1.25; $step: 3; $size: $base * math.pow($ratio, $step);
What is the computed value of
$size in rem units?Solution
Step 1: Calculate math.pow($ratio, $step)
1.25 raised to the power 3 = 1.25 * 1.25 * 1.25 = 1.953125.Step 2: Multiply by $base
$base is 1rem, so 1rem * 1.953125 = 1.953125rem.Step 3: Check options carefully
1.953125rem shows 1.953125rem which matches calculation, but 2.4414rem shows 2.4414rem which is 1.25^4, not ^3.Final Answer:
1.953125rem -> Option AQuick Check:
1rem * 1.25^3 = 1.953125rem [OK]
- Calculating power incorrectly (e.g., 1.25^4 instead of ^3)
- Multiplying base size by wrong power result
- Confusing rem units with pixels
@function scale($base, $ratio, $step) {
@return $base * pow($ratio, $step);
}Solution
Step 1: Check Sass math function usage
In Sass, pow() is inside the math module, so it must be called as math.pow().Step 2: Verify other syntax
Parameter names are fine, @return is correct Sass syntax, and function syntax is valid.Final Answer:
Missing math module prefix for pow function -> Option AQuick Check:
Use math.pow() not pow() alone [OK]
- Calling pow() without math prefix
- Confusing @return with return keyword
- Thinking function syntax is wrong
Solution
Step 1: Understand skipping step 0
Skipping step 0 means step 1 corresponds to power 0, so power = step - 1.Step 2: Apply formula for step 3
For step 3, power = 3 - 1 = 2, so size = 1rem * 2^2 = 4rem.Step 3: Check options
$base: 1rem; $ratio: 2; $step: 3; $size: $base * math.pow($ratio, $step - 1); uses $step - 1, correctly skipping step 0. $base: 1rem; $ratio: 2; $step: 3; $size: $base * math.pow($ratio, $step); uses $step directly, which would give 8rem for step 3. Options A and D are incorrect powers.Final Answer:
$base * math.pow($ratio, $step - 1); -> Option CQuick Check:
Skip step 0 by subtracting 1 from step [OK]
- Not adjusting step to skip zero
- Using step directly causing wrong size
- Confusing power calculation with addition
