📖 Scenario: You are building a simple webpage with a navigation menu using Bootstrap. You want to make sure users can navigate the menu using their keyboard easily.
🎯 Goal: Create a Bootstrap navigation bar with three links. Add keyboard navigation support so users can tab through the links and see which link is focused.
📋 What You'll Learn
Use Bootstrap 5 classes to create a navigation bar
Add three navigation links with exact text: Home, About, Contact
Ensure each link is focusable using keyboard (tab key)
Add visible focus style for keyboard users
Use semantic HTML and accessibility best practices
💡 Why This Matters
🌍 Real World
Keyboard navigation is essential for users who cannot use a mouse. Websites must support tabbing through links with clear focus styles.
💼 Career
Web developers must build accessible navigation menus using frameworks like Bootstrap to meet accessibility standards and improve user experience.
Progress0 / 4 steps
1
Create the basic Bootstrap navigation bar
Write the HTML code to create a Bootstrap navigation bar with a <nav> element that has the class navbar and navbar-expand-lg. Inside it, add a <div> with class container-fluid. Inside the container, add an unordered list <ul> with class navbar-nav. Do not add any list items yet.
Bootsrap
Hint
Use Bootstrap classes navbar, navbar-expand-lg, container-fluid, and navbar-nav as described.
2
Add three navigation links inside list items
Inside the <ul class="navbar-nav">, add three list items <li> each with class nav-item. Inside each list item, add an anchor <a> with class nav-link and href set to #. The anchor texts must be exactly Home, About, and Contact in that order.
Bootsrap
Hint
Each link must be inside a <li> with class nav-item and have class nav-link.
3
Add keyboard focus styles for the navigation links
Add a <style> block inside the <head> or before the closing </body> tag. Inside it, write CSS to add a visible outline with color #0d6efd and thickness 2px around .nav-link:focus. This will help keyboard users see which link is focused.
Bootsrap
Hint
Use the CSS selector .nav-link:focus and add an outline property with the specified color and thickness.
4
Add ARIA roles and attributes for accessibility
Add the attribute role="navigation" to the <nav> element. Also, add aria-label="Main navigation" to the same <nav> element to describe the navigation region for screen readers.
Bootsrap
Hint
Add role="navigation" and aria-label="Main navigation" inside the <nav> tag.
Practice
(1/5)
1. What is the main purpose of keyboard navigation support in Bootstrap?
easy
A. To disable mouse clicks on buttons
B. To add animations to buttons
C. To change the color scheme automatically
D. To allow users to navigate the website using only the keyboard
Solution
Step 1: Understand keyboard navigation
Keyboard navigation means users can move through a website using keys like Tab, Enter, and arrow keys without a mouse.
Step 2: Identify Bootstrap's support
Bootstrap components are designed to support keyboard navigation for accessibility and ease of use.
Final Answer:
To allow users to navigate the website using only the keyboard -> Option D
Quick Check:
Keyboard navigation = navigate site with keyboard [OK]
Hint: Keyboard navigation means using keys, not mouse [OK]
Common Mistakes:
Thinking it adds visual effects
Confusing with color or style changes
Assuming it disables mouse input
2. Which HTML attribute is commonly used in Bootstrap to make custom elements focusable for keyboard navigation?
easy
A. tabindex
B. aria-label
C. data-toggle
D. role
Solution
Step 1: Identify attribute for focus
The tabindex attribute allows elements to receive keyboard focus and be reachable by Tab key.
Step 2: Confirm Bootstrap usage
Bootstrap uses tabindex to enable keyboard navigation on custom interactive elements.
Final Answer:
tabindex -> Option A
Quick Check:
Focusable elements use tabindex [OK]
Hint: tabindex controls keyboard focus order [OK]
Common Mistakes:
Confusing aria-label with focus control
Using data-toggle which is for JS behavior
Using role which defines semantics, not focus
3. Consider this Bootstrap button code:
<button class="btn btn-primary">Click Me</button>
What happens when you press the Tab key repeatedly on the page?
medium
A. The button will change color automatically
B. The button will receive focus and can be activated with Enter or Space
C. The button will be skipped and not receive focus
D. The button will submit a form immediately
Solution
Step 1: Understand default button behavior
Native buttons are focusable by default and receive keyboard focus when tabbing.
Step 2: Bootstrap styling does not remove focus
Bootstrap styles do not disable keyboard focus or activation on buttons.
Final Answer:
The button will receive focus and can be activated with Enter or Space -> Option B
Quick Check:
Native buttons are keyboard accessible [OK]
Hint: Native buttons are focusable by default [OK]
Common Mistakes:
Thinking Bootstrap disables keyboard focus
Assuming buttons skip focus by default
Confusing visual style with behavior
4. You have a custom Bootstrap dropdown menu that is not reachable by keyboard. Which is the most likely cause?
medium
A. Missing tabindex="-1" on the dropdown toggle button
B. Adding disabled attribute to the dropdown menu
C. Missing tabindex="0" or focusable attribute on the toggle element
D. Using aria-hidden="true" on the dropdown menu
Solution
Step 1: Check focusability of toggle
For keyboard navigation, the dropdown toggle must be focusable, usually with tabindex="0" or a native focusable element.
Step 2: Identify common mistakes
Missing tabindex or using tabindex="-1" prevents keyboard focus on toggle, making dropdown unreachable.
Final Answer:
Missing tabindex="0" or focusable attribute on the toggle element -> Option C
Quick Check:
Focusable toggle needs tabindex=0 [OK]
Hint: Toggle must be focusable with tabindex=0 [OK]
Common Mistakes:
Using tabindex=-1 disables focus
Hiding menu with aria-hidden disables access
Disabling menu instead of toggle
5. You want to create a custom Bootstrap card component that is keyboard accessible. Which combination of attributes and roles should you add to the card container to support keyboard navigation and screen readers?
hard
A. tabindex="0" role="button" aria-label="Card details"
B. tabindex="-1" role="presentation" aria-hidden="true"
C. tabindex="0" role="img" aria-label="Card image"
D. tabindex="-1" role="button" aria-disabled="true"
Solution
Step 1: Make card focusable
Adding tabindex="0" makes the card reachable by keyboard Tab key.
Step 2: Define semantic role and label
Using role="button" tells assistive tech the card is interactive, and aria-label describes it.
Final Answer:
tabindex="0" role="button" aria-label="Card details" -> Option A