Произвольное значение z-индекса попутного ветра не работает

Я пытаюсь использовать z-индекс Tailwind с произвольным значением в соответствии с документацией , но похоже, что CSS не генерируется (см. прикрепленный скриншот).

Хотя я использую его с React в проекте, я пытался использовать z-index с произвольными значениями в простом HTML, чтобы убедиться, что он вообще работает. Но это не так.

Например. Я хочу отобразить 5 полей: 1-е должно быть самым верхним, а 5-е — самым нижним, используя z-индекс с произвольными значениями. Пример CodePen и HTML-код ниже, который не работает. В том же CodePen видно, что использование z-10, z-20, ... и так далее работает.

<div class = "flex justify-center items-center w-20 h-20 shadow-lg relative bg-red-300 z-[5]">1</div>
<div class = "flex justify-center items-center w-20 h-20 shadow-lg relative bg-purple-200 -top-3 left-3 z-[4]">2</div>
<div class = "flex justify-center items-center w-20 h-20 shadow-lg relative bg-green-200 -top-6 left-6 z-[3]">3</div>
<div class = "flex justify-center items-center w-20 h-20 shadow-lg relative bg-blue-200 -top-9 left-9 z-[2]">4</div>
<div class = "flex justify-center items-center w-20 h-20 shadow-lg relative bg-yellow-200 -top-12 left-12 z-[1]">5</div>

Файл tailwind.config.js для проекта, который я использую:

const defaultTheme = require('tailwindcss/defaultTheme')

module.exports = {
  mode: 'jit',
  content: ['./src/**/*.js'],
  darkMode: 'media',
  theme: {
    extend: {
      fontFamily: {
        sans: ['Inter var', ...defaultTheme.fontFamily.sans]
      },
      colors: {
        transparent: 'transparent',
        current: 'currentColor',
        indy: {
          50: '#e0d3ef',
          100: '#c4b7d4',
          200: '#a99cb8',
          300: '#8d809d',
          400: '#726482',
          500: '#564867',
          600: '#3b2d4b',
          700: '#1f1130',
          800: '#1a0f29',
          900: '#150c21'
        },
        error: {
          DEFAULT: '#FF0055',
          50: '#FFB8CF',
          100: '#FFA3C2',
          200: '#FF7AA7',
          300: '#FF528B',
          400: '#FF2970',
          500: '#FF0055',
          600: '#C70042',
          700: '#8F0030',
          800: '#57001D',
          900: '#1F000A'
        },
        success: {
          DEFAULT: '#22CF6B',
          50: '#B6F3D0',
          100: '#A4F0C4',
          200: '#81EAAD',
          300: '#5EE597',
          400: '#3BDF80',
          500: '#22CF6B',
          600: '#1A9F52',
          700: '#126F39',
          800: '#0A3E20',
          900: '#020E07'
        }
      }
    }
  },
  variants: {
    extend: {
      opacity: ['disabled']
    }
  },
  plugins: [require('@tailwindcss/forms')]
}

Обновлено:

  1. Пример в CodePen не работал из-за Tailwind v2, который не поддерживал произвольные значения.

  2. В моем примере мне нужен собственный z-индекс для каждого элемента в списке строк, потому что каждый из этих элементов имеет раскрывающийся список, который при открытии появляется под списком. Итак, чтобы сгенерировать значение z-index для произвольного значения, я использую следующий код:

const containerClasses = `relative inline-block text-left left-[-75px] z-[${itemsLength - index}]`
// itemsLength is the length of items in an array
// index is the index of each item

Ваш codepen включает статическую таблицу стилей tailwind v2. Произвольные значения доступны только с JIT-компилятором.

andreivictor 05.12.2022 22:17

что он показывает, когда вы наводите курсор на любой из них?

Yilmaz 05.12.2022 22:19

@andreivictor Внутри проекта версия Tailwind — 3.0.24, а в файле tailwind.config.js для свойства mode установлено значение jit.

nikitahl 05.12.2022 22:21

Это онлайн-демонстрация с вашим кодом, используя Tailwind Play: play.tailwindcss.com/L1hP3hoeHY. Я думаю, это нормально. Так что проблема может быть с tailwind.config.js. Пожалуйста, вставьте сюда его содержание.

andreivictor 05.12.2022 22:23

@Yilmaz элемент выделен, и отображается всплывающая подсказка с элементом, например: div.relative.inline-block.text-left.left-[-75px].z-[3]

nikitahl 05.12.2022 22:25

@andreivictor Я вставил содержимое файла tailwind.config.js в основной вопрос.

nikitahl 05.12.2022 22:28

Этот отступ `left-[-75px] тоже произвольный? Правильно ли работают другие произвольные значения для других свойств?

andreivictor 05.12.2022 22:29

Да, другие произвольные значения работают.

nikitahl 05.12.2022 22:30

@nikitahl У меня `tailwindcss": "^3.0.24" `установлен без какой-либо специальной конфигурации. и когда я навожу курсор z[3] я получаю это .z-\[3\] { z-index: 3; }

Yilmaz 05.12.2022 22:30

Я обновил первоначальный вопрос, поскольку сейчас он частично не актуален.

nikitahl 05.12.2022 22:48
Как сделать компонент справочного центра с помощью TailwindCSS
Как сделать компонент справочного центра с помощью TailwindCSS
Справочный центр - это веб-сайт, где клиенты могут найти ответы на свои вопросы и решения своих проблем. Созданный для решения многих распространенных...
REACT и NEXT JS вместе с Tailwind CSS
REACT и NEXT JS вместе с Tailwind CSS
Наличие собственного или персонального сайта необходимо в современном мире, а сочетание React и Next JS позволяет разработчику сделать это за меньшее...
Современные подходы к организации и работе с CSS в проекте
Современные подходы к организации и работе с CSS в проекте
Любой, кто писал CSS в течение некоторого времени, знает о сложностях, которые с этим связаны, и о том, насколько это может быть болезненно.
Как использовать псевдокласс :hover в Tailwind только тогда, когда это действительно необходимо (при наличии курсора)
Как использовать псевдокласс :hover в Tailwind только тогда, когда это действительно необходимо (при наличии курсора)
Я люблю Tailwind. Раньше я относился к нему с подозрением, но как только я попробовал его использовать, я был поражен тем, сколько времени он мне...
0
10
224
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Проблема в версии Tailwind, которую вы используете. Документация, на которую вы ссылаетесь, относится к версии 3.2.4, но в вашем примере кода используется версия 2: https://v2.tailwindcss.com/docs/z-index

Обновите версию попутного ветра до версии 3.2.4 и повторите попытку.

Это ваш код с использованием v3.2.4 https://play.tailwindcss.com/L1hP3hoeHY

Ответ принят как подходящий

Вы пытаетесь сгенерировать имена динамических классов:

`z-[${itemsLength - index}]`

что не сработает, потому что Tailwind на самом деле не оценивает ваш исходный код. Tailwind не знает, что z-[${itemsLength - index}] станет z-[1], z-[2] и т. д. (этот код скомпилирован в React).

Tailwind может обнаруживать только статические неразрывные строки классов, а это означает, что ваши классы должны существовать как полные строки, чтобы Tailwind мог их правильно обнаружить.

неправильный:

<div class = "text-{{ error ? 'red' : 'green' }}-600"></div>

правильный:

<div class = "{{ error ? 'text-red-600' : 'text-green-600' }}"></div>

Теперь возможным решением может быть «список безопасных» некоторых классов (Tailwind будет генерировать определенные имена классов, которых нет в ваших файлах содержимого), используя опцию safelist:

safelist: [
    'z-[1]',
    'z-[2]',
    ...
  ]

но я не знаю, подойдет ли он вам, так как количество предметов может быть переменным.

Мое предложение:

  • изменить порядок в массиве items (в DOM первый элемент будет последним элементом)
  • используйте display: flex; flex-direction: column-reverse; (в Tailwind, flex flex-col-reverse) для родителя. Таким образом, вам больше не нужен z-index.

https://play.tailwindcss.com/2JjQSwBYlB

Дополнительная информация в документах Tailwind:

Спасибо @andreivictor за разъяснения по сгенерированным классам в Tailwind, я этого не знал. В моем случае реверсирование массива с помощью flex-direction: column-reverse действительно сработало.

nikitahl 06.12.2022 10:22

Другие вопросы по теме