Tailwind Questions


Beginners To Experts


The site is under development.

Questions

Tailwind CSS is a utility-first CSS framework that provides low-level utility classes for building custom designs.
Unlike Bootstrap, which provides pre-designed components, Tailwind gives you the tools to build unique designs from scratch.
        

npm install -D tailwindcss
npx tailwindcss init
        

<script src="https://cdn.tailwindcss.com"></script>
<div class="bg-blue-500 text-white p-4">Hello Tailwind</div>
        

Edit tailwind.config.js:
module.exports = {
  theme: {
    extend: {
      colors: {
        primary: '#1DA1F2',
      },
    },
  },
}
        

Variants are used to apply styles conditionally:
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
  Hover me
</button>
        

<div class="flex justify-center items-center h-screen">
  <div class="bg-gray-300 p-5">Centered</div>
</div>
        

<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
  <div class="bg-red-100 p-4">Box 1</div>
  <div class="bg-red-200 p-4">Box 2</div>
  <div class="bg-red-300 p-4">Box 3</div>
</div>
        

Add to tailwind.config.js:
theme: {
  extend: {
    fontFamily: {
      custom: ['"Open Sans"', 'sans-serif'],
    },
  },
}
Use in HTML:
<p class="font-custom">Custom font text</p>
        

Use @apply in CSS to include Tailwind classes:
.btn {
  @apply bg-blue-500 text-white px-4 py-2 rounded;
}
        

In tailwind.config.js:
module.exports = {
  content: ['./src/**/*.{html,js}'],
  theme: {
    extend: {},
  },
  plugins: [],
}
        

`w-` sets the exact width of an element.
`max-w-` sets the maximum width the element can grow to.
Example:
<div class="w-64">Fixed width</div>
<div class="max-w-xl">Max width</div>
      

<button class="px-4 py-2 text-sm md:text-base bg-green-500 rounded">
  Responsive Button
</button>
      

Use responsive utilities:
<div class="block md:hidden">Visible only on mobile</div>
<div class="hidden md:block">Hidden on mobile</div>
      

Use `p-` for padding and `m-` for margin:
<div class="p-4 m-2">Box with spacing</div>
      

<button class="bg-gray-300 hover:bg-gray-500 text-white px-4 py-2">
  Hover me
</button>
      

Pseudo-classes like `hover:`, `focus:`, `active:` add state-based styles.
Example:
<input class="focus:outline-none focus:ring-2 focus:ring-blue-500">
      

Add to tailwind.config.js:
theme: {
  screens: {
    'xs': '480px',
    'sm': '640px',
    ...
  }
}
      

<img src="..." class="w-full h-auto">
      

Use `z-` classes:
z-0, z-10, z-20, z-30, z-40, z-50
Example:
<div class="relative z-50">Top layer</div>
      

<header class="fixed top-0 left-0 w-full bg-white shadow z-50">
  My Fixed Header
</header>
      

<div class="grid grid-cols-3 gap-4">
  <div class="bg-red-200">1</div>
  <div class="bg-red-300">2</div>
  <div class="bg-red-400">3</div>
</div>
      

Use `animate-` utilities with plugins:
<div class="animate-bounce">Bouncing Element</div>
      

Use `shadow` classes:
shadow-sm, shadow, shadow-md, shadow-lg
Example:
<div class="shadow-lg p-4 bg-white">Box with shadow</div>
      

<div class="fixed inset-0 flex justify-center items-center bg-black bg-opacity-50">
  <div class="bg-white p-6 rounded">Modal content</div>
</div>
      

Use `flex` with `items-center`:
<div class="flex items-center h-64">
  <p>Centered text</p>
</div>
      

`object-cover` ensures the image covers its container without distortion.
Example:
<img class="w-full h-64 object-cover" src="image.jpg">
      

Use `rounded-full` with fixed width/height:
<img class="w-24 h-24 rounded-full" src="profile.jpg">
      

`container` centers the content and applies responsive max-widths.
Example:
<div class="container mx-auto px-4">Centered content</div>
      

<nav class="flex items-center justify-between flex-wrap bg-blue-500 p-4">
  <div class="text-white font-bold text-xl">Logo</div>
  <div class="block md:hidden">☰</div>
  <div class="w-full block flex-grow md:flex md:items-center md:w-auto">
    <a class="block mt-4 md:inline-block md:mt-0 text-white mr-4" href="#">Home</a>
  </div>
</nav>
      

Use the `truncate` class:
<p class="truncate w-48">This is a long text that will be truncated</p>
      

Use `hover:` prefix to style on hover:
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
  Hover Me
</button>
      

Use prefixes like `sm:`, `md:`, `lg:` for breakpoints:
<div class="p-2 md:p-6 lg:p-10">Responsive Padding</div>
      

Use `shadow`, `shadow-md`, `shadow-lg`, etc.:
<div class="shadow-lg p-4">Box with Shadow</div>
      

Use `z-{index}`:
<div class="relative z-50">Z-index 50</div>
      

Use `hidden sm:block`:
<div class="hidden sm:block">Visible only on screens ≥ 640px</div>
      

Use `text-left`, `text-center`, `text-right`:
<p class="text-center">This is centered text</p>
      

Use `pointer-events-none`:
<div class="pointer-events-none">No click actions allowed here</div>
      

Limits the max width of the element to the `xl` screen size:
<div class="max-w-screen-xl mx-auto">Centered and max-width limited</div>
      

Define it in `tailwind.config.js`:
module.exports = {
  theme: {
    extend: {
      fontFamily: {
        custom: ['YourFontName', 'sans-serif'],
      },
    },
  },
}

Then use it:
<p class="font-custom">This uses a custom font</p>
      

Enable in `tailwind.config.js`:
module.exports = {
  darkMode: 'class',
}

Then use:
<div class="bg-white dark:bg-gray-800 text-black dark:text-white">
  Content switches with dark mode
</div>
      

Use `transition` classes:
<button class="bg-blue-500 hover:bg-blue-700 text-white px-4 py-2 transition duration-300 ease-in-out">
  Hover me
</button>
      

Utility-first classes are single-purpose CSS classes:
Example:
<div class="text-center bg-red-500 p-4 text-white">Utility-based styling</div>
      

<div class="bg-white shadow-md rounded-lg p-6 max-w-sm">
  <h2 class="text-xl font-bold mb-2">Card Title</h2>
  <p class="text-gray-600">Card content goes here.</p>
</div>
      

<div class="grid grid-cols-3 gap-4">
  <div class="bg-red-200 p-4">1</div>
  <div class="bg-green-200 p-4">2</div>
  <div class="bg-blue-200 p-4">3</div>
</div>
      

<img src="image.jpg" class="w-full h-auto" alt="Responsive Image">
      

Use `flex`, `flex-col`, `flex-row`, etc.:
<div class="flex flex-row space-x-4">
  <div>Item 1</div>
  <div>Item 2</div>
</div>
      

<img src="avatar.jpg" class="w-16 h-16 rounded-full" alt="Avatar">
      

Add animation utilities:
<div class="animate-bounce">Bouncing Element</div>
      

Use `truncate` with `overflow-hidden` and `whitespace-nowrap`:
<p class="truncate w-48">This is a long piece of text that will be cut off</p>
      

Use `flex items-center justify-center`:
<div class="flex items-center justify-center h-screen">
  <p>Centered content</p>
</div>
      

<header class="sticky top-0 bg-white shadow z-50">
  <nav class="p-4">Sticky Header</nav>
</header>
      

Add to tailwind.config.js:
module.exports = {
  theme: {
    extend: {
      colors: {
        customBlue: '#1fb6ff',
      }
    }
  }
}
      

<nav class="flex flex-wrap justify-between items-center p-4">
  <div>Logo</div>
  <div class="hidden md:flex space-x-4">
    <a href="#">Home</a>
    <a href="#">About</a>
  </div>
</nav>
      

It allows applying utility classes inside a CSS file:
.btn {
  @apply px-4 py-2 bg-blue-500 text-white rounded;
}
      

Use the `hover:` prefix:
<button class="bg-green-500 hover:bg-green-700 text-white py-2 px-4">Hover me</button>
      

<div class="hidden md:block">
  Visible only on medium screens and above
</div>
      

<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
  <div class="bg-gray-200 p-4">Column 1</div>
  <div class="bg-gray-300 p-4">Column 2</div>
  <div class="bg-gray-400 p-4">Column 3</div>
</div>
      

JIT (Just-in-Time) compiles styles as you write them:
Enable in tailwind.config.js:
module.exports = {
  mode: 'jit',
  ...
}
      

Use `shadow`, `shadow-md`, `shadow-lg`, etc.:
<div class="shadow-lg p-6 bg-white">Box with shadow</div>
      

Use `z-{index}`:
<div class="relative z-10">On top</div>
<div class="relative z-0">Behind</div>
      

Use `leading-{size}`:
<p class="leading-relaxed">This text has relaxed line height.</p>
      

Centers and sets max-width for content:
<div class="container mx-auto">Centered content</div>
      

<div class="hover:scale-105 transition-transform duration-300">
  Hover to scale
</div>
      

<div class="border border-red-500 p-4">Bordered box</div>
      

<div class="w-full h-screen bg-gray-100">
  Full page container
</div>
      

<div class="w-full h-full">
  Full width and height content
</div>
      

It applies typographic styles to content like articles:
<article class="prose">
  <h1>Title</h1>
  <p>Body text</p>
</article>
      

<div class="transition duration-500 ease-in-out hover:bg-blue-500">
  Hover me
</div>
      

<div class="flex items-center justify-center h-screen">
  Centered content
</div>
      

<p class="text-sm md:text-lg lg:text-xl">
  Responsive text
</p>
      

<div class="bg-white shadow rounded-lg p-4">
  <h2 class="text-lg font-bold">Card Title</h2>
  <p>Card content goes here.</p>
</div>
      

Adds spacing between children:
<div class="flex space-x-4">
  <div>A</div>
  <div>B</div>
</div>
      

<footer class="fixed bottom-0 w-full bg-gray-800 text-white p-4">
  Fixed footer content
</footer>
      

<div class="bg-black bg-opacity-50">
  Semi-transparent background
</div>
      

<img src="image.jpg" class="w-24 h-24 rounded-full" />
      

<div class="grid grid-cols-2 gap-6">
  <div>Item 1</div>
  <div>Item 2</div>
</div>
      

<div class="hover:shadow-lg p-4 transition-shadow duration-300">
  Hover me
</div>
      

<p class="truncate w-64">
  This is a long text that will be truncated.
</p>
      

<div class="flex flex-col-reverse">
  <div>First</div>
  <div>Second</div>
</div>
      

<div class="backdrop-blur-sm bg-white/30 p-4">
  Blurred background content
</div>
      

<input type="text" class="bg-gray-200 text-gray-500 cursor-not-allowed" disabled />
      

<div class="bg-gradient-to-r from-black via-transparent to-black">
  <img src="bg.jpg" class="absolute w-full h-full object-cover -z-10">
  <div class="relative text-white">Content</div>
</div>
      

<a href="#" class="hover:underline">Hover me</a>
      

<div class="max-w-4xl mx-auto">
  Limited width content
</div>
      

<header class="sticky top-0 bg-white shadow z-50">
  Sticky header
</header>
      

<div class="hidden sm:block">
  Hidden on mobile
</div>
      

<input class="focus:ring-2 focus:ring-blue-500 focus:outline-none" />
      

<input type="checkbox" class="checked:bg-blue-500 checked:border-transparent" />
      

<div class="aspect-w-16 aspect-h-9">
  <iframe src="..."></iframe>
</div>
      

<nav class="flex flex-wrap items-center justify-between p-4">
  <div class="text-xl font-bold">Logo</div>
  <div class="hidden md:flex space-x-4">
    <a href="#">Link</a>
    <a href="#">Link</a>
  </div>
</nav>
      

<div class="overflow-y-scroll h-64">
  Long content here...
</div>
      

<div class="fixed inset-0 bg-black bg-opacity-50 z-50">
  Overlay content
</div>
      

<div class="overflow-scroll scrollbar-hide">
  Scrollable without scrollbar
</div>


      

<div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4">
  <div>Item</div>
  <div>Item</div>
</div>
      

<div class="transition-transform duration-300 hover:scale-110">
  Zoom on hover
</div>
      

<div class="flex">
  <div class="order-2">Second</div>
  <div class="order-1">First</div>
</div>
      

<h1 class="text-transparent bg-clip-text bg-gradient-to-r from-pink-500 to-yellow-500">
  Gradient Text
</h1>
      

<div class="rounded-t-lg">
  Top-rounded box
</div>
      

<div class="hover:bg-blue-200 hidden sm:block">
  Hover me (desktop only)
</div>
      

Edit `tailwind.config.js`:
module.exports = {
  theme: {
    extend: {
      spacing: {
        '72': '18rem',
        '84': '21rem'
      }
    }
  }
}