字符串转颜色值
字符串转哈希(数字)
javascript
function hashCode(str) {
// str to hash
let hash = 0;
for (let i = 0; i < str.length; i++) {
hash = str.charCodeAt(i) + ((hash << 5) - hash);
}
return hash;
}
let string = "https://www.zhengxinonly.com";
console.log(hashCode(string));
// 2379989682
哈希转颜色值
javascript
function intToRGB(i) {
let c = (i & 0x00ffffff).toString(16).toUpperCase();
return "00000".substring(0, 6 - c.length) + c;
}
console.log(intToRGB(hashCode(string)));
// 'DBC2B2'
获取不同程度的颜色值
javascript
const hexToRgb = (str) => {
let hexs = null;
let reg = /^\#?[0-9A-Fa-f]{6}$/;
if (!reg.test(str)) return alert("色值不正确");
str = str.replace("#", ""); // 去掉 #
hexs = str.match(/../g); // 切割成数组 409EFF => ['40','9E','FF']
// 将切割的色值转换为 16 进制
for (let i = 0; i < hexs.length; i++) hexs[i] = parseInt(hexs[i], 16);
return hexs; // 返回 rgb 色值 [64, 158, 255]
};
const getLightColor = (color, level) => {
let rgb = hexToRgb(color);
let hexs = "";
// 循环对色值进行调整
for (let i = 0; i < 3; i++) {
rgb[i] = Math.floor((255 - rgb[i]) * level + rgb[i]); // 始终保持在 0-255 之间
hexs += rgb[i].toString(16);
}
return hexs; // [159, 206, 255]
};
console.log(stringToHexColor(string));
// 'DBC2B2'
console.log(getLightColor("#" + stringToHexColor(string), 0.8));
// 'f7f2ef'