Using Tailwind CSS Focus Variant for Accessible Buttons
📖 Scenario: You are creating a simple webpage with buttons that change style when they receive keyboard focus. This helps users who navigate with the keyboard see which button is active.
🎯 Goal: Build a webpage with three buttons styled using Tailwind CSS. Each button should have a visible focus style using the focus: variant to improve accessibility.
📋 What You'll Learn
Create three buttons with the text: 'Save', 'Cancel', and 'Delete'.
Use Tailwind CSS classes to style the buttons with a base background color and text color.
Add a focus: variant to change the button's border and background color when focused.
Ensure the focus style is clearly visible for keyboard users.
Use semantic HTML and include a lang attribute in the html tag.
💡 Why This Matters
🌍 Real World
Making interactive elements like buttons clearly show focus helps users who navigate websites using keyboards or assistive devices. This is important for accessibility and usability.
💼 Career
Web developers often use Tailwind CSS to quickly style components and ensure accessibility by using focus variants and semantic HTML.
Progress0 / 4 steps
1
Create the HTML structure with three buttons
Create a basic HTML5 skeleton with lang="en" in the <html> tag. Inside the <body>, add three <button> elements with the exact texts: Save, Cancel, and Delete.
Tailwind
Hint
Remember to add lang="en" in the <html> tag and create three buttons with the exact texts.
2
Add base Tailwind CSS classes to style the buttons
Add Tailwind CSS classes to each button to give them a base style: use bg-blue-500 for background color, text-white for text color, px-4 and py-2 for padding, and rounded for rounded corners.
Tailwind
Hint
Use the exact Tailwind classes bg-blue-500 text-white px-4 py-2 rounded on each button.
3
Add focus variant classes to change border and background on focus
Add Tailwind CSS focus: variant classes to each button to change the border to 2px solid with color focus:border-yellow-400 and background color to focus:bg-yellow-400 when the button is focused.
Tailwind
Hint
Add focus:border-2 focus:border-yellow-400 focus:bg-yellow-400 to each button's class attribute.
4
Include Tailwind CSS via CDN script in the head
Add the official Tailwind CSS CDN inside the <head> section using a <script> tag with src https://cdn.tailwindcss.com to enable Tailwind styles on the page.
Tailwind
Hint
Add the Tailwind CSS CDN script tag exactly as <script src="https://cdn.tailwindcss.com"></script> inside the <head>.
Practice
(1/5)
1. What does the focus: variant in Tailwind CSS do?
easy
A. Applies styles only when an element is disabled
B. Applies styles only when an element is hovered
C. Applies styles only when an element is clicked
D. Applies styles only when an element is focused
Solution
Step 1: Understand the focus variant purpose
The focus: variant applies styles when an element receives keyboard or mouse focus, helping users identify the active element.
Step 2: Compare with other states
Hover applies on mouse hover, click is not a Tailwind variant, and disabled is a different state. Only focus matches the description.
Final Answer:
Applies styles only when an element is focused -> Option D
Quick Check:
focus: = styles on focus [OK]
Hint: Focus variant styles appear only when element is focused [OK]
Common Mistakes:
Confusing focus with hover
Thinking focus applies on click
Mixing focus with disabled state
2. Which of the following is the correct Tailwind syntax to change text color to blue only when an input is focused?
easy
A. focus:text-blue-500
B. text-blue-500:focus
C. focus_text-blue-500
D. text-blue-500-focus
Solution
Step 1: Recall Tailwind variant syntax
Tailwind uses the format variant:utility, so focus variant is focus: before the utility class.
Step 2: Identify correct option
Only focus:text-blue-500 matches the correct syntax. Others misuse colons or underscores.
Final Answer:
focus:text-blue-500 -> Option A
Quick Check:
Variant prefix + colon + utility = correct [OK]
Hint: Use focus: prefix before utility class [OK]
Common Mistakes:
Placing :focus after utility
Using underscores instead of colon
Appending -focus to utility class
3. What will be the text color of this button when focused?
The button has base text color text-gray-700 and changes to text-red-600 only on focus.
Step 2: Determine color on focus and blur
When focused, focus:text-red-600 overrides base gray color. When not focused, base gray applies.
Final Answer:
Red when focused, gray when not focused -> Option A
Quick Check:
focus: overrides base style on focus [OK]
Hint: Focus styles override base only when focused [OK]
Common Mistakes:
Thinking focus styles apply always
Confusing base and focus colors
Assuming no color change on focus
4. Identify the error in this Tailwind class usage to add a blue border on focus:
<input class="border focus-border-blue-500" />
medium
A. Border cannot change color on focus
B. Wrong utility name 'border-blue-500'
C. Missing colon after focus
D. Focus variant cannot be used on inputs
Solution
Step 1: Check variant syntax
The focus variant requires a colon after it, like focus:border-blue-500. The code uses focus-border-blue-500 which is invalid.
Step 2: Verify utility and element support
border-blue-500 is a valid utility and inputs support focus styles, so no issues there.
Final Answer:
Missing colon after focus -> Option C
Quick Check:
Variant must have colon separator [OK]
Hint: Always use colon after variant like focus: [OK]
Common Mistakes:
Omitting colon after focus
Using dash instead of colon
Assuming inputs can't have focus styles
5. You want a button to have a green background normally, but change to yellow background only when focused and also have a black border only on focus. Which Tailwind classes should you use?
hard
A. bg-green-500 bg-yellow-400 focus:border-black border
B. bg-green-500 focus:bg-yellow-400 border focus:border-black
C. bg-green-500 focus:bg-yellow-400 border-black focus:border
D. bg-green-500 focus:bg-yellow-400 focus:border-black border
Solution
Step 1: Set base styles
Use bg-green-500 for normal background and border to set border width (default border color).
Step 2: Apply focus variants correctly
Use focus:bg-yellow-400 to change background on focus and focus:border-black to change border color to black only on focus.
Step 3: Verify option correctness
bg-green-500 focus:bg-yellow-400 border focus:border-black correctly uses base green background and border, and changes background and border color on focus. Others misuse border color or width.
Final Answer:
bg-green-500 focus:bg-yellow-400 border focus:border-black -> Option B
Quick Check:
Base border + focus:border-black = black border only on focus [OK]
Hint: Use base classes plus focus: variant for focus styles [OK]
Common Mistakes:
Adding base 'border-black' (always black border)
Missing base 'border' width
Forgetting 'focus:border-black' color
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.