真正的问题
编写一个函数,该函数可以从任何CSS颜色或通过类定义的颜色返回颜色值。
初始表述
我想知道传递给我的函数的参数字符串是否是颜色-仅回答这一点就已经很好了-然后知道它的十六进制值。
因此,我定义了一个正则表达式来查找字符串是否类似于#fff
或rgb(0,0,0)
,但它无法捕获诸如black
和white
之类的CSS标准颜色。我应该测试每个颜色名称,还是有任何方法或预先存在的功能可以做到这一点?谢谢。
个人使用的解决方案
- 如果您想要带点的类名,例如“.myClass”
function getColor(classOrColor) {
if(classOrColor[0] === '.') {
var temp = $('<div id="temp" style="display:none;" class="'+ classOrColor.split('.').join(' ') + '"/>').appendTo('body');
var color = temp.css('color');
temp.remove();
return color;
} else {
return classOrColor;
}
}
使用示例:
getColor('yellow')
getColor('#abc')
getColor('rgb(1,2,3)')
getColor('.myClass .myOtherClass')
mplungjan答案的解决方案
- 如果您想要像"myClass"这样的普通类名
使用此答案搜索是否存在具有此名称的类:https://dev59.com/QHNA5IYBdhLWcg3wYMx-
然后调用相同的函数(稍作修改)
function getColor(classOrColor) {
if(classExists(classOrColor)) {
var temp = $('<div id="temp" style="display:none;" class="'+ classOrColor + '"/>').appendTo('body');
var color = temp.css('color');
temp.remove();
return color;
} else {
return classOrColor;
}
}
使用示例:
getColor('#abc')
getColor('myClass')