如何在HTML中使用CSS设置外部SVG的颜色?
问题的原因是要在HTML中使用CSS来设置外部SVG的颜色。解决方法是使用SVG滤镜来定义一个feColorMatrix滤镜,并将其应用于外部图像。
以下是解决方法的代码示例:
此外,还提供了一个ColorMatrixHelper类来生成矩阵颜色。可以使用getMatrix方法将十六进制颜色转换为矩阵颜色。
interface RgbColor { r: number; g: number; b: number; a: number; } export class ColorMatrixHelper { public static getMatrix(hexColor: string) { const rgbColor: RgbColor = ColorMatrixHelper.hexToRgb(hexColor); return ColorMatrixHelper.computeMatrixColor(rgbColor); } private static hexToRgb(hex3or6): RgbColor { const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; const hex6 = hex3or6.replace(shorthandRegex, (m, r, g, b) => r + r + g + g + b + b); var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i.exec(hex6); const base = 1 / 255; return result ? { r: parseInt(result[1], 16) * base, g: parseInt(result[2], 16) * base, b: parseInt(result[3], 16) * base, a: result[4] ? parseInt(result[4], 16) * base : 1, } : null; } private static computeMatrixColor(rgbColor: RgbColor): string { let matrix; if (rgbColor) { matrix = `0 0 0 0 ${rgbColor.r} ` + `0 0 0 0 ${rgbColor.g} ` + `0 0 0 0 ${rgbColor.b} ` + `0 0 0 ${rgbColor.a} 0`; } else { matrix = `1 0 0 0 0 ` + `0 1 0 0 0 ` + `0 0 1 0 0 ` + `0 0 0 1 0`; } return matrix; } }
以上是如何在HTML中使用CSS设置外部SVG颜色的原因和解决方法。