【发布时间】:2020-10-13 19:32:06
【问题描述】:
我在由以下 html 和 typescript 代码设置的图像上有一个默认的线性渐变:
<header [style.background-image]="cv2HeaderStyle('0, 0, 0, 0.1', '0, 0, 0, 0.8')"></header>
cv2HeaderStyle(rgba1: string, rgba2: string) {
return this.sanitizer.bypassSecurityTrustStyle(
`linear-gradient(to bottom, rgba(${rgba1}), rgba(${rgba2})),
url(${'../../../assets/imgs/woman-girl-silhouette-jogger-40751.jpg'})`
);
}
在一个表单中,我有一个 ngx-color-picker 的下拉菜单,允许用户更改线性渐变的 rgba 值。
<input
(colorPickerChange)="updateFirestoreColor($event)"
id="filmColorPicker"
[(colorPicker)]="color"
[style.background]="color"
[cpOutputFormat]='auto'/>
我正在使用函数将我的 typescript 文件中的十六进制代码转换为 rgba 值,然后尝试使用新的 rgba 值设置新的 cv2HeaderStyle,但是,以下代码不起作用:
updateFirestoreColor(color) {
var setColor1WithOpacity = this.hexToRgb(color) + ', 0.1)';
var setColor2WithOpacity = this.hexToRgb(color) + ', 0.8)';
this.cv2HeaderStyle(setColor1WithOpacity, setColor2WithOpacity);
}
hexToRgb(hex){
var c;
if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)){
c= hex.substring(1).split('');
if(c.length== 3){
c= [c[0], c[0], c[1], c[1], c[2], c[2]];
}
c= '0x'+c.join('');
return 'rgba('+[(c>>16)&255, (c>>8)&255, c&255].join(',');
}
throw new Error('Bad Hex');
}
我没有任何控制台日志错误,并且控制台正在获取正确的 rgba 值
【问题讨论】:
-
this.hexToRgbA里面是什么?this.cv2HeaderStyle向这个方法发送相同颜色的 rgba1 和 rgba2 参数 -
我更新了帖子
标签: javascript css angular