- Installation & Setup
- Layout
- Flexbox & Grid
- Spacing
- Sizing
- Colors
- Typography
- Backgrounds
- Borders & Radius
- Effects
- Interactivity
- Transforms & Animations
- Responsive Design
- Positioning
- Lists & Tables
- Miscellaneous
- Divide Utilities
- Ring Utilities
- Filters
- Gradients & Blend Modes
- Transitions & Animations (Extended)
- Clearfix
- Scroll & Overflow Utilities
- Text Decoration & Shadow
- Content Utilities
- Arbitrary Values
Installation & Setup
Command | Description | Real-World Example |
---|---|---|
npm install tailwindcss |
Install Tailwind CSS via npm |
Input: npm install tailwindcss Effect: Installs Tailwind CSS into your project |
npx tailwindcss init |
Create a Tailwind configuration file |
Input: npx tailwindcss init Effect: Generates a tailwind.config.js file |
@tailwind base; |
Include Tailwind’s base styles in your CSS |
Input: @tailwind base; Effect: Adds Tailwind's base styles (e.g., normalize.css) to your project |
@tailwind components; |
Include Tailwind’s component styles in your CSS |
Input: @tailwind components; Effect: Adds Tailwind's component styles (e.g., buttons, forms) to your project |
@tailwind utilities; |
Include Tailwind’s utility classes in your CSS |
Input: @tailwind utilities; Effect: Adds Tailwind's utility classes (e.g., padding, margin) to your project |
npx tailwindcss build src/styles.css -o dist/styles.css
|
Compile Tailwind CSS into your final CSS file |
Input: npx tailwindcss build src/styles.css -o dist/styles.css Effect: Compiles your Tailwind file into the dist/styles.css file |
npm run dev |
Run Tailwind with a build tool for development (e.g., using PostCSS) |
Input: npm run dev Effect: Starts the build tool and watches for changes in your CSS files |
tailwind.config.js |
Customize Tailwind settings in the configuration file |
Input: Modify tailwind.config.js to add custom colors, fonts, etc. Effect: Tailwind CSS is customized according to your settings |
purge: ['./src/**/*.{html,js}'] |
Enable PurgeCSS to remove unused CSS in production |
Input: purge: ['./src/**/*.{html,js}'] Effect: Removes unused CSS classes during production builds |
Layout
Class | Description | Real-World Example |
---|---|---|
container |
A responsive container with padding that centers content |
Input: <div class="container mx-auto">Content</div> Effect: Centers content with responsive width constraints |
box-border , box-content |
Set box-sizing to border-box or content-box |
Input: <div class="box-border p-4 w-32 h-32">Content</div> Effect: Element maintains 32px width/height with padding included |
block |
Display as a block element |
Input: <span class="block">Block Element</span> Effect: Span behaves like a div, taking full width of parent |
inline-block |
Display as an inline-block element |
Input: <div class="inline-block p-2">Content</div> Effect: Element flows with text but can have width/height |
flex |
Display as a flex container |
Input: <div class="flex"><div>Item 1</div><div>Item 2</div></div> Effect: Elements display in a row with flexbox properties |
grid |
Display as a grid container |
Input: <div class="grid grid-cols-2 gap-4"><div>1</div><div>2</div></div> Effect: Creates a 2-column grid layout with gap |
hidden |
Hide an element (display: none) |
Input: <div class="hidden">Can't see me</div> Effect: Element is completely hidden from view |
float-left , float-right |
Float elements left or right |
Input: <img class="float-left mr-4">Text flows around image Effect: Image floats to the left with text wrapping around it |
clear-left , clear-both |
Clear floated elements |
Input: <div class="clear-both">Below floated content</div> Effect: Element appears below any floated elements |
object-cover , object-contain |
Control how an image/video fits its container |
Input: <img class="object-cover w-full h-48" src="..."> Effect: Image covers entire area, potentially cropping to fit |
object-center , object-top |
Position replaced elements (images, videos) |
Input: <img class="object-cover object-center w-full h-48" src="..."> Effect: Image centered within container while maintaining cover |
Flexbox & Grid
Class | Description | Real-World Example |
---|---|---|
flex , inline-flex |
Create a block or inline flex container |
Input: <div class="flex">...</div> Effect: Children align in a flex container |
flex-row , flex-col |
Set flex direction to row or column |
Input: <div class="flex flex-col"><div>Top</div><div>Bottom</div></div> Effect: Items stack vertically instead of horizontally |
flex-wrap , flex-nowrap |
Allow/prevent flex items from wrapping |
Input: <div class="flex flex-wrap">Many items...</div> Effect: Items wrap to new line when they don't fit container width |
justify-start , justify-center , justify-between |
Justify content along main axis |
Input: <div class="flex justify-between"><div>Left</div><div>Right</div></div> Effect: Items spread with first at start, last at end |
items-center , items-start , items-end |
Align items along cross axis |
Input: <div class="flex items-center h-20"><div>Centered</div></div> Effect: Item is vertically centered in the container |
gap-4 , gap-x-4 , gap-y-2 |
Set spacing between grid/flex items |
Input: <div class="flex gap-4"><div>1</div><div>2</div></div> Effect: Creates 1rem gap between flex items |
grid , inline-grid |
Create a block or inline grid container |
Input: <div class="grid">...</div> Effect: Children align in a CSS grid |
grid-cols-3 , grid-cols-none |
Define number of columns in a grid |
Input: <div class="grid grid-cols-3"><div>1</div><div>2</div><div>3</div></div> Effect: Creates a 3-column grid layout |
grid-rows-2 |
Define number of rows in a grid |
Input: <div class="grid grid-rows-2 grid-cols-2">...</div> Effect: Creates a 2x2 grid layout |
col-span-2 , row-span-2 |
Make an item span multiple columns/rows |
Input: <div class="grid grid-cols-3"> <div class="col-span-2">Wide</div> <div>Narrow</div> </div> Effect: First item spans 2 columns, second takes 1 column |
place-items-center , place-content-center |
Center grid items or grid content |
Input: <div class="grid place-items-center h-screen"><div>Centered</div></div> Effect: Item perfectly centered both horizontally and vertically |
Spacing
Class | Description | Real-World Example |
---|---|---|
m-4 |
Add margin on all sides (1rem) |
Input: <div class="m-4">Content with margin</div> Effect: Element has 1rem margin on all sides |
mx-auto |
Center horizontally with auto left/right margins |
Input: <div class="w-64 mx-auto">Centered</div> Effect: Element is horizontally centered in parent |
mt-2 , mr-2 , mb-2 , ml-2 |
Add margin to specific side (0.5rem) |
Input: <div class="mt-2">Content with top margin</div> Effect: Element has 0.5rem margin on top only |
p-4 |
Add padding on all sides (1rem) |
Input: <div class="p-4">Content with padding</div> Effect: Element has 1rem padding on all sides |
px-6 , py-3 |
Add horizontal/vertical padding |
Input: <button class="px-6 py-3">Submit</button> Effect: Button has 1.5rem padding on left/right, 0.75rem on top/bottom |
pt-2 , pr-2 , pb-2 , pl-2 |
Add padding to specific side (0.5rem) |
Input: <div class="pt-2">Content with top padding</div> Effect: Element has 0.5rem padding on top only |
space-x-4 |
Add horizontal spacing between children |
Input: <div class="flex space-x-4"> <div>Item 1</div> <div>Item 2</div> </div> Effect: Creates 1rem space between the flex items |
space-y-2 |
Add vertical spacing between children |
Input: <div class="space-y-2"> <div>Item 1</div> <div>Item 2</div> </div> Effect: Creates 0.5rem space between stacked elements |
Sizing
Class | Description | Real-World Example |
---|---|---|
w-1/2 |
Set width to 50% of parent |
Input: <div class="w-1/2">Half Width</div> Effect: Element takes up 50% of parent container width |
w-full |
Set width to 100% of parent |
Input: <div class="w-full">Full Width</div> Effect: Element takes up 100% of parent container width |
max-w-screen-md |
Set max width to medium screen breakpoint (768px) |
Input: <div class="max-w-screen-md mx-auto">Content</div> Effect: Container has max width of 768px, centered horizontally |
h-16 |
Set height to 4rem (64px) |
Input: <div class="h-16">Fixed Height</div> Effect: Element has height of 4rem (64px) |
min-h-screen |
Set minimum height to 100% of viewport |
Input: <div class="min-h-screen">Full Height Page</div> Effect: Element is at least as tall as the viewport |
aspect-square |
Set element to have equal width and height (1:1 ratio) |
Input: <div class="aspect-square w-32">Square</div> Effect: Element is 32px × 32px square regardless of content |
aspect-video |
Set element to 16:9 aspect ratio |
Input: <div class="aspect-video w-full">Video Container</div> Effect: Element maintains 16:9 ratio as width changes |
w-screen , h-screen |
Set width/height to 100% of viewport |
Input: <div class="w-screen h-screen">Fullscreen</div> Effect: Element covers entire viewport |
w-auto , h-auto |
Let browser determine width/height |
Input: <img class="h-auto w-64" src="..."> Effect: Image width is 16rem, height scales proportionally |
w-min , w-max |
Set width to minimum/maximum content size |
Input: <div class="w-min">Compact</div> Effect: Element shrinks to the smallest width needed for content |
Colors
Class | Description | Real-World Example |
---|---|---|
bg-red-500 |
Set background color (medium red) |
Input: <div class="bg-red-500 p-4">Red Background</div> Effect: Element has a medium red background color |
text-green-700 |
Set text color (dark green) |
Input: <p class="text-green-700">Green Text</p> Effect: Text is displayed in dark green |
border-blue-300 |
Set border color (light blue) |
Input: <div class="border-2 border-blue-300">Blue Border</div> Effect: Element has a light blue border |
hover:bg-blue-700 |
Change background on hover (dark blue) |
Input: <button class="bg-blue-500 hover:bg-blue-700">Hover Me</button> Effect: Button background changes to darker blue on hover |
bg-opacity-50 |
Set background opacity to 50% |
Input: <div class="bg-blue-500 bg-opacity-50">Semi-transparent</div> Effect: Background is semi-transparent blue |
text-opacity-75 |
Set text opacity to 75% |
Input: <p class="text-black text-opacity-75">Faded Text</p> Effect: Text color is black at 75% opacity |
placeholder-gray-400 |
Set placeholder text color |
Input: <input class="placeholder-gray-400" placeholder="Enter text..."> Effect: Placeholder text appears in medium gray |
caret-indigo-500 |
Set cursor color in text inputs |
Input: <input class="caret-indigo-500"> Effect: Text input cursor is medium indigo color |
from-blue-500 , to-green-500 |
Set gradient colors (used with bg-gradient-) |
Input: <div class="bg-gradient-to-r from-blue-500 to-green-500">Gradient</div> Effect: Background is a gradient from blue to green |
Typography
Class | Description | Real-World Example |
---|---|---|
text-lg |
Set font size to large (1.125rem) |
Input: <p class="text-lg">Larger Text</p> Effect: Text is displayed larger than normal |
font-bold |
Set font weight to bold |
Input: <p class="font-bold">Bold Text</p> Effect: Text is displayed with bold weight |
tracking-wide |
Increase letter spacing |
Input: <h2 class="tracking-wide">Spaced Letters</h2> Effect: Text has wider spacing between characters |
leading-tight |
Set line height to tight (reduced spacing) |
Input: <p class="leading-tight">Multiple lines with less space between them</p> Effect: Text has reduced line height between lines |
text-center |
Center-align text |
Input: <h1 class="text-center">Centered Heading</h1> Effect: Text is horizontally centered |
uppercase |
Convert text to uppercase |
Input: <span class="uppercase">attention</span> Effect: Text displays as "ATTENTION" |
truncate |
Truncate text with ellipsis if it overflows |
Input: <p class="truncate w-48">This text is too long to fit in the container</p> Effect: "This text is too long..." with ellipsis |
italic , not-italic |
Make text italic or remove italic |
Input: <em class="not-italic">Not italicized despite being in em tag</em> Effect: Text in em tag displays in normal style, not italic |
font-sans , font-serif , font-mono |
Set font family |
Input: <code class="font-mono">console.log("Hello")</code> Effect: Text displays in monospace font |
text-justify |
Justify text |
Input: <p class="text-justify">Long paragraph with justified text alignment, creating even edges on both left and right sides of the text block.</p> Effect: Text is spaced to align with both left and right edges |
Backgrounds
Class | Description | Real-World Example |
---|---|---|
bg-cover |
Scale background image to cover entire element |
Input: <div class="bg-cover bg-[url('/img/hero.jpg')] h-64"></div> Effect: Background image covers entire div, may be cropped |
bg-contain |
Scale background image to fit inside element |
Input: <div class="bg-contain bg-no-repeat bg-[url('/img/logo.png')] h-32"></div> Effect: Background image fits fully inside container |
bg-center , bg-top , bg-bottom |
Position background image |
Input: <div class="bg-cover bg-center bg-[url('/img/bg.jpg')] h-48"></div> Effect: Background image is centered within the element |
bg-fixed , bg-local , bg-scroll |
Control background attachment behavior |
Input: <div class="bg-fixed bg-cover bg-[url('/img/parallax.jpg')] h-screen"></div> Effect: Background stays fixed while scrolling (parallax effect) |
bg-no-repeat , bg-repeat-x |
Control background image repetition |
Input: <div class="bg-no-repeat bg-[url('/img/icon.svg')] h-20"></div> Effect: Background image appears once without repeating |
bg-gradient-to-r |
Create a gradient background (right direction) |
Input: <div class="bg-gradient-to-r from-blue-500 to-purple-500 h-24"></div> Effect: Horizontal gradient from blue to purple |
bg-gradient-to-tr |
Create a gradient background (top-right direction) |
Input: <div class="bg-gradient-to-tr from-green-400 via-blue-500 to-purple-600 h-32"></div> Effect: Diagonal gradient through three colors |
from-blue-500 , via-purple-500 , to-pink-500 |
Define gradient colors (start, middle, end) |
Input: <button class="bg-gradient-to-r from-green-400 to-blue-500 p-2">Gradient Button</button> Effect: Button with a green to blue gradient background |
bg-origin-border , bg-origin-padding |
Set background position origin |
Input: <div class="bg-origin-border p-4 border-4 border-dashed border-gray-400 bg-[url('/img/pattern.jpg')]"></div> Effect: Background image starts from the border edge |
Borders & Radius
Class | Description | Real-World Example |
---|---|---|
border |
Add 1px border on all sides |
Input: <div class="border border-gray-300">Content</div> Effect: Element has a 1px light gray border |
border-2 , border-4 , border-8 |
Set border width (all sides) |
Input: <div class="border-2 border-blue-500">Thicker Border</div> Effect: Element has a 2px blue border |
border-t , border-r , border-b , border-l |
Add border to specific side |
Input: <div class="border-b border-gray-200 pb-2">Section with bottom border</div> Effect: Element has only a bottom border |
border-dashed , border-dotted , border-solid |
Set border style |
Input: <div class="border-2 border-dashed border-gray-400">Dashed Border</div> Effect: Element has a 2px dashed gray border |
border-gray-300 |
Set border color (light gray) |
Input: <input class="border border-gray-300 px-4 py-2 rounded"> Effect: Input field has a light gray border |
border-opacity-50 |
Set border opacity to 50% |
Input: <div class="border-2 border-blue-500 border-opacity-50">Semi-transparent border</div> Effect: Border color is 50% transparent |
rounded |
Add rounded corners (0.25rem radius) |
Input: <button class="rounded bg-blue-500 px-4 py-2 text-white">Button</button> Effect: Button has slightly rounded corners |
rounded-md , rounded-lg , rounded-xl |
Add different levels of border radius |
Input: <div class="rounded-lg bg-gray-100 p-6">Card with large radius</div> Effect: Element has 0.5rem border radius (8px) |
rounded-full |
Make element fully rounded (circle for square elements) |
Input: <img class="w-16 h-16 rounded-full" src="profile.jpg"> Effect: Image appears as a perfect circle |
rounded-t , rounded-r , rounded-b , rounded-l |
Round corners on specific sides |
Input: <div class="rounded-t-lg bg-blue-500 p-4">Card with top corners rounded</div> Effect: Element has rounded top corners only |
Effects
Class | Description | Real-World Example |
---|---|---|
shadow |
Add a small shadow (default) |
Input: <div class="shadow bg-white p-4">Card with shadow</div> Effect: Element has a subtle drop shadow |
shadow-md , shadow-lg , shadow-xl |
Add shadows of increasing sizes |
Input: <div class="shadow-lg rounded-lg bg-white p-6">Prominent card</div> Effect: Element has a larger, more noticeable shadow |
shadow-inner |
Add an inset shadow |
Input: <div class="shadow-inner bg-gray-100 p-4">Inset shadow</div> Effect: Element appears pressed in or indented |
shadow-none |
Remove shadows |
Input: <button class="shadow-none bg-blue-500 text-white p-2">Flat Button</button> Effect: Button appears flat with no shadow |
opacity-75 , opacity-50 , opacity-25 |
Set element opacity |
Input: <div class="opacity-50">Semi-transparent element</div> Effect: All content is 50% transparent |
mix-blend-multiply , mix-blend-screen |
Set blend mode for overlapping elements |
Input: <div class="relative"> <div class="absolute inset-0 bg-blue-500 mix-blend-multiply"></div> <img src="photo.jpg"> </div> Effect: Blue overlay blends with the image using multiply mode |
transition |
Add transition for hover/focus states (opacity, colors, etc.) |
Input: <button class="bg-blue-500 hover:bg-blue-700 text-white p-2 transition">Smooth Hover</button> Effect: Background color changes smoothly on hover |
duration-300 |
Set transition duration to 300ms |
Input: <div class="hover:scale-105 transition duration-300">Hover me</div> Effect: Element scales up smoothly over 300ms when hovered |
ease-in-out , ease-linear |
Set transition timing function |
Input: <button class="transition duration-300 ease-in-out transform hover:-translate-y-1">Hover me</button> Effect: Button moves up smoothly with easing when hovered |
Interactivity
Class | Description | Real-World Example |
---|---|---|
hover: |
Apply styles on hover |
Input: <button class="bg-blue-500 hover:bg-blue-700 text-white">Hover me</button> Effect: Button background changes when hovered |
focus: |
Apply styles when element receives focus |
Input: <input class="border focus:ring-2 focus:ring-blue-500 focus:outline-none"> Effect: Input gets a blue ring when focused |
active: |
Apply styles when element is active (clicked) |
Input: <button class="bg-blue-500 active:bg-blue-800">Click me</button> Effect: Button darkens when pressed |
disabled: |
Apply styles when element is disabled |
Input: <button disabled class="bg-blue-500 disabled:opacity-50">Can't click</button> Effect: Disabled button appears faded out |
group-hover: |
Apply styles when parent with class ‘group’ is hovered |
Input: <div class="group"> <h3>Card Title</h3> <div class="invisible group-hover:visible">Hidden content</div> </div> Effect: Hidden content appears when parent is hovered |
cursor-pointer |
Change cursor to pointer (hand) |
Input: <div class="cursor-pointer">Click me</div> Effect: Mouse cursor changes to a hand when hovering |
select-none |
Prevent text selection |
Input: <button class="select-none">Can't select this text</button> Effect: Text in button cannot be selected/highlighted |
pointer-events-none |
Make element ignore pointer events |
Input: <div class="pointer-events-none">Can't click or hover</div> Effect: Element ignores all mouse interactions |
outline-none , focus:outline-none |
Remove default focus outline |
Input: <button class="focus:outline-none focus:ring-2">Better Focus Style</button> Effect: Button has no default outline but shows ring on focus |
focus-within: |
Apply styles when a child element receives focus |
Input: <div class="border focus-within:border-blue-500"> <input> </div> Effect: Container border changes color when input inside is focused |
Transforms & Animations
Class | Description | Real-World Example |
---|---|---|
rotate-45 |
Rotate element 45 degrees clockwise |
Input: <div class="rotate-45">Rotated Box</div> Effect: Element rotates 45 degrees |
scale-105 , scale-90 |
Scale element to 105% or 90% of original size |
Input: <button class="hover:scale-105 transition">Grow on hover</button> Effect: Button grows slightly larger when hovered |
translate-x-4 , -translate-y-2 |
Move element horizontally or vertically |
Input: <div class="hover:-translate-y-2 transition">Up on hover</div> Effect: Element moves up 0.5rem when hovered |
skew-x-6 , skew-y-3 |
Skew element along X or Y axis |
Input: <div class="skew-x-6">Skewed text</div> Effect: Element is slanted horizontally |
origin-top-right |
Set transform origin point |
Input: <div class="origin-top-right rotate-45">Rotated from corner</div> Effect: Element rotates around its top-right corner |
animate-spin |
Apply continuous spinning animation |
Input: <svg class="animate-spin h-5 w-5" viewBox="0 0 24 24">...</svg> Effect: SVG continuously spins (loading indicator) |
animate-pulse |
Apply pulsing opacity animation |
Input: <div class="animate-pulse bg-gray-300 h-8 w-32"></div> Effect: Element pulses (loading skeleton) |
animate-bounce |
Apply bouncing animation |
Input: <div class="animate-bounce">↓</div> Effect: Element bounces up and down continuously |
transform |
Enable transformations (required in older Tailwind versions) |
Input: <div class="transform rotate-45 scale-110">Transformed</div> Effect: Element is both rotated and scaled |
Responsive Design
Class | Description | Real-World Example |
---|---|---|
sm: |
Apply styles at small screens (640px) and up |
Input: <div class="text-center sm:text-left">Content</div> Effect: Text is centered on mobile, left-aligned on larger screens |
md: |
Apply styles at medium screens (768px) and up |
Input: <div class="block md:flex"> <div>Column 1</div> <div>Column 2</div> </div> Effect: Stacked on mobile, side-by-side on tablets and larger |
lg: |
Apply styles at large screens (1024px) and up |
Input: <div class="px-4 md:px-8 lg:px-16">Content</div> Effect: Padding increases as screen size increases |
xl: |
Apply styles at extra large screens (1280px) and up |
Input: <div class="text-lg lg:text-xl xl:text-2xl">Responsive text</div> Effect: Text size increases at each breakpoint |
2xl: |
Apply styles at 2x extra large screens (1536px) and up |
Input: <div class="max-w-5xl 2xl:max-w-7xl mx-auto">Content</div> Effect: Container width increases on very large screens |
dark: |
Apply styles in dark mode (requires darkMode config) |
Input: <div class="bg-white text-black dark:bg-gray-800 dark:text-white">Content</div> Effect: Light background/dark text in light mode, dark background/light text in dark mode |
motion-safe: , motion-reduce: |
Apply styles based on motion preferences |
Input: <div class="hover:scale-105 motion-reduce:transform-none transition">Interactive</div> Effect: Scales on hover unless user prefers reduced motion |
Combine with any utility |
Use breakpoint prefixes with any Tailwind class |
Input: <div class="flex flex-col md:flex-row lg:justify-center xl:max-w-screen-lg">...</div> Effect: Applies different layout rules at each screen size |
Positioning
Class | Description | Real-World Example |
---|---|---|
relative |
Position an element relative to its normal position |
Input: <div class="relative"> <div class="absolute inset-0">Overlay</div> Content </div> Effect: Creates positioning context for absolute children |
absolute |
Position an element relative to nearest positioned ancestor |
Input: <button class="relative"> Button <span class="absolute top-0 right-0 -mt-1 -mr-1 bg-red-500 rounded-full w-4 h-4"></span> </button> Effect: Creates a notification badge on a button |
fixed |
Position an element relative to the viewport |
Input: <nav class="fixed top-0 w-full bg-white shadow-md">Navbar</nav> Effect: Navigation stays at top of screen while scrolling |
sticky |
Position an element based on scroll position |
Input: <div class="sticky top-0 bg-white p-4">Section Header</div> Effect: Header sticks to top of viewport while scrolling through section |
top-0 , right-0 , bottom-0 , left-0 |
Position from edges (works with relative/absolute/fixed/sticky) |
Input: <div class="absolute bottom-4 right-4">Bottom Right</div> Effect: Element positioned 1rem from bottom and right edges |
inset-0 |
Position to all edges (equivalent to top-0 right-0 bottom-0 left-0) |
Input: <div class="absolute inset-0 bg-black opacity-50"></div> Effect: Creates a full-size overlay |
inset-x-0 , inset-y-0 |
Position to horizontal or vertical edges |
Input: <div class="absolute inset-x-0 bottom-0 h-16">Footer</div> Effect: Element spans full width at bottom |
z-10 , z-20 , z-50 |
Set z-index to control stacking order |
Input: <div class="fixed inset-0 bg-black opacity-50 z-40"></div> <div class="relative z-50">Modal content</div> Effect: Modal appears above the overlay |
Lists & Tables
Class | Description | Real-World Example |
---|---|---|
list-disc , list-decimal |
Set list style type (bullets, numbers) |
Input: <ul class="list-disc pl-5"> <li>Item 1</li> <li>Item 2</li> </ul> Effect: List with bullet points |
list-inside , list-outside |
Position list markers inside or outside list item |
Input: <ul class="list-decimal list-inside"> <li>First item with longer text that might wrap to multiple lines</li> </ul> Effect: Numbers appear inside the text boundary |
list-none |
Remove list markers |
Input: <ul class="list-none"><li>No bullet</li></ul> Effect: List displays without bullets or numbers |
table |
Set display to table |
Input: <div class="table w-full"> <div class="table-row"> <div class="table-cell p-2">Cell 1</div> <div class="table-cell p-2">Cell 2</div> </div> </div> Effect: Div elements behave like table, rows, and cells |
table-auto , table-fixed |
Set table layout algorithm |
Input: <table class="table-fixed w-full">...</table> Effect: Table uses fixed layout with equal column widths |
border-collapse , border-separate |
Control table border collapse behavior |
Input: <table class="border-collapse border">...</table> Effect: Adjacent cell borders are merged into a single border |
table-auto , table-fixed |
Set table layout to automatic or fixed |
Input: <table class="table-fixed">...</table> Effect: Fixed layout where column widths are determined by width settings |
caption-top , caption-bottom |
Position table caption at top or bottom |
Input: <table class="caption-bottom"> <caption>Table description</caption> ... </table> Effect: Caption appears below the table |
Miscellaneous
Class | Description | Real-World Example |
---|---|---|
overflow-hidden |
Hide content that exceeds container boundaries |
Input: <div class="overflow-hidden h-32">Very long content...</div> Effect: Content is clipped when it exceeds height |
overflow-x-auto , overflow-y-scroll |
Add horizontal auto scrollbar or vertical forced scrollbar |
Input: <div class="overflow-x-auto"><div class="w-[1000px]">Wide content</div></div> Effect: Horizontal scrollbar appears when needed |
z-0 , z-10 , z-50 |
Set stacking order with z-index |
Input: <div class="relative"> <div class="absolute z-10">Higher</div> <div class="absolute z-0">Lower</div> </div> Effect: Element with z-10 appears above z-0 |
invisible , visible |
Toggle visibility (still takes up space when invisible) |
Input: <div class="invisible">Hidden but still occupies space</div> Effect: Element is not visible but layout is preserved |
sr-only |
Hide visually but keep accessible to screen readers |
Input: <button> <svg>...</svg> <span class="sr-only">Menu</span> </button> Effect: "Menu" text is announced to screen readers but not visible |
appearance-none |
Remove browser-specific styling |
Input: <select class="appearance-none p-2 pr-8 border">...</select> Effect: Select dropdown without default arrow styling |
whitespace-nowrap , whitespace-pre |
Control how whitespace is handled |
Input: <div class="whitespace-nowrap overflow-x-auto">Long line of text</div> Effect: Text doesn't wrap to new lines, scrolls horizontally |
break-all , break-words |
Control how text breaks |
Input: <p class="break-words">Verylongwordthatneedstobebrokentofitincontainer</p> Effect: Long word breaks to fit container width |
isolate |
Create new stacking context |
Input: <div class="isolate">...stacking-sensitive content...</div> Effect: Creates stacking context, isolating z-index effects |
Divide Utilities
Class | Description | Real-World Example |
---|---|---|
divide-x , divide-y |
Add borders between horizontal or vertical elements |
Input: <div class="divide-y divide-gray-200"> <div class="py-3">Item 1</div> <div class="py-3">Item 2</div> </div> Effect: Light gray horizontal dividers between items |
divide-x-2 , divide-y-4 |
Set divide border width |
Input: <div class="divide-x-2 divide-blue-200"> <div class="px-4">Left</div> <div class="px-4">Right</div> </div> Effect: 2px vertical divider between elements |
divide-gray-300 |
Set divide border color |
Input: <div class="flex divide-x divide-gray-300"> <div class="px-4">Section 1</div> <div class="px-4">Section 2</div> </div> Effect: Light gray vertical dividers between flex items |
divide-dashed , divide-dotted |
Set divide border style |
Input: <div class="divide-y divide-dashed divide-gray-300"> <div class="py-2">Item 1</div> <div class="py-2">Item 2</div> </div> Effect: Dashed divider lines between elements |
divide-opacity-50 |
Set divide border opacity |
Input: <div class="divide-y divide-black divide-opacity-50"> <div class="py-2">Item 1</div> <div class="py-2">Item 2</div> </div> Effect: Semi-transparent black divider lines |
divide-solid |
Set solid divide border |
Input: <div class="divide-y divide-solid divide-gray-200"> <div class="py-2">Item 1</div> <div class="py-2">Item 2</div> </div> Effect: Solid divider lines between elements |
Ring Utilities
Class | Description | Real-World Example |
---|---|---|
ring , ring-2 , ring-4 |
Add focus ring shadow of different sizes |
Input: <button class="ring-2 ring-blue-500 p-2">Button with ring</button> Effect: Button with a blue focus ring around it |
ring-blue-500 |
Set ring color |
Input: <input class="focus:ring focus:ring-blue-500 focus:outline-none"> Effect: Input gets blue ring when focused |
ring-offset-2 |
Add space between element and ring |
Input: <button class="focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 p-2">Focused Button</button> Effect: Ring appears with 2px of space from the button |
ring-offset-white |
Set color of ring offset space |
Input: <button class="ring-2 ring-blue-500 ring-offset-2 ring-offset-white p-2">Button</button> Effect: White space between button and blue ring |
ring-inset |
Set ring to render inside the element border |
Input: <div class="ring-2 ring-blue-500 ring-inset p-4">Content</div> Effect: Ring appears inside the element's boundaries |
ring-opacity-50 |
Set ring opacity |
Input: <button class="ring-2 ring-blue-500 ring-opacity-50">Button</button> Effect: Semi-transparent blue ring |
Filters
Class | Description | Real-World Example |
---|---|---|
filter |
Enable filters on an element |
Input: <img class="filter blur-sm" src="image.jpg"> Effect: Image appears slightly blurred |
blur-sm , blur , blur-xl |
Apply blur effect of different intensities |
Input: <div class="blur-md bg-white p-5">Blurred content</div> Effect: Content appears with medium blur |
brightness-50 , brightness-125 |
Adjust element brightness (50% darker, 125% brighter) |
Input: <img class="brightness-75" src="image.jpg"> Effect: Image appears at 75% of its normal brightness |
contrast-50 , contrast-200 |
Adjust element contrast |
Input: <img class="contrast-150" src="image.jpg"> Effect: Image appears with 150% contrast (more intense) |
grayscale , grayscale-0 |
Convert element to grayscale or remove grayscale |
Input: <img class="grayscale hover:grayscale-0 transition" src="image.jpg"> Effect: Image appears in grayscale, returns to color on hover |
hue-rotate-90 , -hue-rotate-60 |
Rotate element colors on the color wheel |
Input: <img class="hue-rotate-180" src="image.jpg"> Effect: Image colors are inverted (180° rotation on color wheel) |
invert , invert-0 |
Invert element colors or remove inversion |
Input: <img class="invert" src="icon.svg"> Effect: Icon colors are inverted (white becomes black, etc.) |
saturate-50 , saturate-200 |
Adjust color saturation of an element |
Input: <img class="saturate-200" src="image.jpg"> Effect: Image appears with more intense colors (200% saturation) |
sepia , sepia-0 |
Convert element to sepia tone or remove sepia |
Input: <img class="sepia hover:sepia-0 transition" src="image.jpg"> Effect: Image appears with vintage sepia effect, returns to normal on hover |
backdrop-filter |
Apply filters to area behind an element |
Input: <div class="backdrop-filter backdrop-blur-sm bg-white/30 p-4">Content</div> Effect: Semi-transparent element with blurred background behind it |
Gradients & Blend Modes
Class | Description | Real-World Example |
---|---|---|
bg-gradient-to-r , bg-gradient-to-br |
Add gradient in specified direction (right, bottom-right) |
Input: <div class="bg-gradient-to-r from-blue-500 to-purple-500 h-20"></div> Effect: Horizontal gradient from blue to purple |
from-red-500 |
Set gradient starting color |
Input: <button class="bg-gradient-to-r from-green-400 to-blue-500 px-4 py-2">Gradient Button</button> Effect: Button with gradient from green to blue |
via-purple-500 |
Set gradient middle color |
Input: <div class="bg-gradient-to-r from-pink-500 via-red-500 to-yellow-500 h-20"></div> Effect: Gradient from pink through red to yellow |
to-blue-500 |
Set gradient ending color |
Input: <div class="h-10 bg-gradient-to-r from-sky-500 to-indigo-500"></div> Effect: Gradient from sky blue to indigo |
mix-blend-multiply |
Set how element content blends with background |
Input: <div class="relative"> <img src="background.jpg"> <div class="absolute inset-0 bg-blue-500 mix-blend-multiply"></div> </div> Effect: Blue overlay multiplies with background image colors |
mix-blend-screen |
Screen blend mode (opposite of multiply) |
Input: <div class="relative"> <img src="dark-image.jpg"> <div class="absolute inset-0 bg-yellow-300 mix-blend-screen"></div> </div> Effect: Yellow overlay lightens dark background image |
mix-blend-overlay |
Overlay blend mode (combines multiply and screen) |
Input: <div class="relative"> <img src="image.jpg"> <div class="absolute inset-0 bg-gradient-to-r from-blue-500 to-purple-500 mix-blend-overlay"></div> </div> Effect: Gradient overlay preserves highlights and shadows of image |
bg-blend-normal , bg-blend-multiply |
Set how background layers blend together |
Input: <div class="bg-[url('/pattern.svg')] bg-blue-500 bg-blend-multiply p-4">Content</div> Effect: Blue background multiplies with pattern background |
Content Utilities
Class | Description | Real-World Example |
---|---|---|
before:content-['✓'] |
Add content before an element using the content property |
Input: <li class="before:content-['✓'] before:mr-2 before:text-green-500">Completed task</li> Effect: Adds a green checkmark before the list item |
after:content-['→'] |
Add content after an element using the content property |
Input: <a class="after:content-['→'] after:ml-1">Read more</a> Effect: Adds an arrow after the link text |
before:block , after:absolute |
Control display and positioning of pseudo-elements |
Input: <div class="relative before:absolute before:content-[''] before:inset-0 before:bg-black before:bg-opacity-50"> <img src="image.jpg"> </div> Effect: Creates a semi-transparent overlay on the image |
before:w-4 , after:h-4 |
Set width and height of pseudo-elements |
Input: <button class="relative before:content-[''] before:absolute before:w-full before:h-0.5 before:bg-blue-500 before:bottom-0 before:left-0 before:scale-x-0 hover:before:scale-x-100 before:transition"> Hover me </button> Effect: Adds an animated underline effect on hover |
before:bg-red-500 , after:rounded-full |
Style pseudo-elements with other Tailwind utilities |
Input: <span class="relative after:content-['New'] after:ml-2 after:text-xs after:font-bold after:bg-red-500 after:text-white after:py-0.5 after:px-1 after:rounded-md"> Feature </span> Effect: Adds a "New" badge after text |
before:content-['*'] |
Add an asterisk for required fields |
Input: <label class="before:content-['*'] before:text-red-500 before:mr-1"> Email </label> Effect: Adds a red asterisk before the label |
before:content-[attr(data-tooltip)] |
Use HTML attributes for pseudo-element content |
Input: <button data-tooltip="Click to save" class="relative before:content-[attr(data-tooltip)] before:absolute before:hidden hover:before:block before:bg-black before:text-white before:px-2 before:py-1 before:rounded before:bottom-full before:mb-2"> Save </button> Effect: Shows a tooltip on hover using the data-tooltip attribute value |
Arbitrary Values
Class | Description | Real-World Example |
---|---|---|
mt-[23px] |
Use an arbitrary margin-top value |
Input: <div class="mt-[23px]">Precisely positioned</div> Effect: Element has exactly 23px of top margin |
text-[13px] |
Set text size to a specific pixel value |
Input: <p class="text-[13px]">Custom size text</p> Effect: Text displays at exactly 13px size |
bg-[#ffcc00] |
Use a custom background color value |
Input: <div class="bg-[#ffcc00] p-4">Custom yellow background</div> Effect: Element has a background color of #ffcc00 (yellow) |
w-[calc(100%-2rem)] |
Use a CSS calculation for width |
Input: <div class="w-[calc(100%-2rem)] mx-auto">Content</div> Effect: Element width is 100% minus 2rem |
grid-cols-[repeat(auto-fit,minmax(250px,1fr))] |
Use complex grid layout values |
Input: <div class="grid grid-cols-[repeat(auto-fit,minmax(250px,1fr))] gap-4"> <div>Card 1</div> <div>Card 2</div> <div>Card 3</div> </div> Effect: Responsive grid with automatically fitting columns, minimum 250px width |
rotate-[17deg] |
Apply a specific rotation |
Input: <img class="rotate-[17deg]" src="image.jpg"> Effect: Image rotated exactly 17 degrees |
top-[117px] |
Position at a specific pixel value from the top |
Input: <div class="absolute left-1/2 top-[117px] -translate-x-1/2">Precise position</div> Effect: Element positioned exactly 117px from the top |
z-[999] |
Use a custom z-index value |
Input: <div class="relative z-[999]">Above everything else</div> Effect: Element has z-index of 999 |
border-[3px] |
Set a custom border width |
Input: <div class="border-[3px] border-blue-500">Content</div> Effect: Element has a 3px blue border |
leading-[3] |
Set a custom line height |
Input: <p class="leading-[3]">Text with very large line spacing</p> Effect: Text has a line height 3 times the font size |
Transitions & Animations (Extended)
Class | Description | Real-World Example |
---|---|---|
delay-150 , delay-300 , delay-700 |
Add delay to transitions (in milliseconds) |
Input: <div class="transition delay-150 hover:scale-110">Delayed Hover Effect</div> Effect: Element scales after a 150ms delay when hovered |
transition-colors , transition-opacity |
Apply transitions only to specific properties |
Input: <button class="transition-colors duration-300 bg-blue-500 hover:bg-blue-700">Button</button> Effect: Only the background color transitions smoothly when hovered |
transition-all |
Apply transitions to all changing properties |
Input: <div class="transition-all duration-300 hover:bg-green-500 hover:translate-y-1 hover:shadow-lg">Card</div> Effect: Background, position, and shadow all transition smoothly on hover |
animate-ping |
Apply a “ping” animation (scale in/out quickly) |
Input: <span class="absolute h-3 w-3 animate-ping bg-red-500 rounded-full"></span> Effect: Red dot pings continuously (like a notification indicator) |
ease-in , ease-out , ease-in-out |
Set animation easing function |
Input: <div class="transition ease-in-out duration-500 hover:translate-y-2">Smooth Motion</div> Effect: Element moves down with easing at both start and end of animation |
duration-100 through duration-1000 |
Set transition/animation duration in milliseconds |
Input: <div class="transition duration-500 hover:scale-105">Slow Scale</div> Effect: Element scales up over 500ms on hover |
animate-[wiggle_1s_ease-in-out_infinite] |
Apply custom animation with arbitrary value |
Input: <div class="animate-[wiggle_1s_ease-in-out_infinite]">Wiggle</div> Effect: Element wiggles continuously (assuming you've defined a "wiggle" keyframe in your CSS) |
Clearfix
Class | Description | Real-World Example |
---|---|---|
clearfix |
Clear floats inside a container |
Input: <div class="clearfix"> <img class="float-left" src="image1.jpg"> <img class="float-right" src="image2.jpg"> </div> <div>Next content</div> Effect: Container properly contains the floated images, and "Next content" appears below them |
Scroll & Overflow Utilities
Class | Description | Real-World Example |
---|---|---|
overflow-auto |
Add scrollbars when content overflows |
Input: <div class="overflow-auto h-32">Long content that exceeds the height...</div> Effect: Adds scrollbars only when content exceeds 8rem height |
overflow-hidden |
Hide content that overflows container |
Input: <div class="overflow-hidden h-20">Content that's too tall will be clipped</div> Effect: Content beyond 5rem height is hidden with no scrollbar |
overflow-visible |
Allow content to overflow and be visible |
Input: <div class="overflow-visible h-20 border">Content will show outside the border</div> Effect: Content extends beyond the container's boundaries |
overflow-x-scroll , overflow-y-scroll |
Add scrollbars in specific direction |
Input: <div class="overflow-x-scroll overflow-y-hidden whitespace-nowrap"> Very long horizontal content that doesn't wrap... </div> Effect: Horizontal scrollbar appears, no vertical scrolling |
scrollbar-hide (with plugin) |
Hide scrollbars visually while maintaining scroll functionality |
Input: <div class="overflow-y-scroll scrollbar-hide h-32"> Scrollable content without visible scrollbars... </div> Effect: Content is scrollable but no scrollbar is visible |
scroll-smooth |
Enable smooth scrolling behavior |
Input: <html class="scroll-smooth">...</html> Effect: Clicking anchor links scrolls smoothly to the target |
snap-x , snap-y |
Enable scroll snapping in horizontal or vertical direction |
Input: <div class="snap-x overflow-x-auto flex"> <div class="snap-center">Slide 1</div> <div class="snap-center">Slide 2</div> </div> Effect: Creates a carousel where slides snap into place when scrolling |
Text Decoration & Shadow
Class | Description | Real-World Example |
---|---|---|
underline , no-underline |
Add or remove text underline |
Input: <a class="no-underline hover:underline">Learn more</a> Effect: Link has no underline until hovered |
line-through |
Add line through text (strikethrough) |
Input: <span class="line-through">$99</span> $79 Effect: Shows $99 with a line through it, like a discounted price |
decoration-dotted , decoration-dashed |
Set text decoration style |
Input: <span class="underline decoration-dotted">Glossary term</span> Effect: Text has a dotted underline, suggesting a definition is available |
decoration-2 , decoration-4 |
Set text decoration thickness |
Input: <h2 class="underline decoration-4 decoration-blue-500">Heading</h2> Effect: Heading has thick blue underline (4px) |
decoration-blue-500 |
Set text decoration color |
Input: <p class="underline decoration-red-500">Important note</p> Effect: Text has a red underline instead of matching the text color |
text-shadow (with plugin or custom class) |
Add shadow to text for depth or contrast |
Input: <h1 class="text-white text-shadow">Title on image</h1> Effect: White text has shadow to improve readability on varying backgrounds |
underline-offset-2 , underline-offset-4 |
Control distance between text and underline |
Input: <a class="underline underline-offset-4">Spaced link</a> Effect: Underline appears further below the text than default |