How to get hex color value rather than RGB value?

前端 未结 19 3159
猫巷女王i
猫巷女王i 2020-11-21 23:06

Using the following jQuery will get the RGB value of an element\'s background color:

$(\'#selector\').css(\'backgroundColor\');

Is there a

19条回答
  •  粉色の甜心
    2020-11-21 23:29

    Here is my solution, also does touppercase by the use of an argument and checks for other possible white-spaces and capitalisation in the supplied string.

    var a = "rgb(10, 128, 255)";
    var b = "rgb( 10, 128, 255)";
    var c = "rgb(10, 128, 255 )";
    var d = "rgb ( 10, 128, 255 )";
    var e = "RGB ( 10, 128, 255 )";
    var f = "rgb(10,128,255)";
    var g = "rgb(10, 128,)";
    
    var rgbToHex = (function () {
        var rx = /^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i;
    
        function pad(num) {
            if (num.length === 1) {
                num = "0" + num;
            }
    
            return num;
        }
    
        return function (rgb, uppercase) {
            var rxArray = rgb.match(rx),
                hex;
    
            if (rxArray !== null) {
                hex = pad(parseInt(rxArray[1], 10).toString(16)) + pad(parseInt(rxArray[2], 10).toString(16)) + pad(parseInt(rxArray[3], 10).toString(16));
    
                if (uppercase === true) {
                    hex = hex.toUpperCase();
                }
    
                return hex;
            }
    
            return;
        };
    }());
    
    console.log(rgbToHex(a));
    console.log(rgbToHex(b, true));
    console.log(rgbToHex(c));
    console.log(rgbToHex(d));
    console.log(rgbToHex(e));
    console.log(rgbToHex(f));
    console.log(rgbToHex(g));
    

    On jsfiddle

    Speed comparison on jsperf

    A further improvement could be to trim() the rgb string

    var rxArray = rgb.trim().match(rx),
    

提交回复
热议问题