在Next.js项目中,Tailwind自定义颜色无法正常工作。
在Next.js项目中,Tailwind自定义颜色无法正常工作。
在tailwind.config.js中配置的自定义颜色无法工作,当我将其分配给一个变量并像下面的示例中使用时。
其中button.colour = "custom-blue"(颜色数据从cms获取,并可以在cms中设置)
但是下面的代码运行得很好。
tailwind.config.js文件:
module.exports = { content: [ './pages/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}' ] , theme: { extend: { colors: { 'custom-blue':'#4AD7D1', }, }, }, plugins: [], important: true }
如何解决这个问题?
问题的出现原因是Tailwind在Next.js项目中无法使用自定义颜色,这是因为Tailwind不会运行源代码,无法检测动态构建的类名。而Tailwind的类清除工具(PurgeCSS)只会检查类是否在源代码中被引用,并保留它们。它不会包括像bg-${button.color}
这样动态创建的类。
解决方法是使用一个变通的方法,具体步骤如下:
首先,创建一个包含自定义颜色和对应类名的映射对象,例如:
const backgroundClassMap = { "custom-blue": "bg-custom-blue", };
然后,在需要使用颜色的地方,将对应的类名动态添加到元素上,例如:
<button class={`some other classes ${backgroundClassMap[button.color]}`}>
通过这种方法,类名bg-custom-blue
会被正确地引用和使用,因此不会被从构建中排除掉。