Tailwind CSS представляет собой utility-first CSS
фреймворк, который предлагает использовать классы низкого
уровня для построения интерфейсов. Вместо создания кастомных CSS-правил
для каждого элемента применяется набор готовых утилит, таких как
p-4, text-center, bg-blue-500,
что позволяет быстро и предсказуемо формировать визуальное
оформление компонентов.
Utility-first подход отличается от традиционного написания CSS:
Tailwind CSS полностью совместим с Preact, благодаря возможности
использовать классы прямо в JSX. Для интеграции обычно
используется PostCSS и пакет tailwindcss.
Пример базовой конфигурации:
// tailwind.config.js
module.exports = {
content: ["./src/**/*.{js,jsx,ts,tsx}"],
theme: {
extend: {},
},
plugins: [],
}
// index.js
import { h, render } from 'preact';
import './index.css';
import App from './App';
render(<App />, document.getElementById('root'));
index.css должен содержать директивы Tailwind:
@tailwind base;
@tailwind components;
@tailwind utilities;
Компоненты Preact используют JSX, что позволяет применять утилиты Tailwind напрямую к элементам:
import { h } from 'preact';
const Button = () => (
<button class="bg-blue-500 text-white font-bold py-2 px-4 rounded hover:bg-blue-700">
Кнопка
</button>
);
export default Button;
Разбор классов:
bg-blue-500 — задает цвет фона.text-white — цвет текста.font-bold — жирный шрифт.py-2 px-4 — внутренние отступы по вертикали и
горизонтали.rounded — скругленные углы.hover:bg-blue-700 — изменение цвета при наведении.Tailwind поддерживает множество сокращений и составных классов, позволяющих ускорять разработку:
m-4 — отступ со всех сторон.mx-auto — горизонтальное центрирование.flex, flex-col,
justify-between, items-center — управление
flex-контейнерами.grid, grid-cols-3, gap-4 —
работа с сеткой.Пример компонента с flex и grid:
const CardList = ({ items }) => (
<div class="grid grid-cols-3 gap-6">
{items.map(item => (
<div class="bg-white shadow-md rounded p-4 flex flex-col justify-between">
<h2 class="text-xl font-semibold">{item.title}</h2>
<p class="text-gray-600">{item.description}</p>
<button class="mt-4 bg-green-500 text-white py-2 rounded hover:bg-green-700">
Подробнее
</button>
</div>
))}
</div>
);
Tailwind предоставляет удобную систему responsive-утилит:
sm:, md:, lg:,
xl:, 2xl: — префиксы для разных размеров
экранов.Пример адаптивного компонента:
<div class="p-4 sm:p-6 md:p-8 lg:p-10 bg-gray-100">
Контент с адаптивными отступами
</div>
Tailwind позволяет настраивать тему проекта, добавляя собственные цвета, размеры, шрифты:
// tailwind.config.js
module.exports = {
theme: {
extend: {
colors: {
brand: '#1c64f2',
accent: '#f43f5e',
},
spacing: {
72: '18rem',
84: '21rem',
},
},
},
};
Теперь можно использовать классы bg-brand или
p-72 прямо в JSX.
Tailwind поддерживает работу с псевдоклассами и состояниями:
hover:, focus:, active:,
disabled:.first:, last:, odd:,
even: — для выборки элементов в списке.group и group-hover — позволяют управлять
состояниями дочерних элементов через родителя.Пример:
<div class="group p-4 border rounded">
<p class="text-gray-700 group-hover:text-red-500">
Текст меняет цвет при наведении на родителя
</p>
</div>
Tailwind генерирует огромное количество классов,
поэтому важно использовать функцию content в конфигурации
для удаления неиспользуемых стилей при сборке:
// tailwind.config.js
module.exports = {
content: ["./src/**/*.{js,jsx,ts,tsx}"],
// ...
};
Это существенно снижает размер итогового CSS.
Фреймворк поддерживает подключение плагинов, расширяющих стандартные возможности:
@tailwindcss/forms — стилизация форм.@tailwindcss/typography — красивые типографические
стили.@tailwindcss/aspect-ratio — управление соотношением
сторон элементов.Пример подключения:
// tailwind.config.js
module.exports = {
plugins: [
require('@tailwindcss/forms'),
require('@tailwindcss/typography'),
],
};
Tailwind CSS вместе с Preact позволяет строить сложные, адаптивные и производительные интерфейсы, минимизируя кастомный CSS и ускоряя разработку через композицию готовых утилит. Правильная конфигурация, использование responsive-утилит, темизации и плагинов делает его мощным инструментом для современных веб-приложений.