Maison  >  Article  >  interface Web  >  Comment réaliser la conversion entre RVB et HSL en js ? Méthodes de conversion RVB et HSL entre eux (exemple de code)

Comment réaliser la conversion entre RVB et HSL en js ? Méthodes de conversion RVB et HSL entre eux (exemple de code)

青灯夜游
青灯夜游original
2018-10-17 13:45:286318parcourir

Comment js réalise-t-il la conversion entre rgb et hsl ? Cet article vous présentera comment utiliser js pour convertir entre RVB et HSL. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Dans l'article précédent [Comment définir la valeur de couleur en CSS ? rgb() définit la couleur ] et [ Une brève discussion sur la façon d'utiliser hsl() et hsla() pour définir les valeurs de couleur en CSS ] Nous avons présenté comment utiliser rgb ou hsl pour définir les valeurs de couleur dans la méthode CSS, en fait, les valeurs de couleur RVB et les valeurs de couleur HSL peuvent être converties. Ci-dessous, nous utiliserons des exemples de code pour permettre à tout le monde de comprendre la méthode d'implémentation de conversion des valeurs de couleur RVB et de la couleur HSL. valeurs​​.

js implémente la conversion de la valeur de couleur RVB en hsl

Exemple de code :

/**
 * RGB 颜色值转换为 HSL.
 * 转换公式参考自 http://en.wikipedia.org/wiki/HSL_color_space.
 * r, g, 和 b 需要在 [0, 255] 范围内
 * 返回的 h, s, 和 l 在 [0, 1] 之间
 *
 * @param   Number  r       红色色值
 * @param   Number  g       绿色色值
 * @param   Number  b       蓝色色值
 * @return  Array           HSL各值数组
 */
 function rgbToHsl(r, g, b){
    r /= 255, g /= 255, b /= 255;
    var max = Math.max(r, g, b), min = Math.min(r, g, b);
    var h, s, l = (max + min) / 2;

    if(max == min){
        h = s = 0; // achromatic
    }else{
        var d = max - min;
        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
        switch(max){
            case r: h = (g - b) / d + (g < b ? 6 : 0); break;
            case g: h = (b - r) / d + 2; break;
            case b: h = (r - g) / d + 4; break;
        }
        h /= 6;
    }
    return [Math.floor(h*100), Math.round(s*100)+"%", Math.round(l*100)+"%"];
}

js convertit la valeur de couleur hsl en rgb

Exemple de code :

/**
 * HSL颜色值转换为RGB. 
 * 换算公式改编自 http://en.wikipedia.org/wiki/HSL_color_space.
 * h, s, 和 l 设定在 [0, 1] 之间
 * 返回的 r, g, 和 b 在 [0, 255]之间
 *
 * @param   Number  h       色相
 * @param   Number  s       饱和度
 * @param   Number  l       亮度
 * @return  Array           RGB色值数值
 */function hslToRgb(h, s, l) {
    var r, g, b;

    if(s == 0) {
        r = g = b = l; // achromatic
    } else {
        var hue2rgb = function hue2rgb(p, q, t) {
            if(t < 0) t += 1;
            if(t > 1) t -= 1;
            if(t < 1/6) return p + (q - p) * 6 * t;
            if(t < 1/2) return q;
            if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;
            return p;
        }

        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
        var p = 2 * l - q;
        r = hue2rgb(p, q, h + 1/3);
        g = hue2rgb(p, q, h);
        b = hue2rgb(p, q, h - 1/3);
    }

    return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
}
Résumé : Ce qui précède est tout le contenu de cet article, le code est très simple, vous peut le démarrer. Essayez-le. J'espère que cela sera utile à l'apprentissage de tout le monde. Pour plus de didacticiels connexes, veuillez visiter le

Tutoriel vidéo JavaScript, le Tutoriel vidéo jQuery, le Tutoriel bootstrap !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn