📖 Scenario: You are creating a simple webpage using Bootstrap. You want to customize the spacing scale to make the padding and margin sizes larger than the default Bootstrap values.
🎯 Goal: Build a Bootstrap webpage that uses a customized spacing scale so that the padding and margin utilities reflect your new spacing sizes.
📋 What You'll Learn
Create a Bootstrap HTML skeleton with a container and a box element
Add a CSS variable to modify the Bootstrap spacing scale
Use Bootstrap spacing utility classes that reflect the new spacing scale
Ensure the page is responsive and uses semantic HTML
💡 Why This Matters
🌍 Real World
Customizing Bootstrap spacing helps create unique designs that fit brand guidelines or personal style while keeping the benefits of Bootstrap's utility classes.
💼 Career
Web developers often need to adjust framework defaults to meet design requirements and ensure accessibility and responsiveness.
Progress0 / 4 steps
1
Create the basic Bootstrap HTML structure
Create a basic HTML5 page with lang="en", meta charset="UTF-8", and meta viewport tags. Include the Bootstrap CSS from the official CDN inside the <head>. Inside the <body>, add a <main> element with a container class. Inside the container, add a div with the class box and the text Content Box.
Bootsrap
Hint
Remember to include the Bootstrap CSS link in the <head> and create a container inside <main>.
2
Add a CSS variable to modify the Bootstrap spacing scale
Inside the <head>, add a <style> block. Inside it, set the CSS custom property --bs-gutter-x to 3rem on the :root selector. This will increase the horizontal spacing scale used by Bootstrap.
Bootsrap
Hint
Use the :root selector to set --bs-gutter-x to 3rem inside a <style> block.
3
Use Bootstrap spacing utility classes with the new spacing scale
Add the Bootstrap classes p-4 and m-4 to the div with class box. This will apply padding and margin using the updated spacing scale.
Bootsrap
Hint
Add the classes p-4 and m-4 to the div with class box.
4
Add final styling for the box and accessibility
Inside the <style> block, add CSS to give the .box a light gray background color #f8f9fa, a border radius of 0.5rem, and center the text. Also add role="region" and aria-label="Content Box" attributes to the div with class box for accessibility.
Bootsrap
Hint
Style the .box class inside the <style> block and add role="region" and aria-label="Content Box" to the div.
Practice
(1/5)
1. What does modifying the $spacer variable in Bootstrap SCSS affect?
easy
A. The font size of all text elements
B. The color scheme of Bootstrap components
C. The base unit for spacing scale used in margin and padding classes
D. The border radius of buttons and cards
Solution
Step 1: Understand the role of $spacer
The $spacer variable sets the base size for spacing in Bootstrap, like margins and paddings.
Step 2: Identify what changes when $spacer is modified
Changing $spacer changes the size unit used in spacing utilities, affecting all related classes.
Final Answer:
The base unit for spacing scale used in margin and padding classes -> Option C
Quick Check:
$spacer controls spacing size [OK]
Hint: Remember $spacer controls spacing size, not colors or fonts [OK]
Common Mistakes:
Confusing spacing with colors or fonts
Thinking $spacer changes border radius
Assuming $spacer affects typography
2. Which of the following is the correct way to override the Bootstrap spacing scale base unit using CSS variables?
easy
A. html { --bs-spacing: 2rem; }
B. body { $spacer: 2rem; }
C. :root { $spacer: 2rem; }
D. :root { --bs-spacer: 2rem; }
Solution
Step 1: Identify how CSS variables are declared
CSS variables use the syntax --variable-name inside selectors like :root.
Step 2: Match the correct syntax for Bootstrap spacing variable
Bootstrap uses --bs-spacer as the CSS variable for spacing, so overriding it in :root is correct.
Final Answer:
:root { --bs-spacer: 2rem; } -> Option D
Quick Check:
CSS variables start with -- and use :root for global override [OK]
Hint: CSS variables start with -- and go inside :root [OK]
Common Mistakes:
Using SCSS variable syntax ($spacer) inside CSS
Placing CSS variables inside wrong selectors
Using incorrect variable names like --bs-spacing
3. Given this CSS override:
:root { --bs-spacer: 3rem; }
What will be the margin size of class="m-2" in Bootstrap?
medium
A. 1.5rem
B. 1rem
C. 0.5rem
D. 3rem
Solution
Step 1: Understand Bootstrap spacing scale
Bootstrap spacing scale uses multiples of --bs-spacer divided by 4 for each step. For m-2, margin is 0.5 * $spacer.
4. You tried to change the spacing scale by adding $spacer: 3rem; in your CSS file but it didn't work. What is the likely reason?
medium
A. A and D
B. $spacer is a SCSS variable and cannot be used directly in CSS
C. You must import Bootstrap SCSS before overriding $spacer
D. You need to use --bs-spacer instead of $spacer in CSS
Solution
Step 1: Differentiate SCSS and CSS variables
$spacer is a SCSS variable used during compilation, not valid in CSS files.
Step 2: Understand correct override methods
To override spacing in CSS, use the CSS variable --bs-spacer.
Step 3: Combine reasons for failure
Using $spacer in CSS fails because it's invalid SCSS syntax (A) and the incorrect variable name for CSS (D).
Final Answer:
A and D -> Option A
Quick Check:
SCSS vars invalid in CSS; use --bs-spacer [OK]
Hint: SCSS vars need SCSS files; CSS uses --bs-spacer [OK]
Common Mistakes:
Using SCSS variables directly in CSS
Using incorrect variable name in CSS
Confusing CSS and SCSS variable syntax
5. You want to create a custom spacing scale in Bootstrap with these values: 0, 0.25rem, 0.5rem, 1rem, 2rem, 4rem. Which SCSS code correctly modifies the spacing scale?
hard
A. $spacers: (0, 0.25rem, 0.5rem, 1rem, 2rem, 4rem);