仅使用CSS计算CSS颜色的倒数

ygya80vv  于 2023-10-21  发布在  其他
关注(0)|答案(2)|浏览(95)

所以在下面的代码中,我有一个--pop颜色和一个--bg背景色。我想从这两个计算悬停颜色如下:
混合--pop与逆--bg。例如,如果背景是黑色,我希望将--pop与白色混合。--bg可以是任何颜色。

  1. --pop: #123456;
  2. --bg: black;
  3. --hover: color-mix(in srgb, var(--pop) 30%, ???inverse of --bg here???)
7y4bm7vi

7y4bm7vi1#

如果JavaScript的解决方案是好的,你可以尝试这样的东西:

  1. const inverseColor = (color) => {
  2. color = color.substring(1);
  3. color = parseInt(color, 16);
  4. color = 0xFFFFFF ^ color;
  5. color = color.toString(16); // convert to hex
  6. return `#${(`000000` + color).slice(-6)}`; // pad with leading zeros
  7. };
  8. let color = getComputedStyle(document.documentElement)
  9. .getPropertyValue('--bg');
  10. let inverseBG = inverseColor(color);
  11. document.documentElement.style
  12. .setProperty('--bg-inverse', inverseBG);

然后

  1. --hover: color-mix(in srgb, var(--pop) 30%, var(--bg-inverse));
展开查看全部
wmtdaxz3

wmtdaxz32#

这是一个未来使用relative color syntax的仅限CSS的解决方案

  1. --pop: #123456;
  2. --bg: black;
  3. --hover: color-mix(in srgb, var(--pop) 30%, rgb(from var(--bg) calc(1 - r) calc(1 - g) calc(1 - b)))

它现在还没有支持,但很快你就可以在Chrome上测试它了

相关问题