diff --git a/src/tool/color.ts b/src/tool/color.ts index bedbd71fa..bacf1fa9e 100644 --- a/src/tool/color.ts +++ b/src/tool/color.ts @@ -233,15 +233,15 @@ export function parse(colorStr: string, rgbaArr?: number[]): number[] { ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1) : setRgba(rgbaArr, 0, 0, 0, 1); } - alpha = parseCssFloat(params.pop() as string); // jshint ignore:line + alpha = parseCssFloat(params.pop()); // jshint ignore:line // Fall through. case 'rgb': - if (params.length === 3 || params.length === 4) { + if (params.length >= 3) { setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), - alpha + params.length === 3 ? alpha : parseCssFloat(params[3]) ); putToCache(colorStr, rgbaArr); return rgbaArr; @@ -255,7 +255,7 @@ export function parse(colorStr: string, rgbaArr?: number[]): number[] { setRgba(rgbaArr, 0, 0, 0, 1); return; } - params[3] = parseCssFloat(params[3] as string); + params[3] = parseCssFloat(params[3]); hsla2rgba(params, rgbaArr); putToCache(colorStr, rgbaArr); return rgbaArr; diff --git a/test/ut/spec/tool/color.test.ts b/test/ut/spec/tool/color.test.ts index 5b4423f56..9a5fe37c4 100644 --- a/test/ut/spec/tool/color.test.ts +++ b/test/ut/spec/tool/color.test.ts @@ -7,9 +7,14 @@ describe('colorTool', function () { ['rgba(17, 163, 69, 0.5)', [17, 163, 69, 0.5]], ['rgb(17, 163, 69)', [17, 163, 69, 1]], ['rgb(2, 163, 254, 1)', [2, 163, 254, 1]], + ['rgb(2, 163, 254, 0.8)', [2, 163, 254, 0.8]], + ['rgb(2, 163, 254, 20%)', [2, 163, 254, 0.2]], + ['rgba(2, 163, 254, 50%)', [2, 163, 254, 0.5]], ['#14c4ba00', [20, 196, 186, 0]], + ['#14c4bacc', [20, 196, 186, 0.8]], ['#14c4ba', [20, 196, 186, 1]], ['#07f0', [0, 119, 255, 0]], + ['#07fc', [0, 119, 255, 0.8]], ['#07f', [0, 119, 255, 1]], ['red', [255, 0, 0, 1]], ['blue', [0, 0, 255, 1]]