用JS实现给定的颜色计算一个适合的背景色

在做颜色选择时,为了能够直观的预览出颜色,我们如果一直用一个背景色会出现撞色,使预览不那么直观,这里我们就需要通过调整他的背景色来做个对比,这里介绍一种通过对比度的算法来计算背景色的方案
我们通过计算对比度,给出适合的黑白背景色,代码如下:
 

function calcBackgroundColor(hex) {
        // 将十六进制颜色转换为RGB数组
        if(hex.indexOf('#') === -1) {
          //rbg(1,1,1)
          hex = hex.replace(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/, function(match, r, g, b) {
            return'#' + ('0' + parseInt(r).toString(16)).slice(-2) +
              ('0' + parseInt(g).toString(16)).slice(-2) +
              ('0' + parseInt(b).toString(16)).slice(-2)
          })
        }
        // 移除十六进制字符串中的 '#' 字符
        hex = hex.replace('#', '')

        // 将颜色值转换为两个数字的字符串,然后解析为整数
        const r = parseInt(hex.substring(0, 2), 16)
        const g = parseInt(hex.substring(2, 4), 16)
        const b = parseInt(hex.substring(4, 6), 16)

        // 计算亮度
        const brightness = 0.299 * r + 0.587 * g + 0.114 * b

        // 如果亮度大于128,认为背景色较亮,返回黑色
        // 否则返回白色
        return brightness > 128 ? '#000000' : '#FFFFFF'
      }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值