如何在 scss 全局声明中使用 hsl 而不是 rgb javascript api

Pav*_*ank 6 javascript globalization sass reactjs next.js

这就是我的 next.config.js 的样子

// next.config.js

const env = require('./site.config').env;
const Colour = require('sass').types.Color;
const {r, g, b} = require('./site.config').customProperties;

const withBundleAnalyzer = require('@next/bundle-analyzer')({enabled: !!process.env.ANALYZE});

const config = {
  env: {
    ...env,
  },
  sassOptions: {
    functions: {
      'primaryOpacityColour()': function(){
        return new Colour(r, g,b)
        // here I want to return Colour in hsl form
      },
    },
  },
};

module.exports = withBundleAnalyzer(config);
Run Code Online (Sandbox Code Playgroud)

我无法以 hsl 形式返回 Color,有人能帮我解决这个问题吗?

Jay*_*yen 3

根据https://github.com/sass/sass/issues/2988你不能使用 javascript api 来做到这一点。dart-sass 在 dart api 中有它,但在 javascript api 中还没有。

您最好的选择是将 hsl 转换为 RGB 并返回 Color,就像您现在所做的那样。