Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 137новых вакансий за сутки·64 958вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 953
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 394 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python13 555
  • Облачные технологии9 649
  • QA вакансии2 810
  • Android1 650
  • Инженер данных1 068
  • Продакт-менеджер414

Разработка

  • Backend вакансии1 534
  • iOS1 533
  • AI вакансии749
  • Fullstack вакансии623
  • Frontend вакансии536
  • Mobile вакансии28

По стеку

  • Go7 558
  • Java4 778
  • Node.js1 528
  • Kotlin1 348
  • Rust1 252
  • .NET1 154
  • PHP506
  • C++327
  • C#314

DevOps и инфраструктура

  • Kubernetes5 503
  • Linux-инфраструктура4 223
  • DevOps вакансии4 089
  • Terraform / IaC3 059
  • Мониторинг и Observability1 414
  • CI/CD1 240
  • SRE411
  • Кибербезопасность61

Аналитика и данные

  • Аналитик данных612
  • Бизнес-аналитик572
  • Data Scientist528
  • Системный аналитик69

Другие направления

  • Проджект-менеджер147
  • UI/UX дизайн80
  • Ручное тестирование14

По регионам

  • Вакансии в США30 650
  • Вакансии в Европе12 551
  • Работа в России3 510
  • Вакансии в Канаде2 658

По формату

  • Удалённые вакансии48 186
  • Релокация в США30 650
  • Гибридная работа7 410
  • Офисная работа5 407

По уровню

  • Senior вакансии26 826
  • Middle вакансии12 754
  • Junior вакансии4 519

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise189 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis47 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Darktrace17 вакансий
  • Monzo17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме Tailwind CSSВсе вопросы
Tailwind CSSMiddleТеория

Что такое директива @apply и когда её следует использовать?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

@apply встраивает утилиты Tailwind в CSS-правила. Используйте для стилизации HTML из CMS/сторонних источников, глобальных базовых стилей и CSS-компонентных библиотек без JSX. В JSX-проектах предпочтительнее выносить стили в компоненты, а не в @apply.

Базовый синтаксис

/* globals.css */
.btn-primary {
  @apply inline-flex items-center gap-2 rounded-xl bg-indigo-600 px-5 py-2.5
         text-sm font-semibold text-white shadow-sm
         transition-colors duration-150
         hover:bg-indigo-700
         focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-600
         disabled:cursor-not-allowed disabled:opacity-50;
}

.card {
  @apply rounded-xl border border-gray-200 bg-white p-4 shadow-sm;
}
// Использование в компонентах
export function ApplyButton() {
  return <button className="btn-primary">Откликнуться</button>;
}

Директива @apply в Tailwind CSS

Директива @apply позволяет встраивать утилитарные классы Tailwind прямо в CSS-правила. Это полезно при создании переиспользуемых стилевых блоков в CSS-файлах без дублирования длинных строк классов в разметке.

Когда @apply оправдан

  • Интеграция с библиотеками без JSX — HTML, генерируемый сторонним кодом (CMS, Markdown-рендер, сторонний виджет), нельзя разметить классами Tailwind; @apply позволяет задать стиль через CSS-селектор.
  • Глобальные базовые стили — нормализация тегов h1–h6, a, code в блоке @layer base.
  • Компонентная библиотека без JS-фреймворка — когда нужен только CSS-файл (web components, email-шаблоны).
  • Сложный фокусный/active стиль — правило с несколькими псевдоклассами, которое громоздко писать в className.
/* Глобальные стили типографики через @layer base */
@layer base {
  h1 { @apply text-3xl font-bold tracking-tight text-gray-900; }
  h2 { @apply text-2xl font-semibold text-gray-800; }
  a  { @apply text-indigo-600 underline-offset-2 hover:underline; }
}

/* Стили для HTML из CMS */
@layer components {
  .prose-cms h2  { @apply mt-8 mb-3 text-xl font-bold; }
  .prose-cms p   { @apply mb-4 leading-relaxed text-gray-700; }
  .prose-cms pre { @apply overflow-x-auto rounded-lg bg-gray-900 p-4 text-sm; }
}

Когда @apply не нужен

В React/Vue/Svelte-проектах лучше вынести повторяющиеся классы в компонент, а не в CSS. Компонент — это правильная единица инкапсуляции в мире JSX.

// Предпочтительнее @apply
function Badge({ label }: { label: string }) {
  return (
    <span className="inline-flex items-center rounded-full bg-indigo-100 px-2.5 py-0.5
                     text-xs font-medium text-indigo-800">
      {label}
    </span>
  );
}

Использование с @layer

Всегда помещайте @apply-блоки в соответствующий слой, чтобы корректно управлять специфичностью CSS:

@layer components {
  .input {
    @apply block w-full rounded-md border border-gray-300 bg-white px-3 py-2
           text-sm placeholder-gray-400
           focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500;
  }
}

Подводные камни

  • Дублирование логики — @apply извлекает классы в CSS, но при изменении токенов дизайна вам придётся обновлять и компоненты, и CSS-правила; единый компонент проще поддерживать.
  • Невозможно использовать @apply с вариантами, зависящими от DOM-структуры — group-hover:, peer-focus: и has-*: нельзя применить через @apply, так как они генерируют CSS-селекторы с требованием наличия класса group/peer на предке/сестре.
  • Специфичность CSS — @apply-блок вне @layer components получает более высокую специфичность, чем обычные утилиты Tailwind, что может неожиданно переопределять классы в разметке.
  • Произвольные значения не работают напрямую — @apply w-[320px] работает в v3.2+, но в старых версиях вызывало ошибку; произвольные свойства [property:value] не поддерживаются через @apply.
  • Сложность отладки — в DevTools вы увидите только имя CSS-класса без разворачивания исходных утилит; это усложняет поиск причины конфликта стилей по сравнению с inline-классами.
  • @apply в CSS Modules — при использовании CSS Modules необходимо настроить PostCSS-порядок так, чтобы Tailwind обрабатывался до CSS Modules; неправильная конфигурация приведёт к «Unknown rule @apply».

Частые вопросы на собеседовании

  • Что такое Tailwind CSS и что означает подход «utility-first»?
  • Каковы лучшие практики организации Tailwind-классов в больших кодовых базах?
  • Как работает адаптивный дизайн в Tailwind? Объясните префиксы breakpoints (sm, md, lg, xl, 2xl).
  • Что такое массив content в конфигурации Tailwind и почему он важен?

Типичные ошибки

  • Смешивать «@apply» с похожим механизмом без критерия выбора.
  • Игнорировать риск: неверно оценить границы применения темы «@apply» и получить хрупкое решение.
  • Показывать только синтаксис и не объяснять поведение в runtime или сборке.

Что проверяет интервьюер

  • Объясняет извлечение повторяющихся utility-наборов в CSS без превращения Tailwind в Sass-клон.
  • Показывает на примере, как работает: @apply полезен для маленьких повторов и интеграции с внешней разметкой, но частое применение скрывает композицию и ухудшает локальность стилей.
  • Называет production-нюанс и граничный случай для темы «@apply».

Как вы знаете этот вопрос?

Проверить себя по теме Tailwind CSS →

Источники

  • https://tailwindcss.com/docs/functions-and-directives

Связанные темы

Tailwind CSScss-architecturemaintainability