Tailwind CSS responsive design is implemented through breakpoint prefixes, allowing developers to easily create layouts that adapt to different screen sizes.
Default breakpoints:
- sm: 640px (small screens)
- md: 768px (medium screens)
- lg: 1024px (large screens)
- xl: 1280px (extra large screens)
- 2xl: 1536px (extra extra large screens)
Breakpoint usage:
- Add breakpoint prefix before class name
- Examples:
html
<div class="w-full md:w-1/2 lg:w-1/3"> Responsive width </div> - Default styles (no prefix) apply to all screen sizes
- Breakpoint styles take effect from that breakpoint and apply upwards
Common responsive classes:
- Layout:
- flex md:flex-row lg:grid lg:grid-cols-3
- Spacing:
- p-4 md:p-8 lg:p-12
- Typography:
- text-sm md:text-base lg:text-lg
- Display:
- block md:hidden lg:block
- Width/height:
- w-full md:w-3/4 lg:w-1/2
- h-auto md:h-screen lg:h-96
Custom breakpoints:
- Configure in tailwind.config.js
- Example:
javascript
theme: { screens: { 'xs': '475px', 'sm': '640px', 'md': '768px', 'lg': '1024px', 'xl': '1280px', '2xl': '1536px', } } - Can use range breakpoints:
javascript
screens: { '2xl': { max: '1535px' }, // or 'print': { raw: 'print' }, }
Mobile-first design:
- Default styles apply to all screens
- Use breakpoint prefixes to override styles for larger screens
- Example:
html
<div class="text-sm md:text-base lg:text-lg"> Mobile-first design </div>
Stacking order:
- Breakpoint classes are applied in order from small to large
- Later breakpoints override earlier breakpoints
- Example:
html
<div class="w-full md:w-3/4 lg:w-1/2"> Width from 100% to 75% to 50% </div>
Common responsive patterns:
- Navigation bar:
html
<nav class="flex flex-col md:flex-row"> <div class="w-full md:w-auto">Logo</div> <ul class="flex flex-col md:flex-row"> <li>Home</li> <li>About</li> </ul> </nav> - Card layout:
html
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"> <div class="card">Card 1</div> <div class="card">Card 2</div> <div class="card">Card 3</div> </div> - Hide/show:
html
<div class="hidden md:block"> Only visible on medium and larger screens </div> <div class="block md:hidden"> Only visible on mobile screens </div>
Best practices:
- Adopt mobile-first design approach
- Use breakpoints reasonably, avoid over-segmentation
- Maintain consistency of responsive classes
- Test display effects on different screen sizes
- Use container queries for more fine-grained control