亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

colorpicker顏色對照

colorpicker顏色對照

Cats萌萌 2018-08-01 09:11:19
rgb(255, 255, 0)跟#FFFF00都是表示同一種顏色,這兩種表示之間怎么轉換的?
查看完整描述

1 回答

?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

先轉化為數組,再轉化為想要的格式,提供如下代碼供參考,最近剛修改的,新增了對透明度的支持

var toArray = function(value) {

    if (/^#[A-Za-z0-9]{3}$/.test(value)) {

        value = value.replace(/#/, "");

        var arr = [];

        arr[0] = parseInt(value.substr(0, 1) + value.substr(0, 1), 16);

        arr[1] = parseInt(value.substr(1, 1) + value.substr(1, 1), 16);

        arr[2] = parseInt(value.substr(2, 1) + value.substr(2, 1), 16);

        arr[3] = 1;

        return arr;

    }

    if (/^#[A-Za-z0-9]{6}$/.test(value)) {

        value = value.replace(/#/, "");

        var arr = [];

        arr[0] = parseInt(value.substr(0, 2), 16);

        arr[1] = parseInt(value.substr(2, 2), 16);

        arr[2] = parseInt(value.substr(4, 2), 16);

        arr[3] = parseInt(1);

        return arr;

    }

    if (/^#[A-Za-z0-9]{8}$/.test(value)) {

        value = value.replace(/#/, "");

        var arr = [];

        arr[0] = parseInt(value.substr(2, 2), 16);

        arr[1] = parseInt(value.substr(4, 2), 16);

        arr[2] = parseInt(value.substr(6, 2), 16);

        arr[3] = parseInt(value.substr(0, 2), 16) / 255;

        return arr;

    }

    if (/^rgb\([0-9,\.\s]+\)$/.test(value)) {

        var arr = value.replace(/(rgb\(|\))/gi, "").split(/,\s*/);

        arr[0] = parseInt(arr[0]);

        arr[1] = parseInt(arr[1]);

        arr[2] = parseInt(arr[2]);

        arr[3] = 1;

        return arr;

    }

    if (/^rgba\([0-9,\.\s]+\)$/.test(value)) {

        var arr = value.replace(/(rgb\(|\))/gi, "").split(/,\s*/);

        arr[0] = parseInt(arr[0]);

        arr[1] = parseInt(arr[1]);

        arr[2] = parseInt(arr[2]);

        arr[3] = parseInt(arr[3]);

        return arr;

    }

    return null;

},


toHex = function(num) {

    var hex;

    num = (num >= 0 && num <= 255) ? num: 0;

    hex = num.toString(16);

    return hex.length === 2 ? hex: '0' + hex;

},


toValue = {

    rgb: function(arr) {

        return 'rgb(' + arr[0] + ',' + arr[1] + ',' + arr[2] + ')';

    },

    rgba: function(arr) {

        return 'rgb(' + arr[0] + ',' + arr[1] + ',' + arr[2] + ',' + arr[3] + ')';

    },

    hex6: function(arr) {

        return '#' + toHex(arr[0]) + toHex(arr[1]) + toHex(arr[2]);

    },

    hex8: function(arr) {

        return '#' + toHex(arr[0]) + toHex(arr[1]) + toHex(arr[2]) + toHex(arr[3] * 255);

    }

};

正則寫得不嚴謹,也不簡潔,只能以后再折騰了。

查看完整回答
反對 回復 2018-09-22
  • 1 回答
  • 0 關注
  • 726 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號