Bird
Raised Fist0
CSSmarkup~20 mins

CSS calc usage - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
CSS Calc Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
📝 Syntax
intermediate
2:00remaining
What is the computed width of the box?
Given the CSS below, what will be the width of the .box element if the parent container is 400px wide?
CSS
.box {
  width: calc(100% - 50px);
}
A50px
B350px
C400px
Dcalc(100% - 50px) (not computed)
Attempts:
2 left
💡 Hint
Remember that 100% means the full width of the parent container.
layout
intermediate
2:00remaining
How does calc affect margin in this example?
If the CSS below is applied, what is the left margin of the .item element when the viewport width is 800px?
CSS
.item {
  margin-left: calc(10vw + 20px);
}
A20px
B80px
C100px
Dcalc(10vw + 20px) (not computed)
Attempts:
2 left
💡 Hint
1vw equals 1% of the viewport width.
🧠 Conceptual
advanced
2:00remaining
What error occurs with this calc usage?
Consider this CSS snippet. What error or problem will it cause in browsers?
CSS
.header {
  height: calc(50% - 20);
}
AHeight becomes 30% automatically
BNo error, height is 50% minus 20px
CRuntime error: Invalid calculation
DSyntaxError: Missing unit after number 20
Attempts:
2 left
💡 Hint
In calc, all numbers must have units unless they are zero.
selector
advanced
2:00remaining
Which option correctly uses calc with CSS variables?
Given the CSS variables below, which option correctly sets the width using calc?
CSS
:root {
  --sidebar-width: 250px;
  --gap: 20px;
}
.container {
  width: /* fill here */;
}
Acalc(var(--sidebar-width) + var(--gap))
Bcalc(--sidebar-width + --gap)
Ccalc(var(--sidebar-width + var(--gap)))
Dcalc(var(--sidebar-width) var(--gap))
Attempts:
2 left
💡 Hint
Use var() to access CSS variables inside calc and separate with operators.
accessibility
expert
2:00remaining
How does using calc improve accessibility in responsive design?

Which statement best explains how calc() helps create accessible layouts?

A<p>It allows combining relative and absolute units to adapt layout sizes, improving readability on different devices.</p>
B<p>It disables zooming to keep layout fixed.</p>
C<p>It automatically increases font size for screen readers.</p>
D<p>It hides content that does not fit the screen.</p>
Attempts:
2 left
💡 Hint
Think about how combining units helps with flexible layouts.

Practice

(1/5)
1. What does the CSS calc() function allow you to do?
easy
A. Add comments inside CSS files
B. Create animations with keyframes
C. Select elements based on their attributes
D. Perform mathematical calculations to combine different units in CSS values

Solution

  1. Step 1: Understand the purpose of calc()

    The calc() function is designed to perform math operations like addition, subtraction, multiplication, and division inside CSS property values.
  2. Step 2: Compare with other CSS features

    Other options like animations, selectors, and comments do not involve calculations or mixing units.
  3. Final Answer:

    Perform mathematical calculations to combine different units in CSS values -> Option D
  4. Quick Check:

    CSS calc() = math with units [OK]
Hint: Remember calc() is for math in CSS values [OK]
Common Mistakes:
  • Thinking calc() creates animations
  • Confusing calc() with selectors or comments
  • Using calc() without spaces around operators
2. Which of the following is the correct syntax for using calc() in CSS?
easy
A. width: calc(100% + 50px);
B. width: calc(100%+ 50px);
C. width: calc(100%+50px);
D. width: calc(100% +50px);

Solution

  1. Step 1: Check spacing rules in calc()

    CSS requires spaces around operators (+, -, *, /) inside calc() for correct parsing.
  2. Step 2: Identify the option with proper spaces

    width: calc(100% + 50px); has spaces on both sides of the plus sign, making it valid syntax.
  3. Final Answer:

    width: calc(100% + 50px); -> Option A
  4. Quick Check:

    Spaces around operators = correct syntax [OK]
Hint: Always add spaces around operators in calc() [OK]
Common Mistakes:
  • Omitting spaces around + or -
  • Using commas instead of spaces
  • Putting spaces inside unit values
3. What will be the computed width of this element if the viewport width is 800px?
div {
  width: calc(50% - 100px);
}
medium
A. 700px
B. 400px
C. 300px
D. 500px

Solution

  1. Step 1: Calculate 50% of viewport width

    50% of 800px is 400px.
  2. Step 2: Subtract 100px from 400px

    400px - 100px equals 300px.
  3. Final Answer:

    300px -> Option C
  4. Quick Check:

    50% of 800px minus 100px = 300px [OK]
Hint: Calculate percentages first, then add/subtract fixed units [OK]
Common Mistakes:
  • Subtracting before calculating percentage
  • Confusing 50% with 100px
  • Forgetting to convert percentage to pixels
4. Identify the error in this CSS snippet:
p {
  margin-left: calc(20px+10%);
}
medium
A. Missing units for 20 and 10
B. No spaces around the plus operator inside calc()
C. calc() cannot mix px and % units
D. margin-left property cannot use calc()

Solution

  1. Step 1: Check spacing around operators in calc()

    The plus sign (+) inside calc() must have spaces on both sides to be valid.
  2. Step 2: Verify units and property usage

    Both 20px and 10% have units, and margin-left supports calc(), so no error there.
  3. Final Answer:

    No spaces around the plus operator inside calc() -> Option B
  4. Quick Check:

    Spaces around operators = required [OK]
Hint: Check spaces around +, -, *, / in calc() [OK]
Common Mistakes:
  • Ignoring spaces around operators
  • Thinking calc() can't mix units
  • Assuming margin-left disallows calc()
5. You want a box to be 100px wide plus 10% of the viewport width, but never wider than 200px. Which CSS rule correctly uses calc() and limits the width?
hard
A. width: calc(100px + 10%); max-width: 200px;
B. width: calc(100px + 10% max-width: 200px);
C. width: calc(100px + 10%); max-width: calc(200px);
D. width: calc(100px + 10% - 200px);

Solution

  1. Step 1: Use calc() to add fixed and relative units

    width: calc(100px + 10%); max-width: 200px; correctly uses calc(100px + 10%) to combine fixed and percentage widths.
  2. Step 2: Limit width with max-width property

    width: calc(100px + 10%); max-width: 200px; sets max-width: 200px; separately, which correctly limits the maximum width.
  3. Final Answer:

    width: calc(100px + 10%); max-width: 200px; -> Option A
  4. Quick Check:

    Separate max-width limits width correctly [OK]
Hint: Use max-width separately to limit calc() results [OK]
Common Mistakes:
  • Combining max-width inside calc()
  • Missing semicolon between properties
  • Subtracting max width instead of limiting