我想将box-shadow:rgb(255, 255, 255) 10px 10px 0px , rgb(0, 0, 0) 10px 10px 0px, rgb(255, 255, 255) 10px 10px 0px
转换为box-shadow:#FFF 10px 10px 0px , #000 10px 10px 0px, #FFF 10px 10px 0px
任何人都可以帮助我。
提前致谢。
答案 0 :(得分:0)
要将RGB转换为十六进制,您需要为每个r找到不同的源,g和b根据长度找到每个源的十六进制
function findMyHex(get) {
var hex = get.toString(16);
return hex.length == 1 ? "0" + hex : hex;
}
function tohex(r, g, b) {
return "#" + findMyHex(r) + findMyHex(g) + findMyHex(b);
}
console.log(tohex(255, 255, 255));
希望这会对你有所帮助。
答案 1 :(得分:0)
在javascript中,您可以使用.toString(base)
将数字转换为另一个数字(在这种情况下,它的基数为16 - > 十六进制)。
一个例子:
var r = 255;
var g = 128;
var b = 219;
var hex = "#" + r.toString(16) + g.toString(16) + b.toString(16);
// hex = #ff80db
你只需要在循环中通过所需的文本运行这样的东西并替换每次出现。
答案 2 :(得分:0)
也许是矫枉过正,
function rgbToHex(str_rgb, withShorts, b) {
var r, g, h;
if (arguments.length < 3) {
withShorts = !!withShorts;
h = str_rgb.match(/rgba?\( *(\d+) *, *(\d+) *, *(\d+)/);
r = +h[1];
g = +h[2];
b = +h[3];
} else {
r = str_rgb | 0, g = withShorts | 0, b = b | 0;
withShorts = !!arguments[3];
}
r = r.toString(16), g = g.toString(16), b = b.toString(16);
r = ('0' + r).slice(-2), g = ('0' + g).slice(-2), b = ('0' + b).slice(-2);
if (withShorts) {
if (r[0] === r[1])
if(g[0] === g[1])
if (b[0] === b[1])
return '#' + (r[0] + g[0] + b[0]).toUpperCase();
}
return '#' + (r + g + b).toUpperCase();
}
现在有
// ints
rgbToHex(255, 255, 255); // "#FFFFFF"
rgbToHex(255, 255, 255, true); // "#FFF"
// strings
rgbToHex('rgb(255, 255, 255)'); // "#FFFFFF"
rgbToHex('rgb(255, 255, 255)', true); // "#FFF"
// ignores alpha
rgbToHex('rgba(255, 255, 255, 0)'); // "#FFFFFF"
// does padding
rgbToHex(1, 10, 14); // "#010A0E"