function setHalfOpacity(rgbaString) {
// 验证rgbaString是否符合rgba(r,g,b,a)的格式
// 这里只做了简单的验证,可能需要更严格的验证逻辑
if (!/^rgba\(\d+,\d+,\d+,(0\.\d{1,2}|1(?:\.0{1,2})?)\)$/.test(rgbaString)) {
throw new Error('Invalid rgba string format');
}
// 使用正则表达式提取RGB值和alpha值
const [, red, green, blue, alpha] = rgbaString.match(/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*(0\.\d+|1(?:\.0{1,2})?)\)$/);
// 将提取的值转换为浮点数(如果它们不是已经是的话)
const redFloat = parseFloat(red);
const greenFloat = parseFloat(green);
const blueFloat = parseFloat(blue);
const alphaFloat = parseFloat(alpha); // 这里虽然转换了,但我们不直接使用它
// 返回新的rgba字符串,其中alpha被设置为0.5
return `rgba(${red}, ${green}, ${blue}, 0.5)`;
}
// 使用示例
const a = 'rgba(49, 61, 57, 1)';
const halfOpaqueColor = setHalfOpacity(a);
console.log(halfOpaqueColor); // 输出: rgba(49, 61, 57, 0.5)
设置动态样式不生效时 尝试给rgba(里面空格删除)