Script Valley
Tailwind CSS: Complete Course
Tailwind FundamentalsLesson 1.5

Tailwind CSS hover, focus, and state variants

hover variant, focus variant, active variant, disabled variant, variant syntax, stacking variants, focus-visible, group modifier

Hover, Focus, and State Variants

Tailwind's variant system lets you apply utilities conditionally based on element state. The pattern is always state:utility. No extra CSS needed.

Hover and focus

<button class="bg-blue-600 hover:bg-blue-700 focus:outline-none
  focus:ring-2 focus:ring-blue-400 active:scale-95 transition-colors">
  Submit
</button>

<input class="border border-gray-300 focus:border-blue-500
  focus:ring-1 rounded px-3 py-2" />

Disabled state

<button class="bg-blue-600 text-white disabled:opacity-50
  disabled:cursor-not-allowed" disabled>
  Can't click
</button>

Group modifier

Mark the parent with group, then use group-hover: on children to style them based on parent state.

<div class="group flex items-center gap-2 p-4 hover:bg-gray-50 rounded-lg">
  <span class="text-gray-700 group-hover:text-blue-600">Menu item</span>
  <svg class="opacity-0 group-hover:opacity-100 transition-opacity">...</svg>
</div>

Stacking variants

Variants stack left to right, outermost condition first: dark:hover:bg-gray-700 applies on hover only in dark mode. md:hover:scale-105 applies on hover only at medium breakpoints.