Bird
Raised Fist0
CSSmarkup~10 mins

Variable scope in CSS - 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 CSS variable inside the :root selector.

CSS
:root {
  --main-color: [1];
}
Drag options to blanks, or click blank then click option'
Amain-color
B#3498db
Ccolor
Dvar(--main-color)
Attempts:
3 left
💡 Hint
Common Mistakes
Using the variable name as the value instead of a color.
Forgetting the '#' in the color code.
Using var(--main-color) when defining the variable.
2fill in blank
medium

Complete the code to use the CSS variable --main-color inside the body selector.

CSS
body {
  background-color: [1];
}
Drag options to blanks, or click blank then click option'
Avar(--main-color)
Bcolor(--main-color)
Cmain-color
D--main-color
Attempts:
3 left
💡 Hint
Common Mistakes
Using the variable name without var().
Using incorrect syntax like color(--main-color).
Forgetting the double dashes in the variable name.
3fill in blank
hard

Fix the error in the code to correctly override the CSS variable --main-color inside the .button class.

CSS
.button {
  [1]: #e74c3c;
}
Drag options to blanks, or click blank then click option'
A--main-color
Bmain-color
Cvar(--main-color)
Dcolor
Attempts:
3 left
💡 Hint
Common Mistakes
Using var(--main-color) as a property name.
Using the variable name without dashes.
Using unrelated property names like color.
4fill in blank
hard

Fill both blanks to define a CSS variable --text-size inside :root and use it in the p selector.

CSS
:root {
  [1]: 1.2rem;
}
p {
  font-size: [2];
}
Drag options to blanks, or click blank then click option'
A--text-size
Bvar(--text-size)
C--main-color
D1.2rem
Attempts:
3 left
💡 Hint
Common Mistakes
Using the variable name without dashes when defining.
Using the variable name without var() when using it.
Mixing variable names like --main-color instead of --text-size.
5fill in blank
hard

Fill all three blanks to define a CSS variable --padding inside :root, override it inside .container, and use it in the div selector.

CSS
:root {
  [1]: 1rem;
}
.container {
  [2]: 2rem;
}
div {
  padding: [3];
}
Drag options to blanks, or click blank then click option'
A--padding
Bvar(--padding)
Dpadding
Attempts:
3 left
💡 Hint
Common Mistakes
Using different variable names in different places.
Using var() when defining or overriding variables.
Using property names like padding instead of variable names when defining.

Practice

(1/5)
1. Where are CSS variables defined to be accessible throughout the entire webpage?
easy
A. Inside any class selector
B. Inside the :root selector
C. Inside an ID selector
D. Inside a media query only

Solution

  1. Step 1: Understand global scope in CSS variables

    CSS variables defined inside :root are global and accessible anywhere.
  2. Step 2: Compare with local scopes

    Variables inside class or ID selectors are local and not accessible globally.
  3. Final Answer:

    Inside the :root selector -> Option B
  4. Quick Check:

    Global CSS variables = :root [OK]
Hint: Global CSS variables live in :root [OK]
Common Mistakes:
  • Thinking variables in classes are global
  • Confusing media queries with variable scope
  • Assuming ID selectors define global variables
2. Which of the following is the correct syntax to declare a CSS variable named --main-color with value blue inside a class .header?
easy
A. .header { main-color: blue; }
B. .header { var(--main-color): blue; }
C. .header { --main-color = blue; }
D. .header { --main-color: blue; }

Solution

  1. Step 1: Recall CSS variable declaration syntax

    CSS variables start with two dashes and use colon to assign value, e.g., --var-name: value;.
  2. Step 2: Check each option

    .header { --main-color: blue; } uses correct syntax. .header { var(--main-color): blue; } incorrectly uses var() on left side. .header { --main-color = blue; } uses equals sign which is invalid. .header { main-color: blue; } misses dashes.
  3. Final Answer:

    .header { --main-color: blue; } -> Option D
  4. Quick Check:

    Variable declaration = --name: value; [OK]
Hint: Declare variables with --name: value; inside selectors [OK]
Common Mistakes:
  • Using equals sign instead of colon
  • Using var() on left side of declaration
  • Omitting the double dashes
3. Given the CSS below, what color will the text inside <div class='box'> be?
:root { --text-color: black; } .box { --text-color: red; color: var(--text-color); }
medium
A. Red
B. Default browser color
C. Black
D. Blue

Solution

  1. Step 1: Identify variable scopes

    --text-color is globally black in :root, but locally red inside .box.
  2. Step 2: Determine which variable applies

    Inside .box, local variable overrides global, so color: var(--text-color) uses red.
  3. Final Answer:

    Red -> Option A
  4. Quick Check:

    Local variable overrides global = red [OK]
Hint: Local CSS variables override global ones inside their scope [OK]
Common Mistakes:
  • Assuming global variable always applies
  • Confusing variable name with property name
  • Ignoring local variable overrides
4. What is wrong with this CSS code if the variable --bg-color is not applying inside .card?
:root { --bg-color: yellow; } .card { background-color: var(--bg-color); } .card .content { --bg-color: green; }
medium
A. The variable --bg-color inside .content does not affect .card
B. Variables cannot be used inside background-color
C. The variable name is invalid without camelCase
D. The :root selector cannot define variables

Solution

  1. Step 1: Understand variable scope in nested selectors

    Variables defined inside .card .content are local to that selector only.
  2. Step 2: Check where background-color is applied

    background-color is set on .card, which uses the global variable from :root.
  3. Final Answer:

    The variable --bg-color inside .content does not affect .card -> Option A
  4. Quick Check:

    Local variables only affect their own scope [OK]
Hint: Local variables don't affect parent selectors [OK]
Common Mistakes:
  • Thinking nested variables override parents
  • Believing variables can't be used in properties
  • Misunderstanding variable naming rules
5. You want a CSS variable --button-color to be blue globally but red only inside .alert buttons. Which CSS setup achieves this correctly?
hard
A. :root { --button-color: red; } button { color: var(--button-color); } .alert button { color: red; }
B. .alert button { --button-color: blue; } :root { --button-color: red; } button { color: var(--button-color); }
C. :root { --button-color: blue; } .alert button { --button-color: red; } button { color: var(--button-color); }
D. button { --button-color: blue; } .alert button { --button-color: red; color: var(--button-color); }

Solution

  1. Step 1: Define global variable in :root

    Setting --button-color: blue in :root makes it global.
  2. Step 2: Override variable locally inside .alert button

    Setting --button-color: red inside .alert button overrides global only there.
  3. Step 3: Use variable in button color property

    Using color: var(--button-color) in button applies correct color depending on scope.
  4. Final Answer:

    :root { --button-color: blue; } .alert button { --button-color: red; } button { color: var(--button-color); } -> Option C
  5. Quick Check:

    Global in :root, local override in selector [OK]
Hint: Set global in :root, override locally in selector [OK]
Common Mistakes:
  • Reversing global and local variable values
  • Not using variable in property for local override
  • Defining variables only inside buttons without global