TailwindCSS: Попутный ветер перемен

Денис Русаков

TailwindCSS: Попутный ветер перемен

Денис Русаков

О чём поговорим?

Проблемы сейчас

Что ты такое Tailwind ?

NPM
Определение. Шаг 1
Определение. Шаг 2
Определение. Шаг 3

TailwindCSS — utility-first CSS framework...

Документация

Utility-first — создание сложных компонентов из ограниченного набора примитивных утилит

Просторы интернета

Utilities — набор классов, которые применяются к HTML-элементам для быстрого и гибкого создания стилей

Документация
Issues
Популярность State of CSS
Стек

Использование инструмента

Шаг 1

Установка. Шаг 1 Bun

Шаг 2

Установка. Шаг 2

Шаг 3

Установка. Шаг 3 Мем. Вы всегда втроём
Мем. Daniel

Синтаксис

Синтаксис

[state][separator][class]

  • hover:bg-sky-700
  • focus:bg-sky-700
  • disabled:bg-sky-700

[screen][separator][class]

  • sm:bg-sky-700
  • md:bg-sky-700
  • lg:bg-sky-700

Разметка

Пример использования инструмента

Стили

Стили

Класс «зомби»

Неиспользуемый класс

Большое кол-во классов

Большое кол-во классов
Debug. Пример
Tailwind devtools Tailwind CSS Devtools
Gimli tailwind gimli-tailwind

Возможности

Конфиг

Конфиг

Core plugins

Core plugins include

Core plugins

Core plugins exclude

Цвета

Цвета

Тёмная тема

Тёмная тема
Тёмной тема

Брекпоинты

Брекпоинты

Брекпоинты в скриптах

Брекпоинты в скриптах

Шрифты

Шрифты

Отступы

Настройка отступов

!important

!important

!important плохо

Вес селектора на практике

«Вес» селектора

Вес селектора

Анимации

Анимации

Keyframes

Keyframes

Блокировка классов

Блокировка классов

Preflight

Preflight preflight

Вендорные префиксы

Вендорные префиксы

Вендорные префиксы

Доступность

Доступность. Sr only
Доступность. Пример

Prefix для классов

Prefix для классов

Подключение плагинов

Подключение плагинов

Полная конфигурация здесь

Директивы

@supports

Supports

@layer

Layer

@apply

Apply

@config

Config

Функции

theme()

Theme

screen()

Screen

Just In Time (JIT)

Tailwind представляет компилятор, который генерирует ваши стили по запросу, когда вы создаете свои шаблоны, вместо того, чтобы создавать всё заранее во время начальной сборки

Документация

Оптимизация

Сочетание минимизации и сетевого сжатия приводит к созданию CSS файлов размером менее 10 КБ даже для больших проектов. Например, Netflix использует Tailwind для Netflix Top 10, а весь сайт передает по сети только 6,5 КБ.

Документация

Оптимизация

CSSNano

CSSNano

Кейсы

Наиболее повторно используемые компоненты — это те, имена классов которых не зависят от содержимого

Nicolas Gallagher

Кнопка

Как часто приходилось верстать кнопку?

Требования к кнопке

+ должна иметь возможность быть легко стилизованной без использования привязки к конкретной дизайн-системе

Решение без Tailwind
Решение c Tailwind
Навигация. Решение без Tailwind
Навигация. Решение без Tailwind. Стили
Решение с Tailwind
Сортировка. Решение c Tailwind

Сетка (bento-box)

Сетка (bento-box)

Отступы

Отступы. Шаг 1

Отступы

Отступы. Шаг 2

Прозрачность

Прозрачность

Размеры элемента

Размеры элемента

Размеры элемента

Размеры элемента

Динамическое значение

Динамическое значение

Фоновое изображение

Базовое фоновое изображение

Фоновое изображение

Фоновое изображение с php

Content

Content

Библиотеки и плагины

Tailwind UI. Promo Tailwind UI
Tailwind UI. Source
Radix UI. Promo radix-ui
Radix UI. Example
Shadcn. Promo
Shadcn. Date picker

Ещё библиотеки

Prettier prettier-plugin-tailwindcss
Eslint eslint-plugin-tailwindcss

ESLint правила

eslint-plugin-tailwindcss
React-email react-email
Tw-merge пример tailwind-merge
Class names util
RTL tailwindcss-rtl
CVA лого cva
CVA использование cva
Container quires tailwindcss-container-queries
Figma to tailwind figma-to-tailwind
Tailwind helper tailwind-helper

Ещё плагины

Расширения

Включение плагина в PHP Storm

Подсказки в PHP Storm

PHP Storm

Кто использует?

Что ещё хорошо?

Breaking news v4.0.0-alpha

Альтернативы

Альтернативы

Tailwind + SASS

А зачем?

Sass. Flex
Sass. Mixins

Сравнение подходов

CSS-modules (+SASS) CSS-in-JS Семантический CSS TailwindCSS
Size Bundle Cross Cross Arrow Rocket
Scoped Styles Arrow Arrow Cross Arrow
Better Tooling Cross Arrow Cross Arrow
Runtime Overhead Cross Cross Arrow Arrow
Dynamic Styles Arrow Arrow Cross Arrow
Performance Optimizations Cross Cross Arrow Arrow
Learning Curve Arrow Arrow Arrow Cross
Debugging Complexity Arrow Arrow Arrow Cross

Меньше JS = более быстрый сайт

Ещё подходы (Deadушки)

Как учить?

Документация

Когда можно использовать?

Next.js starter nextjs-starter

Coming soon

Wp team Wp logo BX24 Onlineconverter 2pdf

Для чего всё это?

Мы хотим быстро и качественно...

Выводы

Всем спасибо!

Вопросы