如何确定给定颜色的互补颜色,目标是生成与给定颜色相反的颜色。例如,如果当前的颜色为黑色,则相反的是白色。在为具有动态颜色的文本设置对比的背景颜色时,此任务至关重要。 rgb颜色以获取互补值。将倒置的组件转换回十六进制格式。
确保在必要时用领先的零填充十六进制值。 如果(hex.indexof('#')=== 0){ 十六进制= hex.slice(1); } //将3二元十六进制转换为6位数。 if(hex.length === 3){ 十六进制[0]十六进制[0]六角[1] hex [1] hex [2] hex [2]; } 如果(hex.length!== 6){ 提出新错误(“无效的十六进制颜色。”); } //反转颜色组件。 var r =(255 -parseint(hex.slice(0,2),16))。 g =(255 -parseint(hex.slice(2,4),16))。 b =(255 -parseint(hex.slice(4,6),16))。 //用领先的零填充每个组件并返回。 返回'#'padzero(r)padzero(g)padzero(b); } 功能padzero(str,len){ len = len || 2; var Zeros = new Array(Len).join('0'); 返回(zeros str).slice(-len); }示例输出:
一个带有“ BW”选项的高级版本允许您指定结果是否应该更接近黑色或白色,以提供更好的对比度,以改善可读性:
十六进制[0]六角[1] hex [1] hex [2] hex [2]; } 如果(hex.length!== 6){ 提出新错误(“无效的十六进制颜色。”); } var r = parseint(hex.slice(0,2),16),, g = parseint(hex.slice(2,4),16), B = Parseint(Hex.Slice(4,6),16); 如果(bw){ //公式确定颜色是否更接近黑色或白色。 返回(r * 0.299 g * 0.587 b * 0.114)> 186 ? '#000000' :'#ffffff'; } //反转颜色组件。 r =(255 -r).tostring(16); g =(255 -g).tostring(16); b =(255 -b).tostring(16); //用领先的零填充每个组件并返回。 返回'#'padzero(r)padzero(g)padzero(b); }免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3