输入的颜色如何计算背景颜色?
How for entered color calculate background color?
在我的@vue/cli 4.1.1 应用程序用户中输入颜色,我必须输出
输入颜色的颜色值,我想知道如何计算和设置背景颜色
确保输入的颜色值清晰可见。我的意思是如果用户输入白色(或接近)
背景必须是深色的?
谢谢
您可以根据亮度来判断输入的颜色是浅色还是深色。
在这里您可以找到a formula它的计算依据。
因此,例如,您可以像这样定义函数 isLight
function isLight(color) {
// Converting hex color to rgb
const [red, green, blue] = hexToRgb(color);
// Determine luminance
const luminance = (0.299 * red + 0.587 * green + 0.114 * blue)/255;
// Returning true if color is light
return luminance > 0.5;
}
// function for converting hex colors to rgb array format
function hexToRgb(hex) {
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? [
parseInt(result[1], 16),
parseInt(result[2], 16),
parseInt(result[3], 16)
] : null;
}
通过使用此功能,您可以确定用户颜色是浅色还是深色,从而设置合适的背景
您可以为每个 rgb
提供反色 - 255-color
function bg(r, g, b) {return [255-r, 255-g, 255-b]}
如果你得到的是十六进制格式,你可以把它转换成rgb
,然后取反。像这样:
function invert(hex){
hex = parseInt(hex.substring(1), 16);
var r = hex >> 16;
hex -= r << 16;
var g = hex >> 8;
hex -= g << 8;
var b = hex;
return `rgb(${255-r},${255-g},${255-b})`;
}
var color1 = "#eeff00";
var color2 = "#22faef";
var color3 = "#f1f1f1";
document.querySelector('#a').style = `color:${color1};background-color:${invert(color1)}`;
document.querySelector('#b').style = `color:${color2};background-color:${invert(color2)}`;
document.querySelector('#c').style = `color:${color3};background-color:${invert(color3)}`;
div {
padding: 10px;
}
<div id="a">Hello world!</div>
<div id="b">Hello world!</div>
<div id="c">Hello world!</div>
在我的@vue/cli 4.1.1 应用程序用户中输入颜色,我必须输出 输入颜色的颜色值,我想知道如何计算和设置背景颜色 确保输入的颜色值清晰可见。我的意思是如果用户输入白色(或接近) 背景必须是深色的?
谢谢
您可以根据亮度来判断输入的颜色是浅色还是深色。
在这里您可以找到a formula它的计算依据。
因此,例如,您可以像这样定义函数 isLight
function isLight(color) {
// Converting hex color to rgb
const [red, green, blue] = hexToRgb(color);
// Determine luminance
const luminance = (0.299 * red + 0.587 * green + 0.114 * blue)/255;
// Returning true if color is light
return luminance > 0.5;
}
// function for converting hex colors to rgb array format
function hexToRgb(hex) {
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? [
parseInt(result[1], 16),
parseInt(result[2], 16),
parseInt(result[3], 16)
] : null;
}
通过使用此功能,您可以确定用户颜色是浅色还是深色,从而设置合适的背景
您可以为每个 rgb
255-color
function bg(r, g, b) {return [255-r, 255-g, 255-b]}
如果你得到的是十六进制格式,你可以把它转换成rgb
,然后取反。像这样:
function invert(hex){
hex = parseInt(hex.substring(1), 16);
var r = hex >> 16;
hex -= r << 16;
var g = hex >> 8;
hex -= g << 8;
var b = hex;
return `rgb(${255-r},${255-g},${255-b})`;
}
var color1 = "#eeff00";
var color2 = "#22faef";
var color3 = "#f1f1f1";
document.querySelector('#a').style = `color:${color1};background-color:${invert(color1)}`;
document.querySelector('#b').style = `color:${color2};background-color:${invert(color2)}`;
document.querySelector('#c').style = `color:${color3};background-color:${invert(color3)}`;
div {
padding: 10px;
}
<div id="a">Hello world!</div>
<div id="b">Hello world!</div>
<div id="c">Hello world!</div>