如何在 Rgba SASS/SCSS 中以不透明度显示 CurrentColor?

How to Display CurrentColor with Opacity in Rgba SASS/SCSS?

有什么方法可以显示 CurrentColor with Opacity in Rgba from 颜色 列表使用 SASS/SCSS?

我的颜色列表:

$colors: (
  "transparent": (
     hex: transparent,
     rgb: (0, 0, 0)
  ),
  "current": (
     hex: currentColor,
     rgb: (255, 255, 255)
  ),
  "white": (
    hex: #FFFFFF,
    rgb: (255, 255, 255)
  ),
  "black": (
    hex: #000000,
    rgb: (0, 0, 0)
  ),
) !default;

编译成CSS后的预期结果:

.color-transparent {
  --color-opacity: 0;
  --color-var: transparent;
  color: (var(--color-var), rgba(0, 0, 0, var(--color-opacity)));
}

.color-current {
  --color-opacity: 0;
  --color-var: currentColor;
  color: (var(--color-var), rgba(255, 255, 255, var(--color-opacity)));
}

.color-white {
  --color-opacity: 0;
  --color-var: #FFFFFF;
  color: (var(--color-var), rgba(255, 255, 255, var(--color-opacity)));
}

.color-black {
  --color-opacity: 0;
  --color-var: #000000;
  color: (var(--color-var), rgba(0, 0, 0, var(--color-opacity)));
}

操作方法如下:

$colors: (
  "transparent": (
     hex: transparent,
     rgb: (0, 0, 0)
  ),
  "current": (
     hex: currentColor,
     rgb: (255, 255, 255)
  ),
  "white": (
    hex: #FFFFFF,
    rgb: (255, 255, 255)
  ),
  "black": (
    hex: #000000,
    rgb: (0, 0, 0)
  ),
) !default;


// $COLOR = KEY, $VALUE = VALUE, $COLORS = MAP
@each $color, $values in $colors {
    .color-#{$color} {
        --color-opacity: 0;
        @each $value, $subvalue in $values {
            @if $value == 'hex' {
        --color-var: #{$subvalue};
            } @else {
                color: ( var(--color-var), rgba( #{$subvalue}, var(--color-opacity)));
            }
        }
    }
}

CSS 输出

.color-transparent {
  --color-opacity: 0;
  --color-var: transparent;
  color: var(--color-var), rgba(0, 0, 0, var(--color-opacity));
}

.color-current {
  --color-opacity: 0;
  --color-var: currentColor;
  color: var(--color-var), rgba(255, 255, 255, var(--color-opacity));
}

.color-white {
  --color-opacity: 0;
  --color-var: #FFFFFF;
  color: var(--color-var), rgba(255, 255, 255, var(--color-opacity));
}

.color-black {
  --color-opacity: 0;
  --color-var: #000000;
  color: var(--color-var), rgba(0, 0, 0, var(--color-opacity));
}