Не работают пользовательские произвольные цвета в Django tailwind
Я использую django с django-tailwind для создания сайта, который связан со смешиванием цветов. Я беру кучу цветов из базы данных и смешиваю их вместе. В результате получаются новые цвета, которые я не могу записать в конфигурации tailwind, поэтому я пытаюсь использовать произвольные значения пользовательских цветов из документации. Css для цвета отображается правильно в моем инспекторе, но сам цвет не компилируется.
Я также заметил, что если я вручную ввожу шестнадцатеричный цвет в любом месте кода (например, на другом элементе), все элементы с этим конкретным цветовым кодом отображаются правильно, поэтому я предполагаю, что это связано с тем, что django-tailwind не компилирует цвета, поскольку они определяются во время выполнения или что-то в этом роде.
Мой код шаблона django выглядит следующим образом:
{% for day_obj in days %}
<div class="flex flex-col bg-[{{day_obj.day.color}}]">
Но это не работает. Однако, это
будет правильно отображать все элементы, которые имеют этот конкретный цветовой код: #82e153. Элементы, которые отображались раньше, также имеют тенденцию оставаться после удаления вручную введенного hex-кода, но обычно просто перестают отображаться через некоторое время (я предполагаю, что из-за некоторого кэширования цвета в таблице стилей)
Есть ли способ заставить это работать или я должен просто прибегнуть к использованию чего-то другого, например CDN? Я действительно хочу придерживаться django-tailwind на данный момент.
Я думаю, что для этого можно использовать переменные CSS. См. tailwind docs. Можно добавить цвет в конфигурацию tailwind, например:
module.exports = {
theme: {
extend:
colors: {
mixed: 'rgb(var(--color-mixed) / <alpha-value>)',
},
}
}
Теперь вы можете использовать класс bg-mixed
в вашем html.
Установить CSS var можно с помощью атрибута style:
style = { "--color-mixed": 130 225 83 }
(это должны быть значения RGB, разделенные пробелом). Я не очень хорошо разбираюсь в Django, но думаю, что замена значения на {{day_obj.day.color}}
будет работать, потому что браузер добавит значение в CSS var, которое будет использоваться скомпилированным классом Tailwind
<div class="flex flex-col bg-mixed" style={"--color-mixed": {{day_obj.day.color}} }>
Надеюсь, это поможет.