三种颜色模式值转换

接触前端以来,知道的颜色一直都是RBG模式和十六进制模式(#FFF),但是今天奇葩UI提了个BUG,根据背景颜色的HSL值的L去决定字体颜色,懵逼良久...

百度后发现HSL模式是工业界的一种说法,HSL分别是色相(H)、饱和度(S)、明度(L);我们所熟知的十六进制模式也有另一个说法叫HEX模式。

查询后发现并没有HEX转HSL的代码,遂根据网上的方法先行转到RGB再转到HSL。当然,我只算了L值...

hexToHsl(val){
        let sColor = val.toLowerCase();
        //十六进制颜色值的正则表达式
        let reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
        // 如果是16进制颜色
        if (sColor && reg.test(sColor)) {
          if (sColor.length === 4) {
            var sColorNew = "#";
            for (var i=1; i<4; i+=1) {
              sColorNew += sColor.slice(i, i+1).concat(sColor.slice(i, i+1));
            }
            sColor = sColorNew;
          }
          //处理六位的颜色值
          let sColorChange = [];
          for (var i=1; i<7; i+=2) {
            sColorChange.push(parseInt("0x"+sColor.slice(i, i+2)));
          }
          // return "RGB(" + sColorChange.join(",") + ")";
          let r = sColorChange[0] / 255, g = sColorChange[1] / 255, b = sColorChange[2] / 255;
          let max = Math.max(r, g, b), min = Math.min(r, g, b);
          let l = (max + min) / 2;
          return l;
        }
        return 0;
      }

别的模式转变后续也会整理出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值