Tailwind CSS Outline Color
Outline color in CSS allows you to set the color of an outline around elements such as buttons, divs, or input fields. Unlike borders, which are part of the box model and affect layout, outlines do not occupy space and exist outside of the element’s dimensions.
Tailwind CSS provides a rich collection of utilities to easily manage outline colors without writing custom CSS for each implementation. With its class-based approach, you can quickly apply, modify, or conditionally update outline color properties in your application.
Class | Properties | Example |
---|---|---|
outline-inherit | outline-color: inherit; | <div className="outline-inherit"></div> |
outline-current | outline-color: currentColor; | <div className="outline-current"></div> |
outline-transparent | outline-color: transparent; | <div className="outline-transparent"></div> |
outline-black | outline-color: #000; | <div className="outline-black"></div> |
outline-white | outline-color: #fff; | <div className="outline-white"></div> |
outline-slate-50 | outline-color: #f8fafc; | <div className="outline-slate-50"></div> |
outline-slate-100 | outline-color: #f1f5f9; | <div className="outline-slate-100"></div> |
outline-slate-200 | outline-color: #e2e8f0; | <div className="outline-slate-200"></div> |
outline-slate-300 | outline-color: #cbd5e1; | <div className="outline-slate-300"></div> |
outline-slate-400 | outline-color: #94a3b8; | <div className="outline-slate-400"></div> |
outline-slate-500 | outline-color: #64748b; | <div className="outline-slate-500"></div> |
outline-slate-600 | outline-color: #475569; | <div className="outline-slate-600"></div> |
outline-slate-700 | outline-color: #334155; | <div className="outline-slate-700"></div> |
outline-slate-800 | outline-color: #1e293b; | <div className="outline-slate-800"></div> |
outline-slate-900 | outline-color: #0f172a; | <div className="outline-slate-900"></div> |
outline-slate-950 | outline-color: #020617; | <div className="outline-slate-950"></div> |
outline-gray-50 | outline-color: #f9fafb; | <div className="outline-gray-50"></div> |
outline-gray-100 | outline-color: #f3f4f6; | <div className="outline-gray-100"></div> |
outline-gray-200 | outline-color: #e5e7eb; | <div className="outline-gray-200"></div> |
outline-gray-300 | outline-color: #d1d5db; | <div className="outline-gray-300"></div> |
outline-gray-400 | outline-color: #9ca3af; | <div className="outline-gray-400"></div> |
outline-gray-500 | outline-color: #6b7280; | <div className="outline-gray-500"></div> |
outline-gray-600 | outline-color: #4b5563; | <div className="outline-gray-600"></div> |
outline-gray-700 | outline-color: #374151; | <div className="outline-gray-700"></div> |
outline-gray-800 | outline-color: #1f2937; | <div className="outline-gray-800"></div> |
outline-gray-900 | outline-color: #111827; | <div className="outline-gray-900"></div> |
outline-gray-950 | outline-color: #030712; | <div className="outline-gray-950"></div> |
outline-zinc-50 | outline-color: #fafafa; | <div className="outline-zinc-50"></div> |
outline-zinc-100 | outline-color: #f4f4f5; | <div className="outline-zinc-100"></div> |
outline-zinc-200 | outline-color: #e4e4e7; | <div className="outline-zinc-200"></div> |
outline-zinc-300 | outline-color: #d4d4d8; | <div className="outline-zinc-300"></div> |
outline-zinc-400 | outline-color: #a1a1aa; | <div className="outline-zinc-400"></div> |
outline-zinc-500 | outline-color: #71717a; | <div className="outline-zinc-500"></div> |
outline-zinc-600 | outline-color: #52525b; | <div className="outline-zinc-600"></div> |
outline-zinc-700 | outline-color: #3f3f46; | <div className="outline-zinc-700"></div> |
outline-zinc-800 | outline-color: #27272a; | <div className="outline-zinc-800"></div> |
outline-zinc-900 | outline-color: #18181b; | <div className="outline-zinc-900"></div> |
outline-zinc-950 | outline-color: #09090b; | <div className="outline-zinc-950"></div> |
outline-neutral-50 | outline-color: #fafafa; | <div className="outline-neutral-50"></div> |
outline-neutral-100 | outline-color: #f5f5f5; | <div className="outline-neutral-100"></div> |
outline-neutral-200 | outline-color: #e5e5e5; | <div className="outline-neutral-200"></div> |
outline-neutral-300 | outline-color: #d4d4d4; | <div className="outline-neutral-300"></div> |
outline-neutral-400 | outline-color: #a3a3a3; | <div className="outline-neutral-400"></div> |
outline-neutral-500 | outline-color: #737373; | <div className="outline-neutral-500"></div> |
outline-neutral-600 | outline-color: #525252; | <div className="outline-neutral-600"></div> |
outline-neutral-700 | outline-color: #404040; | <div className="outline-neutral-700"></div> |
outline-neutral-800 | outline-color: #262626; | <div className="outline-neutral-800"></div> |
outline-neutral-900 | outline-color: #171717; | <div className="outline-neutral-900"></div> |
outline-neutral-950 | outline-color: #0a0a0a; | <div className="outline-neutral-950"></div> |
outline-stone-50 | outline-color: #fafaf9; | <div className="outline-stone-50"></div> |
outline-stone-100 | outline-color: #f5f5f4; | <div className="outline-stone-100"></div> |
outline-stone-200 | outline-color: #e7e5e4; | <div className="outline-stone-200"></div> |
outline-stone-300 | outline-color: #d6d3d1; | <div className="outline-stone-300"></div> |
outline-stone-400 | outline-color: #a8a29e; | <div className="outline-stone-400"></div> |
outline-stone-500 | outline-color: #78716c; | <div className="outline-stone-500"></div> |
outline-stone-600 | outline-color: #57534e; | <div className="outline-stone-600"></div> |
outline-stone-700 | outline-color: #44403c; | <div className="outline-stone-700"></div> |
outline-stone-800 | outline-color: #292524; | <div className="outline-stone-800"></div> |
outline-stone-900 | outline-color: #1c1917; | <div className="outline-stone-900"></div> |
outline-stone-950 | outline-color: #0c0a09; | <div className="outline-stone-950"></div> |
outline-red-50 | outline-color: #fef2f2; | <div className="outline-red-50"></div> |
outline-red-100 | outline-color: #fee2e2; | <div className="outline-red-100"></div> |
outline-red-200 | outline-color: #fecaca; | <div className="outline-red-200"></div> |
outline-red-300 | outline-color: #fca5a5; | <div className="outline-red-300"></div> |
outline-red-400 | outline-color: #f87171; | <div className="outline-red-400"></div> |
outline-red-500 | outline-color: #ef4444; | <div className="outline-red-500"></div> |
outline-red-600 | outline-color: #dc2626; | <div className="outline-red-600"></div> |
outline-red-700 | outline-color: #b91c1c; | <div className="outline-red-700"></div> |
outline-red-800 | outline-color: #991b1b; | <div className="outline-red-800"></div> |
outline-red-900 | outline-color: #7f1d1d; | <div className="outline-red-900"></div> |
outline-red-950 | outline-color: #450a0a; | <div className="outline-red-950"></div> |
outline-orange-50 | outline-color: #fff7ed; | <div className="outline-orange-50"></div> |
outline-orange-100 | outline-color: #ffedd5; | <div className="outline-orange-100"></div> |
outline-orange-200 | outline-color: #fed7aa; | <div className="outline-orange-200"></div> |
outline-orange-300 | outline-color: #fdba74; | <div className="outline-orange-300"></div> |
outline-orange-400 | outline-color: #fb923c; | <div className="outline-orange-400"></div> |
outline-orange-500 | outline-color: #f97316; | <div className="outline-orange-500"></div> |
outline-orange-600 | outline-color: #ea580c; | <div className="outline-orange-600"></div> |
outline-orange-700 | outline-color: #c2410c; | <div className="outline-orange-700"></div> |
outline-orange-800 | outline-color: #9a3412; | <div className="outline-orange-800"></div> |
outline-orange-900 | outline-color: #7c2d12; | <div className="outline-orange-900"></div> |
outline-orange-950 | outline-color: #431407; | <div className="outline-orange-950"></div> |
outline-amber-50 | outline-color: #fffbeb; | <div className="outline-amber-50"></div> |
outline-amber-100 | outline-color: #fef3c7; | <div className="outline-amber-100"></div> |
outline-amber-200 | outline-color: #fde68a; | <div className="outline-amber-200"></div> |
outline-amber-300 | outline-color: #fcd34d; | <div className="outline-amber-300"></div> |
outline-amber-400 | outline-color: #fbbf24; | <div className="outline-amber-400"></div> |
outline-amber-500 | outline-color: #f59e0b; | <div className="outline-amber-500"></div> |
outline-amber-600 | outline-color: #d97706; | <div className="outline-amber-600"></div> |
outline-amber-700 | outline-color: #b45309; | <div className="outline-amber-700"></div> |
outline-amber-800 | outline-color: #92400e; | <div className="outline-amber-800"></div> |
outline-amber-900 | outline-color: #78350f; | <div className="outline-amber-900"></div> |
outline-amber-950 | outline-color: #451a03; | <div className="outline-amber-950"></div> |
outline-yellow-50 | outline-color: #fefce8; | <div className="outline-yellow-50"></div> |
outline-yellow-100 | outline-color: #fef9c3; | <div className="outline-yellow-100"></div> |
outline-yellow-200 | outline-color: #fef08a; | <div className="outline-yellow-200"></div> |
outline-yellow-300 | outline-color: #fde047; | <div className="outline-yellow-300"></div> |
outline-yellow-400 | outline-color: #facc15; | <div className="outline-yellow-400"></div> |
outline-yellow-500 | outline-color: #eab308; | <div className="outline-yellow-500"></div> |
outline-yellow-600 | outline-color: #ca8a04; | <div className="outline-yellow-600"></div> |
outline-yellow-700 | outline-color: #a16207; | <div className="outline-yellow-700"></div> |
outline-yellow-800 | outline-color: #854d0e; | <div className="outline-yellow-800"></div> |
outline-yellow-900 | outline-color: #713f12; | <div className="outline-yellow-900"></div> |
outline-yellow-950 | outline-color: #422006; | <div className="outline-yellow-950"></div> |
outline-lime-50 | outline-color: #f7fee7; | <div className="outline-lime-50"></div> |
outline-lime-100 | outline-color: #ecfccb; | <div className="outline-lime-100"></div> |
outline-lime-200 | outline-color: #d9f99d; | <div className="outline-lime-200"></div> |
outline-lime-300 | outline-color: #bef264; | <div className="outline-lime-300"></div> |
outline-lime-400 | outline-color: #a3e635; | <div className="outline-lime-400"></div> |
outline-lime-500 | outline-color: #84cc16; | <div className="outline-lime-500"></div> |
outline-lime-600 | outline-color: #65a30d; | <div className="outline-lime-600"></div> |
outline-lime-700 | outline-color: #4d7c0f; | <div className="outline-lime-700"></div> |
outline-lime-800 | outline-color: #3f6212; | <div className="outline-lime-800"></div> |
outline-lime-900 | outline-color: #365314; | <div className="outline-lime-900"></div> |
outline-lime-950 | outline-color: #1a2e05; | <div className="outline-lime-950"></div> |
outline-green-50 | outline-color: #f0fdf4; | <div className="outline-green-50"></div> |
outline-green-100 | outline-color: #dcfce7; | <div className="outline-green-100"></div> |
outline-green-200 | outline-color: #bbf7d0; | <div className="outline-green-200"></div> |
outline-green-300 | outline-color: #86efac; | <div className="outline-green-300"></div> |
outline-green-400 | outline-color: #4ade80; | <div className="outline-green-400"></div> |
outline-green-500 | outline-color: #22c55e; | <div className="outline-green-500"></div> |
outline-green-600 | outline-color: #16a34a; | <div className="outline-green-600"></div> |
outline-green-700 | outline-color: #15803d; | <div className="outline-green-700"></div> |
outline-green-800 | outline-color: #166534; | <div className="outline-green-800"></div> |
outline-green-900 | outline-color: #14532d; | <div className="outline-green-900"></div> |
outline-green-950 | outline-color: #052e16; | <div className="outline-green-950"></div> |
outline-emerald-50 | outline-color: #ecfdf5; | <div className="outline-emerald-50"></div> |
outline-emerald-100 | outline-color: #d1fae5; | <div className="outline-emerald-100"></div> |
outline-emerald-200 | outline-color: #a7f3d0; | <div className="outline-emerald-200"></div> |
outline-emerald-300 | outline-color: #6ee7b7; | <div className="outline-emerald-300"></div> |
outline-emerald-400 | outline-color: #34d399; | <div className="outline-emerald-400"></div> |
outline-emerald-500 | outline-color: #10b981; | <div className="outline-emerald-500"></div> |
outline-emerald-600 | outline-color: #059669; | <div className="outline-emerald-600"></div> |
outline-emerald-700 | outline-color: #047857; | <div className="outline-emerald-700"></div> |
outline-emerald-800 | outline-color: #065f46; | <div className="outline-emerald-800"></div> |
outline-emerald-900 | outline-color: #064e3b; | <div className="outline-emerald-900"></div> |
outline-emerald-950 | outline-color: #022c22; | <div className="outline-emerald-950"></div> |
outline-teal-50 | outline-color: #f0fdfa; | <div className="outline-teal-50"></div> |
outline-teal-100 | outline-color: #ccfbf1; | <div className="outline-teal-100"></div> |
outline-teal-200 | outline-color: #99f6e4; | <div className="outline-teal-200"></div> |
outline-teal-300 | outline-color: #5eead4; | <div className="outline-teal-300"></div> |
outline-teal-400 | outline-color: #2dd4bf; | <div className="outline-teal-400"></div> |
outline-teal-500 | outline-color: #14b8a6; | <div className="outline-teal-500"></div> |
outline-teal-600 | outline-color: #0d9488; | <div className="outline-teal-600"></div> |
outline-teal-700 | outline-color: #0f766e; | <div className="outline-teal-700"></div> |
outline-teal-800 | outline-color: #115e59; | <div className="outline-teal-800"></div> |
outline-teal-900 | outline-color: #134e4a; | <div className="outline-teal-900"></div> |
outline-teal-950 | outline-color: #042f2e; | <div className="outline-teal-950"></div> |
outline-cyan-50 | outline-color: #ecfeff; | <div className="outline-cyan-50"></div> |
outline-cyan-100 | outline-color: #cffafe; | <div className="outline-cyan-100"></div> |
outline-cyan-200 | outline-color: #a5f3fc; | <div className="outline-cyan-200"></div> |
outline-cyan-300 | outline-color: #67e8f9; | <div className="outline-cyan-300"></div> |
outline-cyan-400 | outline-color: #22d3ee; | <div className="outline-cyan-400"></div> |
outline-cyan-500 | outline-color: #06b6d4; | <div className="outline-cyan-500"></div> |
outline-cyan-600 | outline-color: #0891b2; | <div className="outline-cyan-600"></div> |
outline-cyan-700 | outline-color: #0e7490; | <div className="outline-cyan-700"></div> |
outline-cyan-800 | outline-color: #155e75; | <div className="outline-cyan-800"></div> |
outline-cyan-900 | outline-color: #164e63; | <div className="outline-cyan-900"></div> |
outline-cyan-950 | outline-color: #083344; | <div className="outline-cyan-950"></div> |
outline-sky-50 | outline-color: #f0f9ff; | <div className="outline-sky-50"></div> |
outline-sky-100 | outline-color: #e0f2fe; | <div className="outline-sky-100"></div> |
outline-sky-200 | outline-color: #bae6fd; | <div className="outline-sky-200"></div> |
outline-sky-300 | outline-color: #7dd3fc; | <div className="outline-sky-300"></div> |
outline-sky-400 | outline-color: #38bdf8; | <div className="outline-sky-400"></div> |
outline-sky-500 | outline-color: #0ea5e9; | <div className="outline-sky-500"></div> |
outline-sky-600 | outline-color: #0284c7; | <div className="outline-sky-600"></div> |
outline-sky-700 | outline-color: #0369a1; | <div className="outline-sky-700"></div> |
outline-sky-800 | outline-color: #075985; | <div className="outline-sky-800"></div> |
outline-sky-900 | outline-color: #0c4a6e; | <div className="outline-sky-900"></div> |
outline-sky-950 | outline-color: #082f49; | <div className="outline-sky-950"></div> |
outline-blue-50 | outline-color: #eff6ff; | <div className="outline-blue-50"></div> |
outline-blue-100 | outline-color: #dbeafe; | <div className="outline-blue-100"></div> |
outline-blue-200 | outline-color: #bfdbfe; | <div className="outline-blue-200"></div> |
outline-blue-300 | outline-color: #93c5fd; | <div className="outline-blue-300"></div> |
outline-blue-400 | outline-color: #60a5fa; | <div className="outline-blue-400"></div> |
outline-blue-500 | outline-color: #3b82f6; | <div className="outline-blue-500"></div> |
outline-blue-600 | outline-color: #2563eb; | <div className="outline-blue-600"></div> |
outline-blue-700 | outline-color: #1d4ed8; | <div className="outline-blue-700"></div> |
outline-blue-800 | outline-color: #1e40af; | <div className="outline-blue-800"></div> |
outline-blue-900 | outline-color: #1e3a8a; | <div className="outline-blue-900"></div> |
outline-blue-950 | outline-color: #172554; | <div className="outline-blue-950"></div> |
outline-indigo-50 | outline-color: #eef2ff; | <div className="outline-indigo-50"></div> |
outline-indigo-100 | outline-color: #e0e7ff; | <div className="outline-indigo-100"></div> |
outline-indigo-200 | outline-color: #c7d2fe; | <div className="outline-indigo-200"></div> |
outline-indigo-300 | outline-color: #a5b4fc; | <div className="outline-indigo-300"></div> |
outline-indigo-400 | outline-color: #818cf8; | <div className="outline-indigo-400"></div> |
outline-indigo-500 | outline-color: #6366f1; | <div className="outline-indigo-500"></div> |
outline-indigo-600 | outline-color: #4f46e5; | <div className="outline-indigo-600"></div> |
outline-indigo-700 | outline-color: #4338ca; | <div className="outline-indigo-700"></div> |
outline-indigo-800 | outline-color: #3730a3; | <div className="outline-indigo-800"></div> |
outline-indigo-900 | outline-color: #312e81; | <div className="outline-indigo-900"></div> |
outline-indigo-950 | outline-color: #1e1b4b; | <div className="outline-indigo-950"></div> |
outline-violet-50 | outline-color: #f5f3ff; | <div className="outline-violet-50"></div> |
outline-violet-100 | outline-color: #ede9fe; | <div className="outline-violet-100"></div> |
outline-violet-200 | outline-color: #ddd6fe; | <div className="outline-violet-200"></div> |
outline-violet-300 | outline-color: #c4b5fd; | <div className="outline-violet-300"></div> |
outline-violet-400 | outline-color: #a78bfa; | <div className="outline-violet-400"></div> |
outline-violet-500 | outline-color: #8b5cf6; | <div className="outline-violet-500"></div> |
outline-violet-600 | outline-color: #7c3aed; | <div className="outline-violet-600"></div> |
outline-violet-700 | outline-color: #6d28d9; | <div className="outline-violet-700"></div> |
outline-violet-800 | outline-color: #5b21b6; | <div className="outline-violet-800"></div> |
outline-violet-900 | outline-color: #4c1d95; | <div className="outline-violet-900"></div> |
outline-violet-950 | outline-color: #2e1065; | <div className="outline-violet-950"></div> |
outline-purple-50 | outline-color: #faf5ff; | <div className="outline-purple-50"></div> |
outline-purple-100 | outline-color: #f3e8ff; | <div className="outline-purple-100"></div> |
outline-purple-200 | outline-color: #e9d5ff; | <div className="outline-purple-200"></div> |
outline-purple-300 | outline-color: #d8b4fe; | <div className="outline-purple-300"></div> |
outline-purple-400 | outline-color: #c084fc; | <div className="outline-purple-400"></div> |
outline-purple-500 | outline-color: #a855f7; | <div className="outline-purple-500"></div> |
outline-purple-600 | outline-color: #9333ea; | <div className="outline-purple-600"></div> |
outline-purple-700 | outline-color: #7e22ce; | <div className="outline-purple-700"></div> |
outline-purple-800 | outline-color: #6b21a8; | <div className="outline-purple-800"></div> |
outline-purple-900 | outline-color: #581c87; | <div className="outline-purple-900"></div> |
outline-purple-950 | outline-color: #3b0764; | <div className="outline-purple-950"></div> |
outline-fuchsia-50 | outline-color: #fdf4ff; | <div className="outline-fuchsia-50"></div> |
outline-fuchsia-100 | outline-color: #fae8ff; | <div className="outline-fuchsia-100"></div> |
outline-fuchsia-200 | outline-color: #f5d0fe; | <div className="outline-fuchsia-200"></div> |
outline-fuchsia-300 | outline-color: #f0abfc; | <div className="outline-fuchsia-300"></div> |
outline-fuchsia-400 | outline-color: #e879f9; | <div className="outline-fuchsia-400"></div> |
outline-fuchsia-500 | outline-color: #d946ef; | <div className="outline-fuchsia-500"></div> |
outline-fuchsia-600 | outline-color: #c026d3; | <div className="outline-fuchsia-600"></div> |
outline-fuchsia-700 | outline-color: #a21caf; | <div className="outline-fuchsia-700"></div> |
outline-fuchsia-800 | outline-color: #86198f; | <div className="outline-fuchsia-800"></div> |
outline-fuchsia-900 | outline-color: #701a75; | <div className="outline-fuchsia-900"></div> |
outline-fuchsia-950 | outline-color: #4a044e; | <div className="outline-fuchsia-950"></div> |
outline-pink-50 | outline-color: #fdf2f8; | <div className="outline-pink-50"></div> |
outline-pink-100 | outline-color: #fce7f3; | <div className="outline-pink-100"></div> |
outline-pink-200 | outline-color: #fbcfe8; | <div className="outline-pink-200"></div> |
outline-pink-300 | outline-color: #f9a8d4; | <div className="outline-pink-300"></div> |
outline-pink-400 | outline-color: #f472b6; | <div className="outline-pink-400"></div> |
outline-pink-500 | outline-color: #ec4899; | <div className="outline-pink-500"></div> |
outline-pink-600 | outline-color: #db2777; | <div className="outline-pink-600"></div> |
outline-pink-700 | outline-color: #be185d; | <div className="outline-pink-700"></div> |
outline-pink-800 | outline-color: #9d174d; | <div className="outline-pink-800"></div> |
outline-pink-900 | outline-color: #831843; | <div className="outline-pink-900"></div> |
outline-pink-950 | outline-color: #500724; | <div className="outline-pink-950"></div> |
outline-rose-50 | outline-color: #fff1f2; | <div className="outline-rose-50"></div> |
outline-rose-100 | outline-color: #ffe4e6; | <div className="outline-rose-100"></div> |
outline-rose-200 | outline-color: #fecdd3; | <div className="outline-rose-200"></div> |
outline-rose-300 | outline-color: #fda4af; | <div className="outline-rose-300"></div> |
outline-rose-400 | outline-color: #fb7185; | <div className="outline-rose-400"></div> |
outline-rose-500 | outline-color: #f43f5e; | <div className="outline-rose-500"></div> |
outline-rose-600 | outline-color: #e11d48; | <div className="outline-rose-600"></div> |
outline-rose-700 | outline-color: #be123c; | <div className="outline-rose-700"></div> |
outline-rose-800 | outline-color: #9f1239; | <div className="outline-rose-800"></div> |
outline-rose-900 | outline-color: #881337; | <div className="outline-rose-900"></div> |
outline-rose-950 | outline-color: #4c0519; | <div className="outline-rose-950"></div> |
Overview of Outline Color
Adding the Outline Color
To add an outline color, use outline-color-value
utilities, e.g., outline-rose-900
.
export default function OutlineButton() { return ( <div className="flex items-center justify-center h-screen w-screen bg-gray-50"> {/* Full-screen container */} <button className="outline outline-4 outline-blue-500 p-4 rounded-md"> Button with outline color </button> </div> ); }
Adjusting with Opacity
You can control the opacity of the outline color using Tailwind’s opacity
modifiers. To use it, append the opacity to the outline color utility, e.g., outline-rose-900/50
.
export default function OutlineWithOpacity() { return ( <div className="flex items-center justify-center h-screen w-screen bg-gray-50"> <input type="text" placeholder="Type here" className="outline outline-4 outline-indigo-600/60 outline-opacity-50 p-3 rounded-md" /> </div> ); }
States and Responsiveness
Hover and Focus States
Tailwind utilities shine when applying styles conditionally, especially during state transitions like hover or focus. The hover
and focus
modifiers enable developers to define outline colors dynamically.
export default function StatefulOutline() { return ( <div className="flex items-center justify-center h-screen w-screen bg-gray-50"> <button className="p-4 rounded-md outline outline-2 outline-gray-400 hover:outline-blue-500 focus:outline-green-500 transition-all"> Hover/Focus on Me </button> </div> ); }
Breakpoint Modifiers
You can also use Tailwind’s responsive design modifiers to implement outline colors with media queries. This allows the outline color to dynamically adapt based on screen sizes.
export default function ResponsiveOutline() { return ( <div className="flex flex-col items-center justify-center h-screen w-screen bg-gray-50"> <span className="outline outline-2 outline-red-400 sm:outline-green-500 md:outline-blue-600 lg:outline-purple-700 xl:outline-yellow-500 p-4 rounded-md"> Resize the browser to see outline color change! </span> </div> ); }
Custom Outline Color
Extending the Theme
While Tailwind’s default palette is extensive, there are times when you require a custom outline color. By extending your Tailwind configuration file, you can add custom colors. Once added, use these custom colors as follows:
import tailwindConfig from "./tailwind.config.js"; tailwind.config = tailwindConfig; export default function CustomColorOutline() { return ( <div className="flex items-center justify-center h-screen w-screen bg-gray-50"> <button className="outline outline-4 outline-custom-teal hover:outline-soft-pink p-4 rounded-lg"> Custom Teal Outline </button> </div> ); }
Using Arbitrary Values
For absolute flexibility, Tailwind supports arbitrary values. This feature allows you to specify a custom outline color without defining it in the configuration:
export default function ArbitraryOutline() { return ( <div className="flex flex-col items-center justify-center h-screen w-screen bg-gray-900 space-y-4 text-white"> <div className="outline outline-2 outline-[#F0A202] p-3 rounded-md"> Hexadecimal Outline (#F0A202) </div> <div className="outline outline-2 outline-[rgb(123,104,238)] p-3 rounded-md"> RGB Outline (123, 104, 238) </div> <div className="outline outline-2 outline-[hsl(180,100%,30%)] p-3 rounded-md"> HSL Outline (180, 100%, 30%) </div> </div> ); }
Real World Examples
Product Card Grid with Focus Outlines
This example shows a grid of product cards with custom outline colors on focus for accessibility.
export default function ProductGrid() { const products = [ { id: 1, name: "Leather Backpack", price: "$129.99", src: "https://images.unsplash.com/photo-1548036328-c9fa89d128fa", alt: "Brown leather backpack" }, { id: 2, name: "Wireless Headphones", price: "$199.99", src: "https://images.unsplash.com/photo-1505740420928-5e560c06d30e", alt: "Black wireless headphones" }, { id: 3, name: "Smart Watch", price: "$299.99", src: "https://images.unsplash.com/photo-1523275335684-37898b6baf30", alt: "Modern smartwatch" }, { id: 4, name: "Camera Lens", price: "$449.99", src: "https://images.unsplash.com/photo-1516035069371-29a1b244cc32", alt: "Professional camera lens" }, { id: 5, name: "Mechanical Keyboard", price: "$159.99", src: "https://images.unsplash.com/photo-1511467687858-23d96c32e4ae", alt: "RGB mechanical keyboard" }, { id: 6, name: "Gaming Mouse", price: "$79.99", src: "https://images.unsplash.com/photo-1527814050087-3793815479db", alt: "Gaming mouse with RGB lighting" } ]; return ( <div className="grid grid-cols-1 gap-6 p-8"> {products.map((product) => ( <div key={product.id} className="group relative rounded-lg p-4 transition-all hover:shadow-lg focus-within:outline focus-within:outline-blue-500" tabIndex="0" > <img src={product.src} alt={product.alt} className="h-48 w-full object-cover rounded-md" /> <h3 className="mt-4 text-lg font-semibold">{product.name}</h3> <p className="text-gray-600">{product.price}</p> </div> ))} </div> ); }
Navigation Menu with Active State Outlines
This example demonstrates a navigation menu with outline colors indicating active states.
export default function NavigationMenu() { const menuItems = [ { id: 1, name: "Dashboard", active: true }, { id: 2, name: "Analytics", active: false }, { id: 3, name: "Customers", active: false }, { id: 4, name: "Inventory", active: false }, { id: 5, name: "Settings", active: false }, { id: 6, name: "Support", active: false } ]; return ( <nav className="bg-gray-800 p-4"> <ul className="flex space-x-4"> {menuItems.map((item) => ( <li key={item.id}> <a href="#" className={`px-4 py-2 rounded-md text-white ${ item.active ? "outline outline-2 outline-yellow-400" : "hover:outline hover:outline-2 hover:outline-gray-400" }`} > {item.name} </a> </li> ))} </ul> </nav> ); }
Form Input Fields with Validation Outlines
This example shows form inputs with different outline colors based on validation states.
export default function ContactForm() { const fields = [ { id: 1, name: "name", label: "Full Name", type: "text", state: "default" }, { id: 2, name: "email", label: "Email", type: "email", state: "error" }, { id: 3, name: "phone", label: "Phone", type: "tel", state: "success" }, { id: 4, name: "company", label: "Company", type: "text", state: "default" }, { id: 5, name: "message", label: "Message", type: "textarea", state: "default" }, { id: 6, name: "subject", label: "Subject", type: "text", state: "warning" } ]; return ( <form className="max-w-2xl mx-auto p-6 space-y-4"> {fields.map((field) => ( <div key={field.id} className="flex flex-col"> <label className="mb-2 text-sm font-medium">{field.label}</label> {field.type === "textarea" ? ( <textarea className={`p-3 rounded-lg border ${ field.state === "error" ? "outline outline-2 outline-red-500" : field.state === "success" ? "outline outline-2 outline-green-500" : field.state === "warning" ? "outline outline-2 outline-yellow-500" : "focus:outline focus:outline-2 focus:outline-blue-500" }`} rows="4" /> ) : ( <input type={field.type} className={`p-3 rounded-lg border ${ field.state === "error" ? "outline outline-2 outline-red-500" : field.state === "success" ? "outline outline-2 outline-green-500" : field.state === "warning" ? "outline outline-2 outline-yellow-500" : "focus:outline focus:outline-2 focus:outline-blue-500" }`} /> )} </div> ))} </form> ); }
Team Member Cards with Interactive Outlines
This example displays team member cards with interactive outline effects.
export default function TeamGrid() { const team = [ { id: 1, name: "Sarah Johnson", role: "CEO", src: "https://images.unsplash.com/photo-1438761681033-6461ffad8d80", alt: "Sarah Johnson profile picture" }, { id: 2, name: "Michael Chen", role: "CTO", src: "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e", alt: "Michael Chen profile picture" }, { id: 3, name: "Emma Williams", role: "Design Director", src: "https://images.unsplash.com/photo-1494790108377-be9c29b29330", alt: "Emma Williams profile picture" }, { id: 4, name: "David Kim", role: "Lead Developer", src: "https://images.unsplash.com/photo-1500648767791-00dcc994a43e", alt: "David Kim profile picture" }, { id: 5, name: "Lisa Martinez", role: "Product Manager", src: "https://images.unsplash.com/photo-1534528741775-53994a69daeb", alt: "Lisa Martinez profile picture" }, { id: 6, name: "James Wilson", role: "Marketing Head", src: "https://images.unsplash.com/photo-1519345182560-3f2917c472ef", alt: "James Wilson profile picture" } ]; return ( <div className="grid grid-cols-1 gap-8 p-10"> {team.map((member) => ( <div key={member.id} className="group relative rounded-xl p-6 transition-all hover:outline hover:outline-2 hover:outline-purple-400 focus-within:outline-purple-600" > <img src={member.src} alt={member.alt} className="w-32 h-32 rounded-full mx-auto mb-4 object-cover" /> <h3 className="text-xl font-bold text-center">{member.name}</h3> <p className="text-gray-600 text-center">{member.role}</p> </div> ))} </div> ); }
Feature Cards with Hover Outlines
This example shows feature cards with outline colors on hover.
export default function FeatureGrid() { const features = [ { id: 1, title: "Cloud Storage", description: "Secure and scalable storage solutions", icon: "https://images.unsplash.com/photo-1516156008625-3a9d6067fab5", color: "blue" }, { id: 2, title: "Analytics", description: "Advanced data insights and reporting", icon: "https://images.unsplash.com/photo-1551288049-bebda4e38f71", color: "green" }, { id: 3, title: "Security", description: "Enterprise-grade protection", icon: "https://images.unsplash.com/photo-1562813733-b31f71025d54", color: "red" }, { id: 4, title: "Integration", description: "Seamless third-party connections", icon: "https://images.unsplash.com/photo-1451187580459-43490279c0fa", color: "purple" }, { id: 5, title: "Automation", description: "Streamlined workflow processes", icon: "https://images.unsplash.com/photo-1518432031352-d6fc5c10da5a", color: "orange" }, { id: 6, title: "Support", description: "24/7 dedicated customer service", icon: "https://images.unsplash.com/photo-1549923746-c502d488b3ea", color: "teal" } ]; return ( <div className="grid grid-cols-1 gap-6 p-8"> {features.map((feature) => ( <div key={feature.id} className={`p-6 rounded-lg transition-all hover:outline hover:outline-2 hover:outline-${feature.color}-500`} > <img src={feature.icon} alt="" className="w-16 h-16 object-cover rounded-full mb-4" /> <h3 className="text-xl font-bold mb-2">{feature.title}</h3> <p className="text-gray-600">{feature.description}</p> </div> ))} </div> ); }
Customization Examples
Custom Outline Color for Interactive Form Elements
This example demonstrates how to create a custom outline color scheme for form elements with enhanced focus states.
// App.js import tailwindConfig from "./tailwind.config.js"; tailwind.config = tailwindConfig; export default function CustomFormOutline() { return ( <div className="min-h-screen bg-gray-50 p-8"> <form className="max-w-md mx-auto space-y-6 bg-white p-8 rounded-xl shadow-lg"> <div className="space-y-2"> <label className="block text-gray-700 font-medium"> Username </label> <input type="text" className="w-full px-4 py-2 border rounded-lg focus:outline focus:outline-custom focus:outline-2 transition-all" placeholder="Enter username" /> </div> <div className="space-y-2"> <label className="block text-gray-700 font-medium"> Password </label> <input type="password" className="w-full px-4 py-2 border rounded-lg focus:outline focus:outline-custom focus:outline-2 transition-all" placeholder="Enter password" /> </div> </form> </div> ) }
Interactive Card with Custom Outline Hover Effect
This example shows how to implement a custom outline color for interactive cards with hover states.
// App.js import tailwindConfig from "./tailwind.config.js"; tailwind.config = tailwindConfig; export default function FeatureCard() { return ( <div className="min-h-screen bg-gray-100 p-8"> <div className="max-w-4xl mx-auto grid grid-cols-1 md:grid-cols-2 gap-6"> <div className="group bg-white p-6 rounded-xl hover:outline hover:outline-2 hover:outline-feature transition-all duration-300"> <img src="https://images.unsplash.com/photo-1498050108023-c5249f4df085" alt="Feature" className="w-full h-48 object-cover rounded-lg mb-4" /> <h3 className="text-xl font-bold text-gray-800 mb-2"> Development Tools </h3> <p className="text-gray-600"> Enhance your workflow with our powerful development tools and features. </p> </div> <div className="group bg-white p-6 rounded-xl hover:outline hover:outline-2 hover:outline-feature transition-all duration-300"> <img src="https://images.unsplash.com/photo-1461749280684-dccba630e2f6" alt="Feature" className="w-full h-48 object-cover rounded-lg mb-4" /> <h3 className="text-xl font-bold text-gray-800 mb-2"> Cloud Solutions </h3> <p className="text-gray-600"> Scale your applications with our robust cloud infrastructure. </p> </div> </div> </div> ) }
Event Schedule Timeline with Progress Outline
This example demonstrates how to implement a custom outline color for interactive cards with focus states.
// App.js import tailwindConfig from "./tailwind.config.js"; tailwind.config = tailwindConfig; import React, { useState } from 'react'; const EventTimeline = () => { const [selectedEvent, setSelectedEvent] = useState(null); const events = [ { id: 1, time: '09:00 AM', title: 'Opening Keynote', location: 'Main Hall', status: 'past' }, { id: 2, time: '10:30 AM', title: 'Future of AI Panel', location: 'Innovation Room', status: 'past' }, { id: 3, time: '01:00 PM', title: 'Networking Lunch', location: 'Garden Area', status: 'current' }, { id: 4, time: '02:30 PM', title: 'Workshop Sessions', location: 'Break-out Rooms', status: 'upcoming' } ]; const getStatusStyles = (status) => { switch(status) { case 'past': return 'outline-past'; case 'current': return 'outline-current'; case 'upcoming': return 'outline-upcoming'; default: return 'outline-gray-200'; } }; return ( <div className="w-full max-w-[450px] bg-white p-4"> <div className="space-y-4"> {events.map((event) => ( <div key={event.id} className={`rounded-lg bg-gray-50 p-4 cursor-pointer transition-all ${selectedEvent === event.id ? `outline outline-2 ${getStatusStyles(event.status)}` : ''} `} onClick={() => setSelectedEvent(event.id === selectedEvent ? null : event.id)} > <h3 className="text-xl font-semibold mb-2">{event.title}</h3> <div className="flex items-center text-gray-600 mb-2"> <span className="font-mono">{event.time}</span> <span className="mx-2">•</span> <div className="flex items-center"> <svg className="w-4 h-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" > <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" /> <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15 11a3 3 0 11-6 0 3 3 0 016 0z" /> </svg> {event.location} </div> </div> {selectedEvent === event.id && ( <div className="flex justify-between mt-4"> <button className="px-4 py-2 bg-white rounded-lg shadow hover:shadow-md transition-shadow"> Add to Calendar </button> <button className="px-4 py-2 bg-white rounded-lg shadow hover:shadow-md transition-shadow"> Set Reminder </button> </div> )} </div> ))} </div> </div> ); }; export default EventTimeline;
Best Practices
Maintain Design Consistency
Consistency is crucial in creating professional interfaces. To achieve uniformity using Tailwind CSS outline color utilities, ensure that all outline styles, such as thickness (outline-*
), colors (outline-color-*
), and opacity levels (outline-opacity-*
), align with your brand guidelines and project color palette.
For instance, if your project utilizes a specific blue for primary actions, ensure all focus states and hover outlines mirror this shade for consistency. By standardizing utilities, designers can avoid style fragmentation and improve the understandability of components across teams.
Leverage Utility Combinations
When working with Outline Color, consider pairing it with complementary utilities such as outline-offset
, outline-width
, and rounded
to create polished and visually appealing UI components. For example, using outline-red-500
, outline-offset-2
, and rounded-md
together can create a prominent focus state for form inputs that feels modern and accessible.
Use state modifiers to enhance interactivity. For example, you can use hover:outline-blue-600
or focus:outline-green-500
to change the outline color dynamically based on user actions. This adds depth to your interface and improves usability by providing clear feedback to users.
Accessibility Considerations
Enhance Readability and Navigability
Outline colors can significantly impact how easily users can read and navigate content. By applying a distinct outline to critical interactive elements, you help users quickly identify which parts of the page are actionable.
This visual indicator is especially important for individuals who rely on clear, differentiated states to move through an interface. In addition, consider how the outline color contrasts with the background or text. Dark outlines on dark backgrounds can reduce visibility, so lighter or more contrasting shades might be necessary.
Effective outlines should align with established accessibility guidelines, which emphasize clarity and a consistent user experience.
Ensure Keyboard Accessibility
Keyboard accessibility ensures that users who navigate primarily via keyboard can move through an interface with ease. Applying an outline color to focused elements is one of the most straightforward ways to make keyboard navigation clear.
When users press the Tab key to jump between interactive components—such as links, buttons, or form fields—a distinct outline color highlights their current position.
Check the below example to know how outline color can be used with the focus modifier to build keyboard-interactive UIs:
export default function KeyboardNavigationMenu() { return ( <nav className="bg-gray-800 p-4"> <ul className="flex space-x-4"> <li> <a href="#" className="text-white px-4 py-2 rounded-md focus:outline focus:outline-green-500 focus:outline-2" > Home </a> </li> <li> <a href="#" className="text-white px-4 py-2 rounded-md focus:outline focus:outline-green-500 focus:outline-2" > Services </a> </li> <li> <a href="#" className="text-white px-4 py-2 rounded-md focus:outline focus:outline-green-500 focus:outline-2" > Contact </a> </li> </ul> </nav> ); }
Debugging Common Issues
Resolve Common Problems
Issues such as outline not appearing at the expected offset, or failing to show up altogether often arise. The key to addressing these issues lies in a systematic troubleshooting approach.
First, confirm that the element in question is truly focusable or interactive. If an outline is supposed to show on focus, but the element can’t receive focus in the DOM (e.g., a div without a tabindex), no outline will appear. Add an appropriate attribute or change the element to a button or link if it’s meant to be interactive.
Second, check for conflicting classes. For example, if multiple border utilities are applied (like border-2
border-blue-500
alongside an outline class), the combined effect could appear jarring or overshadow the outline.
Third, verify that your color classes are spelled correctly. Typos in utility classes—like outlne-blue-500
instead of outline-blue-500
can be deceptively easy to miss.
Systematically removing these small mistakes from your code can save hours of debugging frustration.
Isolate Utility Conflicts
Tailwind CSS is powerful, but with so many utility classes at your disposal, it’s possible to inadvertently introduce conflicts.
For example, you might apply both outline-gray-500
and outline-blue-500
to the same element, or combine an outline with a ring utility like ring-red-500
, creating unexpected visual outcomes. Identifying and resolving these conflicts is crucial for maintaining a clean and predictable design system.
Begin by systematically reviewing each utility class attached to the problematic element. If two or more classes compete—for example, both set the outline color—you’ll need to decide which is the intended style. Remove any redundant or extraneous classes.