· 6 min read
The Ultimate Tailwind CSS Cheatsheet: Maximize Your Efficiency
A comprehensive Tailwind CSS reference that covers installation, core utilities, responsive patterns, configuration, plugins, performance tips, and common pitfalls - with examples and best practices to help you build faster and cleaner.
Why this cheatsheet
Tailwind CSS is a utility-first CSS framework that lets you build custom designs without leaving your HTML. Instead of writing bespoke CSS for each component, Tailwind provides a broad set of low-level utility classes that you can combine to create anything you want.
This guide is an in-depth cheatsheet: examples, patterns, config tips, common pitfalls, and quick references to make you faster and more confident with Tailwind.
Official docs referenced throughout: Tailwind CSS docs.
Quick start (install)
Minimal setup (PostCSS 8+, npm):
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
In your CSS entry point:
@tailwind base;
@tailwind components;
@tailwind utilities;
Set content paths in tailwind.config.js so unused utilities are removed in production:
module.exports = {
content: ['./src/**/*.{html,js,jsx,ts,tsx}'],
theme: { extend: {} },
plugins: [],
};
Docs: Installation • Content configuration
Core concepts (short)
- Utility-first: lots of small, composable classes like
p-4
,text-sm
,bg-blue-500
. - Responsive: prefix with breakpoints (
sm:
,md:
,lg:
). - State variants:
hover:
,focus:
,active:
,disabled:
. - JIT (default): generates utilities on demand, including arbitrary values like
w-[42px]
. - Configurable: extend
theme
and addplugins
in tailwind.config.js.
Docs: Responsive design • Variants & states
Practical examples
Basic card layout:
<div class="max-w-sm mx-auto bg-white shadow-md rounded-lg overflow-hidden">
<img class="w-full h-48 object-cover" src="/img.jpg" alt="" />
<div class="p-6">
<h3 class="text-lg font-semibold">Title</h3>
<p class="mt-2 text-sm text-gray-600">Description…</p>
<div class="mt-4 flex items-center justify-between">
<span class="text-gray-900 font-bold">$19</span>
<button
class="bg-blue-600 text-white px-4 py-2 rounded hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-300"
>
Buy
</button>
</div>
</div>
</div>
Responsive utilities example:
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4">
<!-- items -->
</div>
Arbitrary value example (JIT):
<div class="w-[42px] h-[42px] bg-[#1f2937] rounded-full"></div>
Using @apply
to extract repeated utilities:
/* styles/components.css */
.btn-primary {
@apply bg-blue-600 text-white px-4 py-2 rounded hover:bg-blue-700;
}
Note: @apply
works well for small components but can be misused to recreate large custom CSS systems - weigh pros/cons.
Docs: @apply
Configuration: tailwind.config.js essentials
Example minimal config with theme extension and custom screens:
module.exports = {
content: ['./src/**/*.{html,js,jsx,ts,tsx}'],
darkMode: 'class', // or 'media'
theme: {
extend: {
colors: {
brand: {
50: '#f5f7ff',
500: '#4f46e5',
700: '#3730a3',
},
},
spacing: {
72: '18rem',
84: '21rem',
},
},
screens: {
sm: '640px',
md: '768px',
lg: '1024px',
xl: '1280px',
},
},
plugins: [require('@tailwindcss/typography')],
};
Tips:
- Use
darkMode: 'class'
when you want explicit toggling with a.dark
class. - Extend rather than overwrite
theme
unless you intend to replace defaults.
Docs: Configuration • Dark mode
Plugins worth knowing
Official plugins make many things effortless:
- Typography (prose):
@tailwindcss/typography
- beautiful content styling. Typography plugin - Forms:
@tailwindcss/forms
- better default form element styling. Forms plugin - Aspect Ratio:
@tailwindcss/aspect-ratio
- handy for media embeds. Aspect-ratio plugin - Line Clamp:
@tailwindcss/line-clamp
- truncate text to N lines. Line-clamp plugin
Install and add to config plugins array.
Quick reference: commonly used utilities
Colors and background
- text:
text-sm
,text-base
,text-lg
,text-xl
- color:
text-gray-700
,text-white
- background:
bg-white
,bg-gray-100
,bg-blue-600
- opacity:
bg-opacity-50
,text-opacity-80
Spacing (margin / padding)
p-0
..p-64
,px-4
,py-2
,m-2
,mt-4
,-mt-1
- fractional/auto:
mx-auto
,my-0
- custom:
p-[10px]
(arbitrary JIT)
Typography
- font:
font-sans
,font-medium
,font-bold
- leading:
leading-none
,leading-tight
,leading-loose
- tracking:
tracking-tight
,tracking-wide
- text transform:
uppercase
,lowercase
,capitalize
Layout
- display:
block
,inline-block
,flex
,grid
- containers:
container mx-auto px-4
- width/height:
w-full
,w-1/2
,h-16
,max-w-xs
- object-fit:
object-cover
,object-center
Flexbox & Grid
- flex directions:
flex-row
,flex-col
- alignment:
items-center
,justify-between
- grid:
grid-cols-1
,grid-cols-3
,gap-4
Positioning & Z
relative
,absolute
,fixed
,inset-0
,top-0
,left-0
z-10
,z-50
Effects
- border/radius:
border
,border-gray-200
,rounded
,rounded-full
- shadow:
shadow-sm
,shadow-md
,shadow-lg
- transition:
transition
,duration-150
,ease-in-out
,transform
- transforms:
scale-95
,translate-y-1
,rotate-3
State/variants
hover:
,focus:
,active:
,disabled:
- group variants:
group
on parent +group-hover:opacity-100
on child - peer variants:
peer
andpeer-checked:…
for custom form interactions
Animations & key utilities
animate-spin
,animate-pulse
,animate-bounce
This section is intentionally a cheat-list; for full lists see: Utilities.
Advanced patterns & strategies
Component extraction
- Extract repeating groups of utilities into CSS classes with
@apply
. - Use semantic component names (e.g.,
.btn-primary
,.card
) to keep markup readable.
Using CSS variables for theming
- Combine Tailwind with CSS vars to make runtime theming easy.
:root {
--brand: theme('colors.blue.600');
}
.btn {
background-color: var(--brand);
}
But note: theme() is a build-time helper used in config or PostCSS context.
Responsive-first thinking
- Compose mobile-first with
sm:
,md:
etc. Start with base styles and add breakpoints.
Hybrid approach with component libraries
- Use Tailwind for layout and spacing, and headless UI (accessible components without styles) or component libraries (DaisyUI, Headless UI) for complex interactions.
Docs: Headless UI (separate project)
Performance & production builds
- Ensure
content
(formerly purge) paths in tailwind.config.js include all template files. If classes are missing in production, this is usually the culprit. - JIT mode (default) keeps build size small by only generating the classes you use.
- Safelist dynamically generated class names (e.g., from strings) in config when necessary:
module.exports = {
content: ['./src/**/*.{js,ts,jsx,tsx,html}'],
safelist: ['bg-red-500', 'text-green-500'],
};
Docs: Content configuration
Common pitfalls & how to avoid them
- Broken production CSS because
content
paths are incomplete. Fix: include all folders, templates, and component files (including node_modules if you use components shipped with classes). - Overuse of
@apply
to build big complex components -@apply
is great for small shared sets but can reintroduce a maintainability problem if overused. - Relying on long inline utility lists that become unreadable. Fix: extract into semantic classes or components.
- Conflicting specificity - utilities have low specificity, so adding custom CSS with higher specificity may override them unexpectedly. Use
!important
sparingly. - Not using semantic HTML - Tailwind is not a substitute for semantic structure and accessibility.
- Forgetting to restart dev server after changing
tailwind.config.js
in some setups. Restart the build process if classes aren’t appearing.
Accessibility & semantics
- Tailwind doesn’t change semantics - you must still:
- Use proper headings and landmarks
- Ensure focus states are visible (
focus:outline-none
is common but ensurefocus:ring
or similar replacement exists) - Use text color contrast checks (use accessible color pairs)
Tip: prefer focus-visible:
over focus:
for keyboard-only focus styles when appropriate.
Tooling & developer experience
- VS Code Tailwind CSS IntelliSense: autocompletion and class suggestions: IntelliSense extension
- Prettier plugin / class orderers: keep class order consistent. Use
prettier-plugin-tailwindcss
to sort classes automatically. - Tailwind Play (play.tailwindcss.com) for quick prototyping.
Example: Building a responsive navbar (small but complete)
<header class="bg-white shadow">
<div class="container mx-auto px-4 py-4 flex items-center justify-between">
<a href="#" class="text-xl font-bold">Brand</a>
<nav class="hidden md:flex space-x-6">
<a class="text-gray-600 hover:text-gray-900" href="#">Features</a>
<a class="text-gray-600 hover:text-gray-900" href="#">Pricing</a>
<a class="text-gray-600 hover:text-gray-900" href="#">Docs</a>
</nav>
<div class="md:hidden">
<!-- hamburger button -->
<button
class="p-2 rounded-md focus:outline-none focus:ring-2 focus:ring-inset focus:ring-blue-500"
>
<svg
class="w-6 h-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M4 6h16M4 12h16M4 18h16"
/>
</svg>
</button>
</div>
</div>
</header>
Handy tips to work smarter
- Use small, focused utility combos - keep markup readable.
- Extract repeated patterns into component classes with
@apply
or into framework components (React/Vue) that wrap class sets. - Use
class
composition helpers in JS frameworks (classnames/twMerge) to conditionally apply classes safely. - Keep tailwind.config.js organized - group custom colors, spacing, and screens logically.
- Use
theme('spacing.4')
ortheme()
in config/plugins for consistent values.
Resources: Configuration reference • Utilities list
Cheatsheet summary (one-liners)
- Add padding:
p-4
,px-2
,py-1
- Add margin:
m-4
,mt-2
,-ml-1
- Font sizing:
text-xs
,text-sm
,text-base
,text-lg
,text-2xl
- Color:
text-red-500
,bg-green-300
,border-blue-700
- Flex/Grid:
flex
,items-center
,justify-between
,grid
,grid-cols-3
- Width/height:
w-full
,w-1/4
,h-8
,min-h-screen
- Round & shadow:
rounded
,rounded-full
,shadow-md
- Responsive prefixes:
sm:
,md:
,lg:
,xl:
- State prefixes:
hover:
,focus:
,active:
,disabled:
,group-hover:
- Arbitrary values:
w-[38px]
,bg-[#f1f5f9]
,translate-x-[10%]
Final notes
Tailwind gives you a high-velocity workflow when you embrace its utility-first approach, pair it with smart config, and use extraction patterns where appropriate. Start small, extract common patterns when repetition appears, and keep an eye on accessibility and production build config.
For the complete, authoritative reference and advanced features, visit the official Tailwind docs: https://tailwindcss.com/docs
Happy building! 🚀