Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法获得任何CSS颜色的十六进制值? 真正有问题_Javascript_Css - Fatal编程技术网

Javascript 有没有办法获得任何CSS颜色的十六进制值? 真正有问题

Javascript 有没有办法获得任何CSS颜色的十六进制值? 真正有问题,javascript,css,Javascript,Css,编写一个函数,从任何CSS颜色或类定义的颜色返回颜色值 初始配方 我想知道传递给我的函数的参数中的字符串是否是一个颜色-只回答已经很好了-然后知道它的十六进制值 因此,我定义了一个正则表达式来确定字符串是类似于#fff还是也类似于rgb(0,0,0),但它不能捕捉CSS标准颜色,例如黑色和白色。我是否应该测试每个颜色名称,或者是否有任何方法或预先存在的函数可以做到这一点?谢谢 个人使用的解决方案 如果希望在类名称前面加点,例如“.myClass” 函数getColor(classOrColo

编写一个函数,从任何CSS颜色或类定义的颜色返回颜色值

初始配方 我想知道传递给我的函数的参数中的字符串是否是一个颜色-只回答已经很好了-然后知道它的十六进制值

因此,我定义了一个正则表达式来确定字符串是类似于
#fff
还是也类似于
rgb(0,0,0)
,但它不能捕捉CSS标准颜色,例如
黑色
白色
。我是否应该测试每个颜色名称,或者是否有任何方法或预先存在的函数可以做到这一点?谢谢

个人使用的解决方案
  • 如果希望在类名称前面加点,例如“.myClass”
函数getColor(classOrColor){ 如果(classOrColor[0]='.'){ var temp=$('').appendTo('body'); var color=临时css(“颜色”); 移除温度(); 返回颜色; }否则{ 返回类或颜色; } } 用法示例:

getColor('yellow'))
getColor(“#abc”)
getColor('rgb(1,2,3'))
getColor('.myClass.myOtherClass')
基于mplungjan答案的解决方案
  • 如果您想要简单的类名,如“myClass”
使用以下答案搜索是否存在具有此名称的类:

然后调用相同的函数(稍加修改)

函数getColor(classOrColor){ 如果(类存在(classOrColor)){ var temp=$('').appendTo('body'); var color=临时css(“颜色”); 移除温度(); 返回颜色; }否则{ 返回类或颜色; } } 用法示例:

getColor('abc'))
getColor('myClass')
您可以使用-这不适用于IE8及以下版本

请参阅的答案,以获得比我更好的报道(在我写完后看到)


似乎没有一个现有的函数我不确定您需要这些值的确切目的,所以这可能不适用,但是SASS有大量的颜色函数,它们完全可以完成您试图使用javascript所做的事情。您可以输入十六进制值并返回rgba或hsla。在SASS:rgba(#fff,.1)returns->rgba(255255255,.1)@Matt的评论似乎更全面地涵盖了我的建议。我想它在IEI中只会变成“红色”,我已经想到了类似的东西(改用jQuery),但问题是,如果字符串错误,比如
inrestant color
,它将返回父级的颜色。如果你能告诉我一种知道颜色是否存在的方法,我会接受你的回答。所有这些的目的都是希望能够向函数发送一个类名,而不是一个颜色。没有查找表是不行的。但是你能详细说明一下“我希望能够向我的函数发送一个类名而不是颜色”吗?我的意思是,目前我可以将“危险类”传递给这个函数,这样,如果我设法检测到它不是CSS颜色值(这就是问题所在),我就用这个类名实例化一些div并返回它的颜色(以与getComputedStyle类似的方式)我希望你能理解我,我的英语太差了..嗯,这意味着你希望有一个同名的类。所以如果你有
.danger类{color:red}
如果存在这样的类,您希望返回红色。您可以使用先查找是否存在具有该名称的类,然后在存在该名称的类时使用其颜色。除非您有
。红色{color:blue}
或其他愚蠢的东西,否则这将起作用
function getRGB(str){
    var elem = document.createElement("div");
    elem.style.display="none";
    elem.style.color=str;
    document.body.appendChild(elem);
    return  window.getComputedStyle(elem,null).getPropertyValue("color");
  }
alert(getRGB("red"));