Загрузка...
Загрузка...
Подробное руководство по Tailwind CSS: установка, конфигурация, утилитарные классы, кастомизация и лучшие практики для веб-разработки.
Бесплатные онлайн-инструменты по теме статьи
Пошаговое руководство по миграции проекта с обычного CSS на Tailwind: стратегии, инструменты, типичные замены и решение частых проблем.
CSS & ДизайнПодробное руководство по CSS Flexbox: свойства контейнера и элементов, оси, выравнивание, практические примеры и типичные паттерны вёрстки.
CSS & ДизайнПодробное руководство по CSS Grid: свойства контейнера и элементов, именованные области, авторазмещение, практические примеры и типичные паттерны.
CSS & ДизайнПолное руководство по центрированию элементов с помощью CSS Flexbox: по горизонтали, вертикали, по обеим осям, а также центрирование с учётом отступов.
Поделитесь с коллегами или изучите другие материалы блога
Tailwind CSS — утилитарный CSS-фреймворк, который предоставляет низкоуровневые классы для быстрой стилизации интерфейсов. Вместо готовых компонентов Tailwind даёт атомарные классы: flex, p-4, text-blue-500. В этой статье рассмотрены основы, конфигурация и типичные паттерны работы с Tailwind.
Tailwind следует принципу utility-first: вместо семантических классов вроде .button или .card используются комбинации утилит. Это уменьшает переключение контекста между HTML и CSS, ускоряет вёрстку и снижает дублирование стилей.
npm install -D tailwindcss
npx tailwindcss init
Файл tailwind.config.js:
/** @type {import('tailwindcss').Config} */
export default {
content: {
files: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
},
theme: {
extend: {},
},
plugins: [],
}
@tailwind base;
@tailwind components;
@tailwind utilities;
npx tailwindcss -i ./src/input.css -o ./dist/output.css --watch
| Класс | Свойство |
|---|---|
p-4 | padding: 1rem |
px-6 | padding-left/right: 1.5rem |
m-2 | margin: 0.5rem |
mt-4 | margin-top: 1rem |
w-full | width: 100% |
h-screen | height: 100vh |
max-w-xl | max-width: 36rem |
| Класс | Свойство |
|---|---|
flex | display: flex |
flex-col | flex-direction: column |
justify-center | justify-content: center |
items-center | align-items: center |
gap-4 | gap: 1rem |
flex-1 | flex: 1 1 0% |
| Класс | Свойство |
|---|---|
text-lg | font-size: 1.125rem |
font-bold | font-weight: 700 |
text-center | text-align: center |
text-gray-600 | color: rgb(75 85 99) |
leading-relaxed | line-height: 1.625 |
| Класс | Свойство |
|---|---|
bg-blue-500 | background-color |
text-white | color: white |
border-gray-200 | border-color |
rounded-lg | border-radius: 0.5rem |
shadow-md | box-shadow |
Префиксы sm:, md:, lg:, xl:, 2xl: для медиа-запросов:
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
<!-- 1 колонка на мобильных, 2 на планшетах, 3 на десктопе -->
</div>
hover:, focus:, active:, disabled::
<button class="bg-blue-500 hover:bg-blue-600 focus:ring-2 focus:ring-blue-300">
Кнопка
</button>
Расширение палитры, шрифтов и отступов в tailwind.config.js:
theme: {
extend: {
colors: {
brand: {
50: '#f0f9ff',
500: '#0ea5e9',
900: '#0c4a6e',
},
},
fontFamily: {
sans: ['Inter', 'system-ui', 'sans-serif'],
},
spacing: {
'18': '4.5rem',
},
},
},
Для повторяющихся комбинаций можно использовать @apply:
@layer components {
.btn-primary {
@apply px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 focus:ring-2 focus:ring-blue-300;
}
}
Не злоупотребляйте: избыточное использование @apply нивелирует преимущества utility-first.
Tailwind генерирует только используемые классы. В production объём CSS обычно небольшой. Убедитесь, что в content указаны все файлы с классами Tailwind.
Для конвертации обычного CSS в классы Tailwind используйте CSS в Tailwind на rechecker.ru. Инструмент помогает при миграции существующих стилей.
Для значений, которых нет в теме, используйте квадратные скобки:
<div class="w-[347px] top-[117px] bg-[#1da1f2]">
Произвольные значения
</div>
Класс dark: применяется при prefers-color-scheme: dark или при наличии класса dark на html:
<div class="bg-white dark:bg-gray-900 text-gray-900 dark:text-white">
Адаптация под тему
</div>
В tailwind.config.js:
darkMode: 'class', // или 'media'
container центрирует контент и задаёт max-width. Размеры настраиваются в теме:
theme: {
container: {
center: true,
padding: '2rem',
screens: {
sm: '640px',
md: '768px',
lg: '1024px',
xl: '1280px',
},
},
},
Официальные плагины: @tailwindcss/forms, @tailwindcss/typography, @tailwindcss/aspect-ratio. Сторонние: tailwindcss-animate, @tailwindcss/line-clamp.
plugins: [
require('@tailwindcss/forms'),
require('@tailwindcss/typography'),
],
Пошаговая миграция с обычного CSS на Tailwind — в Как перейти с обычного CSS на Tailwind.
Установите Tailwind и настройте PostCSS. В Next.js 13+ Tailwind подключается через tailwind.config.js и postcss.config.js. Классы применяются напрямую в JSX.
Аналогичная настройка. В Single File Components классы задаются в атрибуте class. Для динамических классов используйте объектный или массивный синтаксис.
Tailwind работает с Svelte без дополнительных настроек. Используйте class: директиву для условных классов.
Tailwind удаляет неиспользуемые классы при сборке. Убедитесь, что в content указаны все файлы, где могут встречаться классы (включая динамически генерируемые строки). Для динамических классов перечислите их в safelist в конфиге.
Собственные утилиты можно добавить через addUtilities:
plugin(function({ addUtilities }) {
addUtilities({
'.scrollbar-hide': {
'-ms-overflow-style': 'none',
'scrollbar-width': 'none',
'&::-webkit-scrollbar': { display: 'none' }
}
})
})
Tailwind использует низкую специфичность. При конфликтах с глобальными стилями используйте @layer для правильного порядка каскада или модификатор ! для important.
Избегайте дублирования: flex items-center justify-center читается лучше, чем кастомный класс с тем же содержимым. Для повторяющихся блоков из 5+ утилит рассмотрите @apply или компонент.
Tailwind предоставляет классы для CSS Grid:
| Класс | Свойство |
|---|---|
grid | display: grid |
grid-cols-3 | grid-template-columns: repeat(3, minmax(0, 1fr)) |
grid-rows-2 | grid-template-rows: repeat(2, minmax(0, 1fr)) |
gap-4 | gap: 1rem |
col-span-2 | grid-column: span 2 |
row-span-2 | grid-row: span 2 |
Для адаптивных сеток: grid-cols-1 md:grid-cols-2 lg:grid-cols-3.
Встроенные анимации: animate-spin, animate-ping, animate-pulse, animate-bounce. Кастомные — через theme.extend.animation и @keyframes.
Порядок применения: responsive (sm:, md:), state (hover:, focus:), dark (dark:). Кастомные варианты добавляются через плагины.
Tailwind работает как PostCSS-плагин. В postcss.config.js:
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}
Tailwind v4 изменил конфигурацию (CSS-first). Проверяйте документацию для вашей версии. v3 остаётся стабильным выбором для большинства проектов.