Выборка прямых дочерних элементов div в Tailwind CSS

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для того чтобы в Tailwind CSS стилизовать прямых потомков, следует применить CSS-селектор > вместе с директивой @apply:

CSS
Скопировать код
.parent > * {
  @apply bg-blue-500 p-4;
}

Таким способом к каждому непосредственному элементу с классом .parent будут применяться классы bg-blue-500 и p-4.

Начиная с версии Tailwind 3.1, можно использовать префикс >&, который дополнительно упрощает синтаксис:

HTML
Скопировать код
<div class=">& bg-blue-500 ...">...</div>
Кинга Идем в IT: пошаговый план для смены профессии

Визуализация

Среди программистов распространен такой афоризм: настоящее садоводство невозможно без устранения всех багов. 🐛 Представим, что у нас есть сад с цветами (🌸), огороженный забором (👷‍♂️):

HTML
Скопировать код
<div class="parent"> 👷‍♂️
  <div class="child">🌸</div>
  <div class="child">🌼</div>
  <div class="child">🌻</div>
</div>

Здесь цветы представляют собой прямых потомков и находятся под небезразличным взглядом садовника (div-родителя).

Markdown
Скопировать код
Садовник (👷‍♂️): Заботится только о своих растениях (🌸🌼🌻), игнорируя те, что выросли на соседнем участке (🌲🌾).

В Tailwind CSS мы стилизуем именно прямых потомков — растения, которые находятся под надзором нашего садовника:

JS
Скопировать код
.parent > .child { @apply bg-blue-500; } // Синие цветы во всей своей красе!

А в результате мы получаем сад, где уход оказывается выборочно, а все остальные растения остаются нетронутыми.

Изучаем возможности селекторов потомков в Tailwind

Tailwind CSS предлагает разнообразные способы воздействия на стили дочерних элементов. Вот как вы можете использовать эти инструменты:

Применение оператора >& и дочерних вариантов:

Оператор >& в Tailwind обеспечивает точные настройки стилей для дочерних элементов, абсолютно аналогичные CSS селектору div.section > div:

CSS
Скопировать код
.parent > .child { @apply text-gray-200; } // Чётко выделены дочерние элементы

Для более точечного воздействия можно определить дочерние варианты в tailwind.config.js:

JS
Скопировать код
// В файле tailwind.config.js
module.exports = {
  variants: {
    extend: {
      textColor: ['child'],
    },
  },
}

После этого можно будет управлять стилями потомков прямо в HTML:

HTML
Скопировать код
<div class="child:text-gray-200">...</div> // Так мы указываем стили исключительно для прямых потомков

Создание собственных вариантов

Если стандартных вариантов недостаточно, то вы вправе создать свои стилевые правила с помощью AddVariant в Tailwind:

JS
Скопировать код
// В файле tailwind.config.js
const plugin = require('tailwindcss/plugin')

module.exports = {
  plugins: [
    plugin(function ({ addVariant }) {
      addVariant('child-hover', ({ container, separator }) => {
        container.walkRules(rule => {
          rule.selector = `.child-hover${separator}${rule.selector.slice(1)}:hover > *` 
        })
      })
    })
  ]
}

Теперь с помощью этого пользовательского варианта можно использовать child-hover:text-blue-500:

HTML
Скопировать код
<div class="child-hover:text-blue-500">...</div> // Наведите курсор, чтобы добавить цвет!

Применение плагинов

Плагины расширяют возможности Tailwind. Например, tailwindcss-children значительно упрощает работу с дочерними элементами:

  1. Установить плагин:
Bash
Скопировать код
npm install tailwindcss-children --save-dev // Интегрируем функционал
  1. Включить его в файле tailwind.config.js:
JS
Скопировать код
module.exports = {
  plugins: [
    require('tailwindcss-children'),
  ],
}

После чего этот плагин можно использовать в классах:

HTML
Скопировать код
<div class="children:p-4"> ... </div> // Включаем плагин, когда потребуется порядок среди потомков

Применение базовых стилей

Используйте директивы @layer base и @apply, чтобы добавить стиль к прямым потомкам:

CSS
Скопировать код
@layer base {
  .parent > * {
    @apply text-gray-200; // Базовые стили для дочерних элементов
  }
}

Такой код обеспечивает наследование класса text-gray-200 всеми прямыми наследниками .parent.

Полезные материалы

  1. Handling Hover, Focus, and Other States – Tailwind CSSофициальное руководство Tailwind CSS, где рассмотрено управление вариантами состояний, среди которых и селекторы потомков.
  2. Child and Sibling Selectors | CSS-Tricks — детальное объяснение селекторов дочерних элементов в CSS.
  3. CSS selectors – CSS: Cascading Style Sheets | MDN — полное руководство от Mozilla Developer Network по CSS селекторам.
  4. javascript – querySelector search immediate children – Stack Overflow — дискуссия на форуме разработчиков о целевом выборе прямых потомков с использованием querySelector.
  5. Tailwind CSS Cheat Sheet — шпаргалка по классам Tailwind CSS для быстрого поиска нужных классов.
  6. CSS Combinators — учебный курс от W3Schools, объясняющий применение CSS комбинаторов для выбора HTML-элементов.