Bird
Raised Fist0
Tailwindmarkup~20 mins

Button component patterns in Tailwind - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
šŸŽ–ļø
Button Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
ā“ rendering
intermediate
2:00remaining
What will this button look like in the browser?
Given this Tailwind CSS button code, what is the visual style you will see when rendered?
Tailwind
<button class="bg-blue-600 hover:bg-blue-700 text-white font-semibold py-2 px-4 rounded">Click me</button>
AA transparent button with blue text and no hover effect.
BA red button with white text and rounded corners that becomes darker red on hover.
CA blue button with white text, rounded corners, and a darker blue background on hover.
DA white button with blue text and square corners that changes to light blue on hover.
Attempts:
2 left
šŸ’” Hint
Look at the background and text color classes, and the hover prefix.
ā“ selector
intermediate
1:30remaining
Which Tailwind class applies padding inside a button?
You want to add vertical and horizontal padding inside a button. Which class correctly adds 0.5rem vertical and 1rem horizontal padding?
Apad-2x4
Bp-2-4
Cpadding-y-2 padding-x-4
Dpy-2 px-4
Attempts:
2 left
šŸ’” Hint
Tailwind uses 'py' for vertical padding and 'px' for horizontal padding.
🧠 Conceptual
advanced
2:30remaining
Why use 'focus:outline-none' with 'focus:ring' on buttons?
Consider this button code snippet:
<button class="focus:outline-none focus:ring-2 focus:ring-blue-500">Press</button>

Why is it important to use both 'focus:outline-none' and 'focus:ring' classes together?
A'focus:outline-none' removes the default focus outline, and 'focus:ring' adds a custom visible ring for accessibility.
B'focus:outline-none' disables all focus styles, and 'focus:ring' disables hover effects.
C'focus:outline-none' adds a shadow, and 'focus:ring' removes the shadow on focus.
D'focus:outline-none' makes the button unclickable, and 'focus:ring' makes it clickable.
Attempts:
2 left
šŸ’” Hint
Think about keyboard users and visible focus indicators.
ā“ layout
advanced
2:30remaining
How to center a button horizontally and vertically inside a container?
You have a container div and a button inside it. Which Tailwind classes on the container will center the button both horizontally and vertically?
Tailwind
<div class="???">
  <button class="bg-green-500 text-white px-4 py-2 rounded">Submit</button>
</div>
Aflex items-center justify-center h-64
Binline-flex items-start justify-end h-64
Cgrid place-items-start h-64
Dblock text-center h-64
Attempts:
2 left
šŸ’” Hint
Use flexbox to center items both ways.
ā“ accessibility
expert
3:00remaining
Which button code is most accessible for screen readers and keyboard users?
Choose the button code that best supports accessibility:
A<button class="p-2">Ɨ</button>
B<button aria-label="Close modal" class="p-2">Ɨ</button>
C<div role="button" tabindex="0" class="p-2">Ɨ</div>
D<span class="p-2" onclick="closeModal()">Ɨ</span>
Attempts:
2 left
šŸ’” Hint
Consider semantic elements and ARIA labels.

Practice

(1/5)
1. Which Tailwind class is best to make a button visually indicate it is clickable?
easy
A. cursor-pointer
B. text-center
C. bg-gray-100
D. p-4

Solution

  1. Step 1: Understand cursor styles in Tailwind

    The class cursor-pointer changes the mouse cursor to a hand icon, signaling clickability.
  2. Step 2: Compare other classes

    text-center centers text, bg-gray-100 sets background color, and p-4 adds padding, none indicate clickability.
  3. Final Answer:

    cursor-pointer -> Option A
  4. Quick Check:

    Clickable cursor = cursor-pointer [OK]
Hint: Clickable buttons use cursor-pointer class [OK]
Common Mistakes:
  • Confusing padding or color classes with clickability
  • Using text alignment classes for button behavior
  • Ignoring cursor style for user feedback
2. Which of these is the correct Tailwind syntax to create a blue button with white text and rounded corners?
easy
A. Click me
B. Click me
C. Click me
D. Click me

Solution

  1. Step 1: Check Tailwind color and border radius classes

    bg-blue-500 is a valid blue background, text-white sets white text, and rounded adds small rounded corners.
  2. Step 2: Identify incorrect syntax in other options

    blue-bg and white-text are not Tailwind classes; bg-blue is incomplete; rounded-full makes fully round shape but text is black, not white.
  3. Final Answer:

    <button class='bg-blue-500 text-white rounded'>Click me</button> -> Option C
  4. Quick Check:

    Correct Tailwind classes = Click me [OK]
Hint: Use bg-color, text-color, and rounded classes correctly [OK]
Common Mistakes:
  • Using non-existent Tailwind class names
  • Mixing text colors incorrectly
  • Confusing rounded and rounded-full classes
3. What will be the visual effect of this button?
<button class='bg-green-600 hover:bg-green-700 text-white font-bold py-2 px-4 rounded'>Submit</button>
medium
A. Green button that becomes lighter on hover with normal text and square corners
B. Green button that darkens on hover with white bold text and rounded corners
C. Button with no color change on hover and black text
D. Button with red background and white text

Solution

  1. Step 1: Analyze background and hover classes

    bg-green-600 sets a green background; hover:bg-green-700 makes it darker green on hover.
  2. Step 2: Check text and shape styling

    text-white sets white text, font-bold makes text bold, rounded adds rounded corners.
  3. Final Answer:

    Green button that darkens on hover with white bold text and rounded corners -> Option B
  4. Quick Check:

    Hover darkens green, white bold text = Green button that darkens on hover with white bold text and rounded corners [OK]
Hint: Hover:bg-darken-color changes button shade on hover [OK]
Common Mistakes:
  • Assuming hover makes color lighter instead of darker
  • Ignoring font-bold effect
  • Confusing rounded with square corners
4. Identify the error in this Tailwind button code:
<button class='bg-red-500 hover:bg-red-600 text-white rounded p-3 disabled:opacity-50 disabled:pointer-events-none' disabled>Delete</button>
medium
A. The hover:bg-red-600 class will not work when disabled
B. The disabled attribute is missing
C. The pointer-events-none class disables all clicks even when enabled
D. The opacity-50 class is applied incorrectly

Solution

  1. Step 1: Understand disabled state styling

    The disabled attribute disables the button, so hover styles do not apply when disabled.
  2. Step 2: Analyze hover and disabled interaction

    hover:bg-red-600 works only when button is enabled; when disabled, hover has no effect.
  3. Final Answer:

    The hover:bg-red-600 class will not work when disabled -> Option A
  4. Quick Check:

    Hover ignored when disabled = The hover:bg-red-600 class will not work when disabled [OK]
Hint: Hover styles don't apply on disabled buttons [OK]
Common Mistakes:
  • Thinking disabled attribute is missing
  • Believing pointer-events-none disables clicks always
  • Misunderstanding opacity-50 usage
5. You want a responsive button that is full width on small screens but auto width on medium and larger screens. Which Tailwind class set achieves this?
hard
A. w-full w-auto md:px-6 py-3 bg-indigo-600 text-white rounded
B. w-auto md:w-full px-6 py-3 bg-indigo-600 text-white rounded
C. w-auto px-6 py-3 bg-indigo-600 text-white rounded md:w-auto
D. w-full md:w-auto px-6 py-3 bg-indigo-600 text-white rounded

Solution

  1. Step 1: Understand responsive width classes

    w-full makes button full width; md:w-auto overrides width to auto on medium screens and up.
  2. Step 2: Check other classes for correctness

    px-6 py-3 add padding, bg-indigo-600 sets background, text-white sets text color, rounded rounds corners.
  3. Final Answer:

    w-full md:w-auto px-6 py-3 bg-indigo-600 text-white rounded -> Option D
  4. Quick Check:

    Full width small, auto medium+ = w-full md:w-auto px-6 py-3 bg-indigo-600 text-white rounded [OK]
Hint: Use w-full then md:w-auto for responsive widths [OK]
Common Mistakes:
  • Reversing width classes order
  • Duplicating width classes without breakpoints
  • Misplacing responsive prefixes
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard