You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击元素复制背景色时如何复制CSS变量var(--primary)而非RGB值

解决方案

jQuery的.css()方法获取的是浏览器计算后的最终样式值,无法直接返回CSS代码中写入的CSS变量表达式,推荐通过新增自定义数据属性的方式实现需求,实现简单、兼容性强,也方便后续扩展多颜色卡片场景。


修改后的完整代码

HTML代码

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<!-- 新增data-color-var属性存储需要复制的CSS变量字符串 -->
<div class="card" data-color-var="var(--primary)"></div>

CSS代码(无需修改)

body {
  --primary: #7306f9;
}

.card {
  background-color: var(--primary);
  height: 50px;
  width: 50px;
}

JavaScript代码

const copyToClipboard = str => {
    const el = document.createElement('textarea');
    el.value = str;
    document.body.appendChild(el);
    el.select();
    document.execCommand('copy');
    document.body.removeChild(el);
};

jQuery('.card').click( function () {
    // 读取自定义属性中的变量值复制即可
    const targetValue = $(this).data('color-var');
    copyToClipboard(targetValue);
});

可选替代方案(无需修改HTML)

如果不希望修改HTML新增属性,可以提前维护计算后RGB值与CSS变量的映射表,匹配后返回对应变量名,适合颜色变量固定的场景:

const copyToClipboard = str => {
    const el = document.createElement('textarea');
    el.value = str;
    document.body.appendChild(el);
    el.select();
    document.execCommand('copy');
    document.body.removeChild(el);
};

// 提前维护色值与对应CSS变量的映射关系
const colorMap = {
    'rgb(115, 6, 249)': 'var(--primary)'
    // 新增其他颜色时在这里补充对应关系即可
}

jQuery('.card').click( function () {
    const rgbColor = $(this).css("background-color");
    // 匹配到映射就返回变量名,匹配不到回退返回RGB值避免报错
    const targetValue = colorMap[rgbColor] || rgbColor;
    copyToClipboard(targetValue);
});

内容的提问来源于stack exchange,提问作者Kyle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:24:04