我需要将所有RGB转换为HEX。
首先,我过滤所有元素以找到具有style属性的元素。
wrapper.find('*[style]').filter(function(){
console.log($(this).attr('style');
});
如果有任何RGB颜色,我需要转换为HEX
function rgbToHex(rgb){
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
if (rgb == null) {
return "";
} else {
return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
}
}
function hex(x) {
var hexDigits = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f");
return isNaN(x) ? "00" : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16];
}
要调用的函数是rgbToHex($(this).css('color'));
样式输出示例:font-family:Arial; background:rgb(255, 0, 0); line-height:10px; color:#fff; border-right-color:rgba(34,64,32,0.5);
如何过滤整个样式以仅抓取rgb,转换为十六进制以便能够以新值存储输出?
答案 0 :(得分:0)
我的回答:
wrapper.find('*[style]').filter(function(){
var output = '',
thisStyle = $(this).attr('style'),
arrayStyle = thisStyle.split(';').filter(function(el) {
return el.length != 0
});
$.each(arrayStyle, function(i,c){
var replaceRgb = c.replace(/ /g,'');
if(c.indexOf('rgb') !== -1) {
c = c.split(':');
replaceRgb = c[0]+':'+rgbToHex(c[1].replace(/ /g,''));
}
output += replaceRgb+';'
});
console.log(output);
});