Tailwind CSS Fill
The fill property in CSS is used to set the color of SVG shapes, such as paths, circles, rectangles, etc. Tailwind CSS provides fill-color-value utilities to add fill to the SVGs. This guide outlines the core usages, conditional applications, customization techniques, and more when working with Tailwind's fill utilities.
| Class | Properties | Example |
|---|---|---|
fill-none | fill: none; | <div className="fill-none"></div> |
fill-inherit | fill: inherit; | <div className="fill-inherit"></div> |
fill-current | fill: currentColor; | <div className="fill-current"></div> |
fill-transparent | fill: transparent; | <div className="fill-transparent"></div> |
fill-black | fill: #000; | <div className="fill-black"></div> |
fill-white | fill: #fff; | <div className="fill-white"></div> |
fill-slate-50 | fill: #f8fafc; | <div className="fill-slate-50"></div> |
fill-slate-100 | fill: #f1f5f9; | <div className="fill-slate-100"></div> |
fill-slate-200 | fill: #e2e8f0; | <div className="fill-slate-200"></div> |
fill-slate-300 | fill: #cbd5e1; | <div className="fill-slate-300"></div> |
fill-slate-400 | fill: #94a3b8; | <div className="fill-slate-400"></div> |
fill-slate-500 | fill: #64748b; | <div className="fill-slate-500"></div> |
fill-slate-600 | fill: #475569; | <div className="fill-slate-600"></div> |
fill-slate-700 | fill: #334155; | <div className="fill-slate-700"></div> |
fill-slate-800 | fill: #1e293b; | <div className="fill-slate-800"></div> |
fill-slate-900 | fill: #0f172a; | <div className="fill-slate-900"></div> |
fill-slate-950 | fill: #020617; | <div className="fill-slate-950"></div> |
fill-gray-50 | fill: #f9fafb; | <div className="fill-gray-50"></div> |
fill-gray-100 | fill: #f3f4f6; | <div className="fill-gray-100"></div> |
fill-gray-200 | fill: #e5e7eb; | <div className="fill-gray-200"></div> |
fill-gray-300 | fill: #d1d5db; | <div className="fill-gray-300"></div> |
fill-gray-400 | fill: #9ca3af; | <div className="fill-gray-400"></div> |
fill-gray-500 | fill: #6b7280; | <div className="fill-gray-500"></div> |
fill-gray-600 | fill: #4b5563; | <div className="fill-gray-600"></div> |
fill-gray-700 | fill: #374151; | <div className="fill-gray-700"></div> |
fill-gray-800 | fill: #1f2937; | <div className="fill-gray-800"></div> |
fill-gray-900 | fill: #111827; | <div className="fill-gray-900"></div> |
fill-gray-950 | fill: #030712; | <div className="fill-gray-950"></div> |
fill-zinc-50 | fill: #fafafa; | <div className="fill-zinc-50"></div> |
fill-zinc-100 | fill: #f4f4f5; | <div className="fill-zinc-100"></div> |
fill-zinc-200 | fill: #e4e4e7; | <div className="fill-zinc-200"></div> |
fill-zinc-300 | fill: #d4d4d8; | <div className="fill-zinc-300"></div> |
fill-zinc-400 | fill: #a1a1aa; | <div className="fill-zinc-400"></div> |
fill-zinc-500 | fill: #71717a; | <div className="fill-zinc-500"></div> |
fill-zinc-600 | fill: #52525b; | <div className="fill-zinc-600"></div> |
fill-zinc-700 | fill: #3f3f46; | <div className="fill-zinc-700"></div> |
fill-zinc-800 | fill: #27272a; | <div className="fill-zinc-800"></div> |
fill-zinc-900 | fill: #18181b; | <div className="fill-zinc-900"></div> |
fill-zinc-950 | fill: #09090b; | <div className="fill-zinc-950"></div> |
fill-neutral-50 | fill: #fafafa; | <div className="fill-neutral-50"></div> |
fill-neutral-100 | fill: #f5f5f5; | <div className="fill-neutral-100"></div> |
fill-neutral-200 | fill: #e5e5e5; | <div className="fill-neutral-200"></div> |
fill-neutral-300 | fill: #d4d4d4; | <div className="fill-neutral-300"></div> |
fill-neutral-400 | fill: #a3a3a3; | <div className="fill-neutral-400"></div> |
fill-neutral-500 | fill: #737373; | <div className="fill-neutral-500"></div> |
fill-neutral-600 | fill: #525252; | <div className="fill-neutral-600"></div> |
fill-neutral-700 | fill: #404040; | <div className="fill-neutral-700"></div> |
fill-neutral-800 | fill: #262626; | <div className="fill-neutral-800"></div> |
fill-neutral-900 | fill: #171717; | <div className="fill-neutral-900"></div> |
fill-neutral-950 | fill: #0a0a0a; | <div className="fill-neutral-950"></div> |
fill-stone-50 | fill: #fafaf9; | <div className="fill-stone-50"></div> |
fill-stone-100 | fill: #f5f5f4; | <div className="fill-stone-100"></div> |
fill-stone-200 | fill: #e7e5e4; | <div className="fill-stone-200"></div> |
fill-stone-300 | fill: #d6d3d1; | <div className="fill-stone-300"></div> |
fill-stone-400 | fill: #a8a29e; | <div className="fill-stone-400"></div> |
fill-stone-500 | fill: #78716c; | <div className="fill-stone-500"></div> |
fill-stone-600 | fill: #57534e; | <div className="fill-stone-600"></div> |
fill-stone-700 | fill: #44403c; | <div className="fill-stone-700"></div> |
fill-stone-800 | fill: #292524; | <div className="fill-stone-800"></div> |
fill-stone-900 | fill: #1c1917; | <div className="fill-stone-900"></div> |
fill-stone-950 | fill: #0c0a09; | <div className="fill-stone-950"></div> |
fill-red-50 | fill: #fef2f2; | <div className="fill-red-50"></div> |
fill-red-100 | fill: #fee2e2; | <div className="fill-red-100"></div> |
fill-red-200 | fill: #fecaca; | <div className="fill-red-200"></div> |
fill-red-300 | fill: #fca5a5; | <div className="fill-red-300"></div> |
fill-red-400 | fill: #f87171; | <div className="fill-red-400"></div> |
fill-red-500 | fill: #ef4444; | <div className="fill-red-500"></div> |
fill-red-600 | fill: #dc2626; | <div className="fill-red-600"></div> |
fill-red-700 | fill: #b91c1c; | <div className="fill-red-700"></div> |
fill-red-800 | fill: #991b1b; | <div className="fill-red-800"></div> |
fill-red-900 | fill: #7f1d1d; | <div className="fill-red-900"></div> |
fill-red-950 | fill: #450a0a; | <div className="fill-red-950"></div> |
fill-orange-50 | fill: #fff7ed; | <div className="fill-orange-50"></div> |
fill-orange-100 | fill: #ffedd5; | <div className="fill-orange-100"></div> |
fill-orange-200 | fill: #fed7aa; | <div className="fill-orange-200"></div> |
fill-orange-300 | fill: #fdba74; | <div className="fill-orange-300"></div> |
fill-orange-400 | fill: #fb923c; | <div className="fill-orange-400"></div> |
fill-orange-500 | fill: #f97316; | <div className="fill-orange-500"></div> |
fill-orange-600 | fill: #ea580c; | <div className="fill-orange-600"></div> |
fill-orange-700 | fill: #c2410c; | <div className="fill-orange-700"></div> |
fill-orange-800 | fill: #9a3412; | <div className="fill-orange-800"></div> |
fill-orange-900 | fill: #7c2d12; | <div className="fill-orange-900"></div> |
fill-orange-950 | fill: #431407; | <div className="fill-orange-950"></div> |
fill-amber-50 | fill: #fffbeb; | <div className="fill-amber-50"></div> |
fill-amber-100 | fill: #fef3c7; | <div className="fill-amber-100"></div> |
fill-amber-200 | fill: #fde68a; | <div className="fill-amber-200"></div> |
fill-amber-300 | fill: #fcd34d; | <div className="fill-amber-300"></div> |
fill-amber-400 | fill: #fbbf24; | <div className="fill-amber-400"></div> |
fill-amber-500 | fill: #f59e0b; | <div className="fill-amber-500"></div> |
fill-amber-600 | fill: #d97706; | <div className="fill-amber-600"></div> |
fill-amber-700 | fill: #b45309; | <div className="fill-amber-700"></div> |
fill-amber-800 | fill: #92400e; | <div className="fill-amber-800"></div> |
fill-amber-900 | fill: #78350f; | <div className="fill-amber-900"></div> |
fill-amber-950 | fill: #451a03; | <div className="fill-amber-950"></div> |
fill-yellow-50 | fill: #fefce8; | <div className="fill-yellow-50"></div> |
fill-yellow-100 | fill: #fef9c3; | <div className="fill-yellow-100"></div> |
fill-yellow-200 | fill: #fef08a; | <div className="fill-yellow-200"></div> |
fill-yellow-300 | fill: #fde047; | <div className="fill-yellow-300"></div> |
fill-yellow-400 | fill: #facc15; | <div className="fill-yellow-400"></div> |
fill-yellow-500 | fill: #eab308; | <div className="fill-yellow-500"></div> |
fill-yellow-600 | fill: #ca8a04; | <div className="fill-yellow-600"></div> |
fill-yellow-700 | fill: #a16207; | <div className="fill-yellow-700"></div> |
fill-yellow-800 | fill: #854d0e; | <div className="fill-yellow-800"></div> |
fill-yellow-900 | fill: #713f12; | <div className="fill-yellow-900"></div> |
fill-yellow-950 | fill: #422006; | <div className="fill-yellow-950"></div> |
fill-lime-50 | fill: #f7fee7; | <div className="fill-lime-50"></div> |
fill-lime-100 | fill: #ecfccb; | <div className="fill-lime-100"></div> |
fill-lime-200 | fill: #d9f99d; | <div className="fill-lime-200"></div> |
fill-lime-300 | fill: #bef264; | <div className="fill-lime-300"></div> |
fill-lime-400 | fill: #a3e635; | <div className="fill-lime-400"></div> |
fill-lime-500 | fill: #84cc16; | <div className="fill-lime-500"></div> |
fill-lime-600 | fill: #65a30d; | <div className="fill-lime-600"></div> |
fill-lime-700 | fill: #4d7c0f; | <div className="fill-lime-700"></div> |
fill-lime-800 | fill: #3f6212; | <div className="fill-lime-800"></div> |
fill-lime-900 | fill: #365314; | <div className="fill-lime-900"></div> |
fill-lime-950 | fill: #1a2e05; | <div className="fill-lime-950"></div> |
fill-green-50 | fill: #f0fdf4; | <div className="fill-green-50"></div> |
fill-green-100 | fill: #dcfce7; | <div className="fill-green-100"></div> |
fill-green-200 | fill: #bbf7d0; | <div className="fill-green-200"></div> |
fill-green-300 | fill: #86efac; | <div className="fill-green-300"></div> |
fill-green-400 | fill: #4ade80; | <div className="fill-green-400"></div> |
fill-green-500 | fill: #22c55e; | <div className="fill-green-500"></div> |
fill-green-600 | fill: #16a34a; | <div className="fill-green-600"></div> |
fill-green-700 | fill: #15803d; | <div className="fill-green-700"></div> |
fill-green-800 | fill: #166534; | <div className="fill-green-800"></div> |
fill-green-900 | fill: #14532d; | <div className="fill-green-900"></div> |
fill-green-950 | fill: #052e16; | <div className="fill-green-950"></div> |
fill-emerald-50 | fill: #ecfdf5; | <div className="fill-emerald-50"></div> |
fill-emerald-100 | fill: #d1fae5; | <div className="fill-emerald-100"></div> |
fill-emerald-200 | fill: #a7f3d0; | <div className="fill-emerald-200"></div> |
fill-emerald-300 | fill: #6ee7b7; | <div className="fill-emerald-300"></div> |
fill-emerald-400 | fill: #34d399; | <div className="fill-emerald-400"></div> |
fill-emerald-500 | fill: #10b981; | <div className="fill-emerald-500"></div> |
fill-emerald-600 | fill: #059669; | <div className="fill-emerald-600"></div> |
fill-emerald-700 | fill: #047857; | <div className="fill-emerald-700"></div> |
fill-emerald-800 | fill: #065f46; | <div className="fill-emerald-800"></div> |
fill-emerald-900 | fill: #064e3b; | <div className="fill-emerald-900"></div> |
fill-emerald-950 | fill: #022c22; | <div className="fill-emerald-950"></div> |
fill-teal-50 | fill: #f0fdfa; | <div className="fill-teal-50"></div> |
fill-teal-100 | fill: #ccfbf1; | <div className="fill-teal-100"></div> |
fill-teal-200 | fill: #99f6e4; | <div className="fill-teal-200"></div> |
fill-teal-300 | fill: #5eead4; | <div className="fill-teal-300"></div> |
fill-teal-400 | fill: #2dd4bf; | <div className="fill-teal-400"></div> |
fill-teal-500 | fill: #14b8a6; | <div className="fill-teal-500"></div> |
fill-teal-600 | fill: #0d9488; | <div className="fill-teal-600"></div> |
fill-teal-700 | fill: #0f766e; | <div className="fill-teal-700"></div> |
fill-teal-800 | fill: #115e59; | <div className="fill-teal-800"></div> |
fill-teal-900 | fill: #134e4a; | <div className="fill-teal-900"></div> |
fill-teal-950 | fill: #042f2e; | <div className="fill-teal-950"></div> |
fill-cyan-50 | fill: #ecfeff; | <div className="fill-cyan-50"></div> |
fill-cyan-100 | fill: #cffafe; | <div className="fill-cyan-100"></div> |
fill-cyan-200 | fill: #a5f3fc; | <div className="fill-cyan-200"></div> |
fill-cyan-300 | fill: #67e8f9; | <div className="fill-cyan-300"></div> |
fill-cyan-400 | fill: #22d3ee; | <div className="fill-cyan-400"></div> |
fill-cyan-500 | fill: #06b6d4; | <div className="fill-cyan-500"></div> |
fill-cyan-600 | fill: #0891b2; | <div className="fill-cyan-600"></div> |
fill-cyan-700 | fill: #0e7490; | <div className="fill-cyan-700"></div> |
fill-cyan-800 | fill: #155e75; | <div className="fill-cyan-800"></div> |
fill-cyan-900 | fill: #164e63; | <div className="fill-cyan-900"></div> |
fill-cyan-950 | fill: #083344; | <div className="fill-cyan-950"></div> |
fill-sky-50 | fill: #f0f9ff; | <div className="fill-sky-50"></div> |
fill-sky-100 | fill: #e0f2fe; | <div className="fill-sky-100"></div> |
fill-sky-200 | fill: #bae6fd; | <div className="fill-sky-200"></div> |
fill-sky-300 | fill: #7dd3fc; | <div className="fill-sky-300"></div> |
fill-sky-400 | fill: #38bdf8; | <div className="fill-sky-400"></div> |
fill-sky-500 | fill: #0ea5e9; | <div className="fill-sky-500"></div> |
fill-sky-600 | fill: #0284c7; | <div className="fill-sky-600"></div> |
fill-sky-700 | fill: #0369a1; | <div className="fill-sky-700"></div> |
fill-sky-800 | fill: #075985; | <div className="fill-sky-800"></div> |
fill-sky-900 | fill: #0c4a6e; | <div className="fill-sky-900"></div> |
fill-sky-950 | fill: #082f49; | <div className="fill-sky-950"></div> |
fill-blue-50 | fill: #eff6ff; | <div className="fill-blue-50"></div> |
fill-blue-100 | fill: #dbeafe; | <div className="fill-blue-100"></div> |
fill-blue-200 | fill: #bfdbfe; | <div className="fill-blue-200"></div> |
fill-blue-300 | fill: #93c5fd; | <div className="fill-blue-300"></div> |
fill-blue-400 | fill: #60a5fa; | <div className="fill-blue-400"></div> |
fill-blue-500 | fill: #3b82f6; | <div className="fill-blue-500"></div> |
fill-blue-600 | fill: #2563eb; | <div className="fill-blue-600"></div> |
fill-blue-700 | fill: #1d4ed8; | <div className="fill-blue-700"></div> |
fill-blue-800 | fill: #1e40af; | <div className="fill-blue-800"></div> |
fill-blue-900 | fill: #1e3a8a; | <div className="fill-blue-900"></div> |
fill-blue-950 | fill: #172554; | <div className="fill-blue-950"></div> |
fill-indigo-50 | fill: #eef2ff; | <div className="fill-indigo-50"></div> |
fill-indigo-100 | fill: #e0e7ff; | <div className="fill-indigo-100"></div> |
fill-indigo-200 | fill: #c7d2fe; | <div className="fill-indigo-200"></div> |
fill-indigo-300 | fill: #a5b4fc; | <div className="fill-indigo-300"></div> |
fill-indigo-400 | fill: #818cf8; | <div className="fill-indigo-400"></div> |
fill-indigo-500 | fill: #6366f1; | <div className="fill-indigo-500"></div> |
fill-indigo-600 | fill: #4f46e5; | <div className="fill-indigo-600"></div> |
fill-indigo-700 | fill: #4338ca; | <div className="fill-indigo-700"></div> |
fill-indigo-800 | fill: #3730a3; | <div className="fill-indigo-800"></div> |
fill-indigo-900 | fill: #312e81; | <div className="fill-indigo-900"></div> |
fill-indigo-950 | fill: #1e1b4b; | <div className="fill-indigo-950"></div> |
fill-violet-50 | fill: #f5f3ff; | <div className="fill-violet-50"></div> |
fill-violet-100 | fill: #ede9fe; | <div className="fill-violet-100"></div> |
fill-violet-200 | fill: #ddd6fe; | <div className="fill-violet-200"></div> |
fill-violet-300 | fill: #c4b5fd; | <div className="fill-violet-300"></div> |
fill-violet-400 | fill: #a78bfa; | <div className="fill-violet-400"></div> |
fill-violet-500 | fill: #8b5cf6; | <div className="fill-violet-500"></div> |
fill-violet-600 | fill: #7c3aed; | <div className="fill-violet-600"></div> |
fill-violet-700 | fill: #6d28d9; | <div className="fill-violet-700"></div> |
fill-violet-800 | fill: #5b21b6; | <div className="fill-violet-800"></div> |
fill-violet-900 | fill: #4c1d95; | <div className="fill-violet-900"></div> |
fill-violet-950 | fill: #2e1065; | <div className="fill-violet-950"></div> |
fill-purple-50 | fill: #faf5ff; | <div className="fill-purple-50"></div> |
fill-purple-100 | fill: #f3e8ff; | <div className="fill-purple-100"></div> |
fill-purple-200 | fill: #e9d5ff; | <div className="fill-purple-200"></div> |
fill-purple-300 | fill: #d8b4fe; | <div className="fill-purple-300"></div> |
fill-purple-400 | fill: #c084fc; | <div className="fill-purple-400"></div> |
fill-purple-500 | fill: #a855f7; | <div className="fill-purple-500"></div> |
fill-purple-600 | fill: #9333ea; | <div className="fill-purple-600"></div> |
fill-purple-700 | fill: #7e22ce; | <div className="fill-purple-700"></div> |
fill-purple-800 | fill: #6b21a8; | <div className="fill-purple-800"></div> |
fill-purple-900 | fill: #581c87; | <div className="fill-purple-900"></div> |
fill-purple-950 | fill: #3b0764; | <div className="fill-purple-950"></div> |
fill-fuchsia-50 | fill: #fdf4ff; | <div className="fill-fuchsia-50"></div> |
fill-fuchsia-100 | fill: #fae8ff; | <div className="fill-fuchsia-100"></div> |
fill-fuchsia-200 | fill: #f5d0fe; | <div className="fill-fuchsia-200"></div> |
fill-fuchsia-300 | fill: #f0abfc; | <div className="fill-fuchsia-300"></div> |
fill-fuchsia-400 | fill: #e879f9; | <div className="fill-fuchsia-400"></div> |
fill-fuchsia-500 | fill: #d946ef; | <div className="fill-fuchsia-500"></div> |
fill-fuchsia-600 | fill: #c026d3; | <div className="fill-fuchsia-600"></div> |
fill-fuchsia-700 | fill: #a21caf; | <div className="fill-fuchsia-700"></div> |
fill-fuchsia-800 | fill: #86198f; | <div className="fill-fuchsia-800"></div> |
fill-fuchsia-900 | fill: #701a75; | <div className="fill-fuchsia-900"></div> |
fill-fuchsia-950 | fill: #4a044e; | <div className="fill-fuchsia-950"></div> |
fill-pink-50 | fill: #fdf2f8; | <div className="fill-pink-50"></div> |
fill-pink-100 | fill: #fce7f3; | <div className="fill-pink-100"></div> |
fill-pink-200 | fill: #fbcfe8; | <div className="fill-pink-200"></div> |
fill-pink-300 | fill: #f9a8d4; | <div className="fill-pink-300"></div> |
fill-pink-400 | fill: #f472b6; | <div className="fill-pink-400"></div> |
fill-pink-500 | fill: #ec4899; | <div className="fill-pink-500"></div> |
fill-pink-600 | fill: #db2777; | <div className="fill-pink-600"></div> |
fill-pink-700 | fill: #be185d; | <div className="fill-pink-700"></div> |
fill-pink-800 | fill: #9d174d; | <div className="fill-pink-800"></div> |
fill-pink-900 | fill: #831843; | <div className="fill-pink-900"></div> |
fill-pink-950 | fill: #500724; | <div className="fill-pink-950"></div> |
fill-rose-50 | fill: #fff1f2; | <div className="fill-rose-50"></div> |
fill-rose-100 | fill: #ffe4e6; | <div className="fill-rose-100"></div> |
fill-rose-200 | fill: #fecdd3; | <div className="fill-rose-200"></div> |
fill-rose-300 | fill: #fda4af; | <div className="fill-rose-300"></div> |
fill-rose-400 | fill: #fb7185; | <div className="fill-rose-400"></div> |
fill-rose-500 | fill: #f43f5e; | <div className="fill-rose-500"></div> |
fill-rose-600 | fill: #e11d48; | <div className="fill-rose-600"></div> |
fill-rose-700 | fill: #be123c; | <div className="fill-rose-700"></div> |
fill-rose-800 | fill: #9f1239; | <div className="fill-rose-800"></div> |
fill-rose-900 | fill: #881337; | <div className="fill-rose-900"></div> |
fill-rose-950 | fill: #4c0519; | <div className="fill-rose-950"></div> |
Overview of Fill
Adding the Fill
To add fill to the SVG, use fill-color-value utilities like fill-blue-400, fill-red-500, fill-pink-600, etc.
export default function App() { return <h1>Hello world</h1> }
States and Responsiveness
Tailwind's utility classes can be used for conditional states for interactivity and responsive designs. You can use state modifiers like sm, md, etc. for the states and responsive modifiers like sm, lg, etc. to target individual screens.
Hover and Focus States
You can conditionally adjust the fill values of SVGs when users interact with them. Below is a practical JSX illustration where the fill color changes on hover.
export default function App() { return <h1>Hello world</h1> }
Breakpoint Modifiers
Responsive designs often call for different styling based on screen size. Tailwind accommodates this by enabling breakpoint-specific fills directly in markup. Here’s an example:
export default function App() { return <h1>Hello world</h1> }
Custom Fill
While Tailwind CSS already provides a significant range of fill utilities, there might be cases where custom values are necessary. This section explains how to extend the Tailwind theme and use arbitrary values for unique styling requirements.
Extending the Theme
By customizing the theme.extend configuration in your tailwind.config.js, you can add custom SVG fills. Custom tokens are reusable, preserving design consistency.
Using the below configuration, you can use fill-brand-green in your code:
export default function App() { return <h1>Hello world</h1> }
Using Arbitrary Values
When precise control is needed without adding tokens to your theme, Tailwind's arbitrary values provide an efficient shortcut. Assign any valid CSS color to the fill property:
export default function App() { return <h1>Hello world</h1> }
Real World Examples
Interactive Social Share Buttons
A component that displays social media share buttons with dynamic fill colors on hover.
export default function App() { return <h1>Hello world</h1> }
Progress Timeline
A vertical timeline component with fill animations to show progress through different stages of a process.
export default function App() { return <h1>Hello world</h1> }
Interactive Feature Grid
A grid of feature cards with dynamic fill patterns that respond to hover.
export default function App() { return <h1>Hello world</h1> }
Interactive Menu Icons
A navbar component that features menu icons which change fill colors on hover.
export default function App() { return <h1>Hello world</h1> }
Feature Comparison Tiles
A grid of feature comparison tiles with dynamic fill states.
export default function App() { return <h1>Hello world</h1> }
Customization Examples
Gradient Fill Button Component
This example demonstrates how to create a custom gradient fill button with hover effects by extending the fill property in the theme configuration.
export default function App() { return <h1>Hello world</h1> }
Interactive Social Icon Fill
This example shows how to create animated social media icons with custom fill colors and hover states.
export default function App() { return <h1>Hello world</h1> }
Animated Progress Indicator
This example demonstrates a custom progress indicator with animated fill patterns and dynamic content.
export default function App() { return <h1>Hello world</h1> }
Best Practices
Maintain Design Consistency
Design consistency is vital when working with Tailwind CSS Fill utilities. By standardizing how and when you use Fill classes, you help create a unified experience that aligns well with the broader visual language of your application.
The first step to achieving this involves establishing style guidelines for your SVG elements. For example, you might define a specific set of brand colors for fills, such as fill-blue-500 or fill-red-600, and instruct your team to apply only those classes when working on icons or vector backgrounds.
When multiple team members contribute to the same project, consistent usage of Fill classes helps everyone quickly recognize and apply the correct styles.
Leverage Utility Combinations
You can achieve sophisticated designs by pairing Fill classes with complementary utilities such as stroke, stroke-width, rounded, shadow, and even responsive modifiers.
For example, if you want an icon to appear bolder and more prominent on larger screens, you could pair fill-* with stroke-1 lg:stroke-2, achieving a layered effect that adjusts with screen size.
By experimenting with different combinations, you can create designs that not only look polished but also adapt to various dimensions.
Accessibility Considerations
Enhance Readability and Navigability
Accessibility should guide every design decision, and the way you apply Fill to SVGs is no exception. Readability and navigability often depends upon the clarity of icons. Fill utilities can either improve or diminish accessibility based on how they’re applied.
Choosing distinct colors for fills that clearly contrast with backgrounds is essential to ensure that icons don’t blend into the page or become indistinguishable. Equally important is leveraging size classes alongside fill to confirm that icons are large enough to be recognized by individuals with limited vision.
Support Accessible Interactive Elements
Interactive elements—such as buttons, toggles, and hyperlinks—rely heavily on clear signaling to guide user actions. By using Fill utilities effectively, you can create visual cues that reinforce the interactive state of an element.
For instance, when designing an icon button, you could apply different fill colors for default and hover/focus states. This variation in color not only looks dynamic but also informs users that the element is clickable or otherwise interactive.
Debugging Common Issues
Resolve Common Problems
When working extensively with Tailwind CSS Fill utilities, you may encounter various unexpected behaviors. A straightforward way to begin debugging is to methodically remove or disable recently applied classes to isolate the cause of the anomaly.
For example, if an icon’s fill color is not updating, confirm that you’re using the correct utility (e.g., fill-red-500, fill-blue-500) and check for any conflicts with other color or stroke utilities. Sometimes, an inadvertently applied stroke class or misconfigured parent container can override the intended fill.
Iterative Testing and Maintenance
A rigorous approach to testing and maintenance helps prevent small fill-related changes from causing large-scale regressions elsewhere. When you introduce or modify Fill utilities, start by testing the impact on critical interface components, such as navigation menus, brand logos, and key interactive icons.
If possible, approach it systematically: open a local environment, verify that the icons still display correctly, then proceed through different breakpoints to confirm responsive design continuity. Commit changes in small, logical increments, to quickly identify which commit introduced a bug if a fill color or icon alignment breaks.