将 CSS 颜色解析为 RGBA 值
Parse CSS Color to RGBA values
我想从一些<颜色>CSS数据类型值中获取RGBA值。颜色>
该函数应接受描述某种颜色的字符串,并返回具有红色、绿色、蓝色和 alpha 值的对象。
例如:
parseColor('red') -> { red: 255, green: 0, blue: 0, alpha: 1 }
parseColor('#f00') -> { red: 255, green: 0, blue: 0, alpha: 1 }
parseColor('rgb(255,0,0)') -> { red: 255, green: 0, blue: 0, alpha: 1 }
parseColor('hsla(0,100%,50%,0.1)') -> { red: 255, green: 0, blue: 0, alpha: 0.1 }
parseColor('transparent') -> { red: any_is_ok, green: any_is_ok, blue: any_is_ok, alpha: 0 }
所以,我尝试了这样的代码:
function parseColor(color) {
var x = document.createElement('div');
document.body.appendChild(x);
var color, rgba;
var red = 0, green = 0, blue = 0, alpha = 0;
try {
x.style = 'color: ' + color + '!important';
color = window.getComputedStyle(x).color
rgba = color.match(/rgba?'((.*)')/)[1].split(',').map(Number);
red = rgba[0];
green = rgba[1];
blue = rgba[2];
alpha = '3' in rgba ? rgba[3] : 1;
} catch (e) {
}
x.parentNode.removeChild(x);
return {'red': red, 'green': green, 'blue': blue, 'alpha': alpha};
}
它适用于Firefox,IE和Chrome。但我想知道window.getComputedStyle(x).color
会回来什么?此函数是否始终以rgb()
或rgba()
格式返回颜色?规格怎么说?
而且,还有其他方法可以实现parseColor
功能吗?
parseColor
函数通过创建虚拟元素并为其设置颜色来工作。所以它可以在 rgba() 或 rgb() 中获取颜色(这取决于color
是什么参数)但是结果将始终在 RGBA() 中,因为
alpha = '3' in rgba ? rgba[3] : 1;
这意味着如果没有 alpha(a),它将设置为 1
相关文章:
- CSS-如何定位内容数据标题
- 窗口大小html css
- 如果文本字段为空,则使用JavaScript应用CSS样式
- 动画.CSS重播
- 有没有一种方法可以防止img get请求使用css或js发生
- CSS表格:从列平移到整个表格宽度
- CKEditor-我在editor.css中的风格是't
- 单击更改图标并通过javascript添加一个css类
- 将CSS应用于printWindow.print();在Javascript中
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- CSS-若窗口太小,滚动条会出现在“表格”单元格上
- css(或jQuery)悬停时淡入淡出
- 为什么不'在JQuery中找到第二个css选择器的工作
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- 如何使用css动画/javascript使具有背景图像的元素出现
- 将浮点数字转换为RGBA CSS颜色的有效Alpha值
- (Chromium) CSS 和 javascript 中的 alpha 颜色值(以 rgba 为单位)
- 将 CSS 颜色解析为 RGBA 值
- 从JavaScript的css规则中提取RGB和RGBA
- 如何在CSS中创建随机RGBA颜色