Sass lightness()函数不适用于TailwindCSS主题变量
我有一个项目主题的彩色Sass地图,让我有机会循环并生成类选项(例如,Sass lightness()函数不适用于TailwindCSS主题变量,sass,tailwind-css,Sass,Tailwind Css,我有一个项目主题的彩色Sass地图,让我有机会循环并生成类选项(例如,.row--primary和.row--secondary等),而不必手动使用Tailwind的变量指定它们。这些定义如下: $colors: ( 'primary': theme('colors.green.700'), 'secondary': theme('colors.red.500'), ); 然后使用我的.rowpartial,我可以执行以下操作: .row { @each
.row--primary
和.row--secondary
等),而不必手动使用Tailwind的变量指定它们。这些定义如下:
$colors: (
'primary': theme('colors.green.700'),
'secondary': theme('colors.red.500'),
);
然后使用我的.row
partial,我可以执行以下操作:
.row {
@each $name, $hex in $colors {
&--#{$name} {
background: $hex;
// Setting the text colour based on how dark/light the bg is.
color: set-text-color($hex);
}
}
}
在这里,有一个利用Sass亮度功能的函数,因此我可以根据背景自动生成暗文本或亮文本:
@function set-text-color($color) {
@if (lightness($color) > 80) {
@return color('black');
} @else {
@return color('white');
}
}
但这会引发以下错误:错误:“亮度($color)”的参数“$color”必须是颜色
为了解决这个问题,我做了很多努力。当我将使用tailwind变量(theme(
)的主题地图变量替换为基本十六进制时,它就起作用了。有没有办法让我仍然可以访问TailwindCSS变量?Tailwind应用于postss阶段,该阶段在更少、scss、sass处理器之后。由于theme()是一个Tailwind函数,因此该值在预处理器编译期间不可用
这一特殊情况将得到进一步解释
我还没有尝试过(但很快就会尝试),但您应该能够将颜色值存储在JSON文件中。然后使用在SCSS中导入此文件。然后返回tailwind.config.js
导入此JSON文件并使用其中的值。这将为你的价值观创造一个单一的真实来源。这意味着主题('colors.green.700')
不是一种颜色。尝试@debug
并查看它返回什么。调试器正在输出DEBUG:color:theme(“colors.orange.500”)
。所以它不是获取与函数相关联的Tailwind变量,而是按原样呈现它。是的,这就是我猜测的。不幸的是,您无法使用Sass提取任何“外来”数据。