📖 Scenario: You are building a website where you want to show an important message that grabs the user's attention. You will use a modal popup to do this. A modal is a box that appears on top of the page and stops the user from interacting with the rest of the page until they close it.
🎯 Goal: Build a simple Bootstrap modal that appears when the page loads. This modal will focus the user's attention by disabling interaction with the background content until the modal is closed.
📋 What You'll Learn
Use Bootstrap 5 modal structure
Create a button to open the modal
Make the modal appear automatically on page load
Ensure the modal traps keyboard focus inside it
Include accessible labels for screen readers
💡 Why This Matters
🌍 Real World
Modals are used on websites to show important messages, alerts, or forms without navigating away from the current page. They help focus user attention on critical tasks.
💼 Career
Knowing how to implement accessible and user-friendly modals is a common skill for web developers working on interactive websites and applications.
Progress0 / 4 steps
1
Set up the basic HTML structure with Bootstrap CSS and JS links
Create a basic HTML5 page with lang="en" and include the Bootstrap 5 CSS and JS CDN links inside the <head> and before the closing </body> tag respectively. Also add a <button> with id="openModalBtn" and text Open Modal inside the <body>.
Bootsrap
Hint
Remember to add the Bootstrap CSS link inside the <head> and the Bootstrap JS bundle before the closing </body> tag. Also add a button with id="openModalBtn".
2
Add the modal HTML structure with accessible labels
Below the Open Modal button, add a Bootstrap modal structure with id="attentionModal". Include aria-labelledby="modalTitle" and aria-hidden="true" on the modal. Inside the modal, add a <h5> with id="modalTitle" and text Important Message. Also add a close button with data-bs-dismiss="modal" and aria-label="Close".
Bootsrap
Hint
Use the Bootstrap modal structure with the correct id and accessibility attributes. The modal title should have id="modalTitle" and the close button should have data-bs-dismiss="modal" and aria-label="Close".
3
Make the modal open automatically when the page loads
Add a <script> block before the closing </body> tag. Inside it, create a Bootstrap modal instance for attentionModal and call show() on it so the modal appears automatically when the page loads.
Bootsrap
Hint
Create a new Bootstrap modal instance using new bootstrap.Modal() and call show() on it inside a <script> tag before the closing </body>.
4
Add JavaScript to open the modal when the button is clicked
Add a click event listener to the button with id="openModalBtn". When clicked, it should call show() on the attentionModal instance to open the modal again.
Bootsrap
Hint
Use document.getElementById('openModalBtn').addEventListener('click', ...) to open the modal again when the button is clicked.
Practice
(1/5)
1. Why do Bootstrap modals help focus user attention?
easy
A. They automatically refresh the page content
B. They block interaction with the rest of the page until closed
C. They change the page background color permanently
D. They disable the browser's back button
Solution
Step 1: Understand modal behavior
Bootstrap modals create a popup that covers the page and disables interaction outside it.
Step 2: Identify how focus is controlled
By blocking other page elements, modals force the user to focus on the modal content only.
Final Answer:
They block interaction with the rest of the page until closed -> Option B
Quick Check:
Modals block page interaction = They block interaction with the rest of the page until closed [OK]
Hint: Focus trapping uses data-bs-backdrop='static' in Bootstrap modals [OK]
Common Mistakes:
Confusing backdrop with focus control
Using keyboard='false' disables ESC key but not focus
Scroll attribute controls scrolling, not focus
3. What happens when a Bootstrap modal is opened regarding user focus?
medium
A. Focus moves to the browser address bar
B. Focus remains on the page background elements
C. Focus moves to the modal and keyboard navigation is trapped inside
D. Focus is lost and user cannot use keyboard
Solution
Step 1: Understand modal opening behavior
When a modal opens, Bootstrap automatically moves focus to the modal container.
Step 2: Check keyboard navigation effect
Keyboard navigation is trapped inside the modal to prevent interacting with background content.
Final Answer:
Focus moves to the modal and keyboard navigation is trapped inside -> Option C
Quick Check:
Modal traps focus inside = Focus moves to the modal and keyboard navigation is trapped inside [OK]
Hint: Modal open moves focus inside and traps keyboard navigation [OK]
Common Mistakes:
Thinking focus stays on background elements
Assuming focus moves to browser controls
Believing keyboard stops working
4. You notice users can tab outside a Bootstrap modal when it is open. What is the likely cause?
medium
A. Modal content is empty
B. Modal has data-bs-backdrop='false' set
C. Modal is missing the fade class
D. Modal has data-bs-focus='false' attribute on the modal
Solution
Step 1: Identify focus trapping mechanism
Bootstrap traps focus inside modals using the data-bs-focus='true' attribute (default).
Step 2: Analyze cause of focus escape
If users can tab outside, focus trapping is disabled (e.g., data-bs-focus='false').
Final Answer:
Modal has data-bs-focus='false' attribute on the modal -> Option D
Quick Check:
Focus trapping disabled = Modal has data-bs-focus='false' attribute on the modal [OK]
Hint: Check if data-bs-focus='true' is set to trap focus [OK]
Common Mistakes:
Confusing backdrop with focus trapping
Thinking fade class affects focus
Assuming empty content causes focus issues
5. You want to ensure a Bootstrap modal keeps user focus for an important form but also allows scrolling inside the modal if content is long. Which setup is best?
hard
A. Use no data attributes and rely on default modal behavior
B. Use data-bs-backdrop='false' and data-bs-keyboard='false'
C. Use data-bs-focus='false' and data-bs-scroll='false'
D. Use data-bs-focus='true' and data-bs-scroll='true' on the modal
Solution
Step 1: Identify focus requirement
Bootstrap modals keep user focus inside by default (data-bs-focus='true').
Step 2: Enable scrolling inside modal
Modal body scrolls by default if content overflows.
Step 3: Combine for desired behavior
Default settings ensure both focus trapping and scrollable content.
Final Answer:
Use no data attributes and rely on default modal behavior -> Option A
Quick Check:
Focus trapped + scroll enabled = Use no data attributes and rely on default modal behavior [OK]