vue实现颜色进制转化

1.rgb值转十六进制值

/**
 * Convert rgb value to hex value.
 * rgb值转十六进制值
 * @method rgbToHex
 * @param r
 * @param g
 * @param b
 * @returns {string} eg:'#00ff00'
 */
rgbToHex (r, g, b) {
    var s = ((r << 16) | (g << 8) | b).toString(16);
    while (s.length < 6)
        s = "0" + s;
    return '#' + s;
},

2.十进制值转十六进制值颜色

/**
 * 十进制值转十六进制值颜色
 * @method toHexColor
 * @param num {number} 十进制颜色值
 * @returns {string} eg:'#00ff00'
 */
toHexColor(num) {
    var s = num.toString(16);
    while (s.length < 6)
        s = "0" + s;
    return '#' + s;
},

3.判定颜色是否是深色

/**
 * 判定颜色是否是深色
 * @param color  {string} eg:'#00ff00'
 */
isDark(color){
    var rgb = this.colorToRgb(color,1);
    return rgb[0]*0.299 + rgb[1]*0.578 + rgb[2]*0.114 < 192;
},

4.rgba值转rgba字符串

/**
 * rgba值转rgba字符串
 * @method asColorStyle
 * @param r
 * @param g
 * @param b
 * @param a
 * @returns {string} eg:'rgba(255,255,255,0.5)'
 */
asColorStyle(r, g, b, a) {
    return "rgba(" + r + ", " + g + ", " + b + ", " + a + ")";
},

5.获取随机颜色

/**
 * 获取随机颜色
 * @returns {string}
 */
getRandomColor() {
    return "#"+("00000"+((Math.random()*16777215+0.5)>>0).toString(16)).slice(-6);
},

6.十六进制值转rgba值

/**
 * 十六进制值转rgba值
 * @method colorToRgb
 * @param sColor {string} '#00ff00'/'#00ff00ff'
 * @param returnType {int} 0: RGB(0,0,0)/rgba(0,0,0,0) || 1: [0,0,0] || 2:{rgba}
 * @param alpha {int} 优先认8位颜色的a值
 * @returns {*}
 */
colorToRgb(sColor, returnType, alpha) {
    sColor = sColor.toLowerCase();
    var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/;
    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;
        }
        //处理6-8位的颜色值
        var sColorChange = [];
        sColor = sColor.slice(1);
        for (var i = 0; i < sColor.length; i += 2) {
            sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2)));
        }
        if (returnType == 0){
            if(sColorChange.length == 4)
                sColorChange[3]/=255;
            else if(typeof alpha != 'undefined')
                sColorChange.push(alpha)
            var prefix = sColorChange.length == 4 ? 'rgba(' : 'RGB(';
            return prefix + sColorChange.join(",") + ")";
        }
        else if (returnType == 1){
            if(sColorChange.length<4)
                sColorChange.push((typeof alpha != 'undefined' ? alpha : 1)*255);
            return sColorChange;
        }
        else if(returnType == 2){
            return {r:sColorChange[0],g:sColorChange[1],b:sColorChange[2],a:sColorChange[3]||(typeof alpha != 'undefined' ? alpha : 1)}
        }
    } else {
        return sColor;
    }
},

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值