Справочник по пользовательским функциям и директивам, которые Tailwind предоставляет Вашему CSS.
Используйте директиву @tailwind для вставки стилей base, components, utilities и screens Tailwind в ваш CSS.
/**
 * Это вводит базовые стили Tailwind и любые базовые стили,
 * зарегистрированные плагинами.
 */
@tailwind base;
/**
 * Это внедряет базовые классы компонентов Tailwind и любые классы компонентов,
 * зарегистрированные плагинами.
 */
@tailwind components;
/**
 * Это внедряет служебные классы Tailwind и любые служебные классы,
 * зарегистрированные плагинами.
 */
@tailwind utilities;
/**
 * Используйте эту директиву для управления тем, куда Tailwind вводит
 * ответные варианты каждой утилиты.
 *
 * Если опущено, Tailwind по умолчанию добавит эти классы в самый конец
 * Вашей таблицы стилей.
 */
@tailwind screens;Используйте  @apply, чтобы встроить любые существующие служебные классы в свой собственный CSS.
Это полезно, когда вы находите в своем HTML-коде общий служебный шаблон, который хотите извлечь в новый компонент.
.btn {
  @apply font-bold py-2 px-4 rounded;
}
.btn-blue {
  @apply bg-blue-500 hover:bg-blue-700 text-white;
}Обратите внимание, что классы применяются в зависимости от их местоположения в исходном CSS, а не в порядке их перечисления после директивы @apply. Это сделано для того, чтобы поведение, которое вы получаете при извлечении списка классов с помощью @apply, соответствует тому, как ведут себя эти классы, когда они перечислены непосредственно в Вашем HTML.
/* Ввод */
.btn {
  @apply py-2 p-4;
}
/* Вывод */
.btn {
  padding: 1rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}Если вам нужен детальный контроль над порядком применения классов, используйте несколько операторов @apply:
/* Ввод */
.btn {
  @apply py-2;
  @apply p-4;
}
/* Вывод */
.btn {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  padding: 1rem;
}Вы также можете смешивать объявления @apply с обычными объявлениями CSS:
/* Ввод */
.btn {
  transform: translateY(-1px);
  @apply bg-black;
}
/* Вывод */
.btn {
  background-color: #000;
  transform: translateY(-1px);
}Любые правила, заключенные с помощью @apply, будут иметь !important удалено по умолчанию, чтобы избежать проблем со специфичностью:
/* Ввод */
.foo {
  color: blue !important;
}
.bar {
  @apply foo;
}
/* Вывод */
.foo {
  color: blue !important;
}
.bar {
  color: blue;
}Если вы хотите применить к существующему классу @apply и сделать его !important, просто добавьте !important в конец объявления:
/* Ввод */
.btn {
  @apply font-bold py-2 px-4 rounded !important;
}
/* Вывод */
.btn {
  font-weight: 700 !important;
  padding-top: .5rem !important;
  padding-bottom: .5rem !important;
  padding-right: 1rem !important;
  padding-left: 1rem !important;
  border-radius: .25rem !important;
}Обратите внимание, что если вы используете Sass/SCSS, вам нужно использовать функцию интерполяции Sass, чтобы это работало:
.btn {
  @apply font-bold py-2 px-4 rounded #{!important};
}Используйте директиву @layer, чтобы указать Tailwind, к какому “bucket” принадлежит набор пользовательских стилей. Допустимые уровни - это base, components и utilities.
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
  h1 {
    @apply text-2xl;
  }
  h2 {
    @apply text-xl;
  }
}
@layer components {
  .btn-blue {
    @apply bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded;
  }
}
@layer utilities {
  @variants hover, focus {
    .filter-none {
      filter: none;
    }
    .filter-grayscale {
      filter: grayscale(100%);
    }
  }
}Tailwind автоматически переместит любой CSS в директиве @layer в то же место, что и соответствующее правило @tailwind, поэтому вам не нужно так сильно беспокоиться об авторстве CSS в определенном порядке, чтобы избежать проблем со специфичностью.
Заключение любого пользовательского CSS в директиву @layer также указывает Tailwind учитывать эти стили для очистки при очистке этого слоя. Прочтите нашу документацию по оптимизации для продакшена для получения более подробной информации.
Вы можете сгенерировать responsive, hover, focus, active и другие варианты Ваших собственных утилит, заключив их определения в директиву @variants.
@variants focus, hover {
  .rotate-0 {
    transform: rotate(0deg);
  }
  .rotate-90 {
    transform: rotate(90deg);
  }
}Это сгенерирует следующий CSS:
.rotate-0 {
  transform: rotate(0deg);
}
.rotate-90 {
  transform: rotate(90deg);
}
.focus\:rotate-0:focus {
  transform: rotate(0deg);
}
.focus\:rotate-90:focus {
  transform: rotate(90deg);
}
.hover\:rotate-0:hover {
  transform: rotate(0deg);
}
.hover\:rotate-90:hover {
  transform: rotate(90deg);
}Важно отметить, что варианты создаются в том порядке, в котором вы их указываете.
Поэтому, если вы хотите, чтобы утилиты фокусировки имели приоритет, например, над утилитами зависания, убедитесь, что фокус появляется после наведения в списке:
/* Ввод */
@variants hover, focus {
  .banana {
    color: yellow;
  }
}
/* Вывод */
.banana {
  color: yellow;
}
.hover\:banana:hover {
  color: yellow;
}
.focus\:banana:focus {
  color: yellow;
}В правиле @variants поддерживает все значения, которые поддерживаются в разделе variants Вашего файла конфигурации, а также любые пользовательские варианты, добавленные через плагины.
Вы можете сгенерировать отзывчивые варианты Ваших собственных классов, заключив их определения в директиву  @responsive:
@responsive {
  .bg-gradient-brand {
    background-image: linear-gradient(blue, green);
  }
}Это ярлык для написания @variants responsive { ... }, который также работает.
Используя контрольные точки по умолчанию, это сгенерирует следующие классы:
.bg-gradient-brand {
  background-image: linear-gradient(blue, green);
}
/* ... */
@media (min-width: 640px) {
  .sm\:bg-gradient-brand {
    background-image: linear-gradient(blue, green);
  }
  /* ... */
}
@media  (min-width: 768px) {
  .md\:bg-gradient-brand {
    background-image: linear-gradient(blue, green);
  }
  /* ... */
}
@media (min-width: 1024px) {
  .lg\:bg-gradient-brand {
    background-image: linear-gradient(blue, green);
  }
  /* ... */
}
@media (min-width: 1280px) {
  .xl\:bg-gradient-brand {
    background-image: linear-gradient(blue, green);
  }
  /* ... */
}Адаптивные варианты будут добавлены к существующим медиа-запросам Tailwind в конце Вашей таблицы стилей. Это гарантирует, что классы с отзывчивым префиксом всегда побеждают неотзывчивые классы, нацеленные на одно и то же свойство CSS.
Директива  @screen позволяет вам создавать медиа-запросы, которые ссылаются на Ваши контрольные точки по имени, вместо того, чтобы дублировать их значения в Вашем собственном CSS.
Например, предположим, что у вас есть контрольная точка sm на 640px и вам нужно написать некоторый собственный CSS, который ссылается на эту контрольную точку.
Вместо того, чтобы писать необработанный медиа-запрос, который дублирует это значение следующим образом:
@media (min-width: 640px) {
  /* ... */
}…вы можете использовать директиву @screen и ссылаться на контрольную точку по имени:
@screen sm {
  /* ... */
}Функция screen принимает экранное имя, например md, и генерирует соответствующее выражение мультимедийной функции:
/* Input */
@media screen(sm) {
  /* ... */
}
/* Output */
@media (min-width: 640px) {
  /* ... */
}Это может быть полезно, когда вы используете Tailwind с другими инструментами CSS, которые плохо обрабатывают директиву @screen. Например, postcss-nesting не понимает @screen, но понимает @media, поэтому использование @media вместе с функцией screen() ведет себя более корректно.
Используйте функцию theme() для доступа к Вашим значениям конфигурации Tailwind, используя точечную нотацию.
Это может быть полезной альтернативой @apply, когда вы хотите ссылаться на значение из конфигурации Вашей темы только для части объявления:
.content-area {
  height: calc(100vh - theme('spacing.12'));
}Если вам нужно получить доступ к значению, содержащему точку (например, к значению 2.5 в шкале интервалов), вы можете использовать запись в квадратных скобках:
.content-area {
  height: calc(100vh - theme('spacing[2.5]'));
}Поскольку Tailwind использует синтаксис вложенных объектов для определения своей цветовой палитры по умолчанию, обязательно используйте точечную нотацию для доступа к вложенным цветам.
Не используйте синтаксис тире при доступе к вложенным значениям цвета
.btn-blue {
  background-color: theme('colors.blue-500');
}Используйте точечную нотацию для доступа к вложенным значениям цвета
.btn-blue {
  background-color: theme('colors.blue.500');
}