📖 Scenario: You are building a simple webpage using Bootstrap components. To make your page accessible to all users, including those using screen readers, you need to add ARIA attributes to your Bootstrap components.
🎯 Goal: Create a Bootstrap accordion component and add the correct ARIA attributes to improve accessibility.
📋 What You'll Learn
Use Bootstrap 5 accordion component structure
Add aria-expanded attribute to the accordion button
Add aria-controls attribute to the accordion button
Add aria-labelledby attribute to the accordion collapse section
Use semantic HTML elements and Bootstrap classes
💡 Why This Matters
🌍 Real World
Web developers must make interactive components accessible to all users, including those using assistive technologies. Adding ARIA attributes to Bootstrap components is a practical way to improve accessibility.
💼 Career
Accessibility is a key skill for front-end developers. Knowing how to add ARIA attributes to popular UI frameworks like Bootstrap is often required in web development jobs.
Progress0 / 4 steps
1
Create the basic Bootstrap accordion HTML structure
Write the HTML code to create a Bootstrap accordion with one item. Use a div with class accordion and inside it, create a div with class accordion-item. Inside the item, add a h2 with class accordion-header and a button with class accordion-button and type="button". The button text should be Accordion Item #1. Below the header, add a div with class accordion-collapse collapse show and inside it a div with class accordion-body containing the text This is the first item's accordion body.
Bootsrap
Hint
Use the Bootstrap 5 accordion structure exactly as shown in the official docs for one item.
2
Add unique IDs for ARIA attributes
Add an id attribute with value headingOne to the h2 element with class accordion-header. Also add an id attribute with value collapseOne to the div with class accordion-collapse collapse show.
Bootsrap
Hint
Assign the id attributes exactly as headingOne and collapseOne.
3
Add ARIA attributes to the accordion button
Add the attribute aria-expanded="true" and aria-controls="collapseOne" to the button element inside the h2 with id headingOne.
Bootsrap
Hint
Make sure to add both aria-expanded="true" and aria-controls="collapseOne" exactly on the button.
4
Add ARIA attribute to the accordion collapse section
Add the attribute aria-labelledby="headingOne" to the div with class accordion-collapse collapse show and id collapseOne.
Bootsrap
Hint
Add aria-labelledby="headingOne" exactly to the collapse container div.
Practice
(1/5)
1. What is the main purpose of ARIA attributes in Bootstrap components?
easy
A. To increase the loading speed of Bootstrap pages
B. To change the visual style of components
C. To add animations to Bootstrap elements
D. To improve accessibility by describing roles and states to assistive technologies
Solution
Step 1: Understand ARIA attributes
ARIA attributes provide extra information about UI elements to assistive technologies like screen readers.
Step 2: Identify their role in Bootstrap
Bootstrap uses ARIA attributes to make components accessible, not for styling or performance.
Final Answer:
To improve accessibility by describing roles and states to assistive technologies -> Option D
Quick Check:
ARIA = Accessibility info [OK]
Hint: ARIA attributes describe roles and states for accessibility [OK]
Common Mistakes:
Thinking ARIA changes visual styles
Assuming ARIA improves page speed
Confusing ARIA with animations
2. Which ARIA attribute is correctly used in this Bootstrap button to indicate it controls a collapsible section? <button class='btn btn-primary' aria-controls='collapseExample' aria-expanded='false'>Toggle</button>
easy
A. aria-controls and aria-expanded
B. aria-hidden and aria-pressed
C. aria-label and aria-live
D. aria-checked and aria-disabled
Solution
Step 1: Identify ARIA attributes for collapsible controls
Buttons controlling collapsible areas use aria-controls to reference the collapsible element and aria-expanded to indicate open/closed state.
Step 2: Match attributes in the code snippet
The button uses aria-controls='collapseExample' and aria-expanded='false', which is correct for collapsible control.
A. data-bs-target should be a class selector, not an ID
B. data-bs-toggle should be 'dropdown' instead of 'modal'
C. aria-expanded should not be set on the modal trigger button
D. Missing aria-label attribute for accessibility
Solution
Step 1: Check ARIA usage on modal trigger buttons
Modal trigger buttons should not use aria-expanded because modals are overlays, not expandable sections.
Step 2: Verify other attributes
data-bs-toggle='modal' and data-bs-target='#myModal' are correct. aria-label is optional if button text is descriptive. data-bs-target uses ID selector correctly.
Final Answer:
aria-expanded should not be set on the modal trigger button -> Option C
Quick Check:
Modal triggers do not use aria-expanded [OK]
Hint: Modal triggers do not use aria-expanded attribute [OK]
Common Mistakes:
Adding aria-expanded to modal buttons
Confusing modal toggle with dropdown toggle
Using class selector instead of ID for data-bs-target
5. You want to make a Bootstrap tab component fully accessible. Which ARIA attributes should you add to the tab buttons to indicate their roles and states correctly?
hard
A. aria-checked, aria-expanded, and aria-hidden
B. role='tab', aria-selected, and aria-controls
C. role='button', aria-pressed, and aria-live
D. aria-label, aria-disabled, and aria-haspopup
Solution
Step 1: Identify ARIA roles for tabs
Tab buttons should have role='tab' to define their role in the tablist.
Step 2: Use state attributes for tabs
aria-selected indicates which tab is active, and aria-controls links the tab to its tab panel.
Final Answer:
role='tab', aria-selected, and aria-controls -> Option B
Quick Check:
Tabs need role tab + aria-selected + aria-controls [OK]
Hint: Tabs use role tab plus aria-selected and aria-controls [OK]
Common Mistakes:
Using aria-checked which is for checkboxes
Confusing aria-pressed with aria-selected
Adding aria-live which is for live regions
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.