<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          在 Js中使用顏色的13 個(gè)必備方法!

          共 3342字,需瀏覽 7分鐘

           ·

          2021-12-26 05:42

          在 JavaScript 中使用顏色,需要對(duì)顏色格式和轉(zhuǎn)換有一定的了解。這個(gè) 13 個(gè)代碼片段能滿足大部分日常的需求,從隨機(jī)生成十六進(jìn)制的顏色,到在十六進(jìn)制和 RGB 值之間轉(zhuǎn)換,甚至一些更高級(jí)的技巧,比如使用 HSL 格式來改變顏色的亮度等等。。。

          廢話不多說,上代碼! ???

          隨機(jī)生成十六進(jìn)制顏色

          //隨機(jī)生成十六進(jìn)制顏色
          const?randomHexColorCode?=?()?=>?{
          ??let?n?=?(Math.random()?*?0xfffff?*?1000000).toString(16);
          ??return?"#"?+?n.slice(0,?6);
          };

          //使用
          randomHexColorCode();?//?'#e34155'

          RGB 轉(zhuǎn)十六進(jìn)制

          //RGB轉(zhuǎn)十六進(jìn)制
          const?RGBToHex?=?(r,?g,?b)?=>
          ??((r?<16)?+?(g?<8)?+?b).toString(16).padStart(6,?"0");

          //使用
          RGBToHex(255,?165,?1);?//?'#ffa501'

          將 3 位顏色擴(kuò)展為 6 位顏色

          //將?十六進(jìn)制?3?位顏色擴(kuò)展為?6?位顏色
          const?extendHex?=?(shortHex)?=>
          ??"#"?+
          ??shortHex
          ????.slice(shortHex.startsWith("#")???1?:?0)
          ????.split("")
          ????.map((x)?=>?x?+?x)
          ????.join("");

          //使用
          extendHex("#03f");?//?'#0033ff'
          extendHex("05a");?//?'#0055aa'

          將 rgb()顏色字符串轉(zhuǎn)換為具有每種顏色值的對(duì)象。

          //?將rgb()顏色字符串轉(zhuǎn)換為具有每種顏色值的對(duì)象。
          const?toRGBObject?=?(rgbStr)?=>?{
          ??const?[red,?green,?blue]?=?rgbStr.match(/\d+/g).map(Number);
          ??return?{?red,?green,?blue?};
          };

          //使用
          toRGBObject("rgb(255,?12,?0)");?//?{red:?255,?green:?12,?blue:?0}

          十六進(jìn)制轉(zhuǎn) RGB

          //十六進(jìn)制轉(zhuǎn)RGB
          const?hexToRGB?=?(hex)?=>?{
          ??let?alpha?=?false,
          ????h?=?hex.slice(hex.startsWith("#")???1?:?0);
          ??if?(h.length?===?3)?h?=?[...h].map((x)?=>?x?+?x).join("");
          ??else?if?(h.length?===?8)?alpha?=?true;
          ??h?=?parseInt(h,?16);
          ??return?(
          ????"rgb"?+
          ????(alpha???"a"?:?"")?+
          ????"("?+
          ????(h?>>>?(alpha???24?:?16))?+
          ????",?"?+
          ????((h?&?(alpha???0x00ff0000?:?0x00ff00))?>>>?(alpha???16?:?8))?+
          ????",?"?+
          ????((h?&?(alpha???0x0000ff00?:?0x0000ff))?>>>?(alpha???8?:?0))?+
          ????(alpha???`,?${h?&?0x000000ff}`?:?"")?+
          ????")"
          ??);
          };

          //使用
          hexToRGB("#27ae60ff");?//?'rgba(39,?174,?96,?255)'
          hexToRGB("27ae60");?//?'rgb(39,?174,?96)'
          hexToRGB("#fff");?//?'rgb(255,?255,?255)'

          將 rgb()顏色字符串轉(zhuǎn)換為數(shù)組

          //將?rgb()顏色字符串轉(zhuǎn)換為數(shù)組
          const?toRGBArray?=?(rgbStr)?=>?rgbStr.match(/\d+/g).map(Number);

          //使用
          toRGBArray("rgb(255,?12,?0)");?//?[255,?12,?0]

          將 RGB 顏色元組轉(zhuǎn)換為 HSB 格式。

          //?將 RGB 顏色元組轉(zhuǎn)換為 HSB 格式。
          const?RGBToHSB?=?(r,?g,?b)?=>?{
          ??r?/=?255;
          ??g?/=?255;
          ??b?/=?255;
          ??const?v?=?Math.max(r,?g,?b),
          ????n?=?v?-?Math.min(r,?g,?b);
          ??const?h?=
          ????n?===?0
          ????????0
          ??????:?n?&&?v?===?r
          ????????(g?-?b)?/?n
          ??????:?v?===?g
          ????????2?+?(b?-?r)?/?n
          ??????:?4?+?(r?-?g)?/?n;
          ??return?[60?*?(h?0???h?+?6?:?h),?v?&&?(n?/?v)?*?100,?v?*?100];
          };

          //使用
          RGBToHSB(252,?111,?48);
          //?[18.529411764705856,?80.95238095238095,?98.82352941176471]

          將 HSB 顏色元組轉(zhuǎn)換為 RGB 格式。

          //?將 HSB 顏色元組轉(zhuǎn)換為 RGB 格式。
          const?HSBToRGB?=?(h,?s,?b)?=>?{
          ??s?/=?100;
          ??b?/=?100;
          ??const?k?=?(n)?=>?(n?+?h?/?60)?%?6;
          ??const?f?=?(n)?=>?b?*?(1?-?s?*?Math.max(0,?Math.min(k(n),?4?-?k(n),?1)));
          ??return?[255?*?f(5),?255?*?f(3),?255?*?f(1)];
          };

          //使用
          HSBToRGB(18,?81,?99);?//?[252.45,?109.31084999999996,?47.965499999999984]

          將 RGB 顏色元組轉(zhuǎn)換為 HSL 格式。

          //將 RGB 顏色元組轉(zhuǎn)換為 HSL 格式。
          const?RGBToHSL?=?(r,?g,?b)?=>?{
          ??r?/=?255;
          ??g?/=?255;
          ??b?/=?255;
          ??const?l?=?Math.max(r,?g,?b);
          ??const?s?=?l?-?Math.min(r,?g,?b);
          ??const?h?=?s
          ??????l?===?r
          ????????(g?-?b)?/?s
          ??????:?l?===?g
          ????????2?+?(b?-?r)?/?s
          ??????:?4?+?(r?-?g)?/?s
          ????:?0;
          ??return?[
          ????60?*?h?0???60?*?h?+?360?:?60?*?h,
          ????100?*?(s???(l?<=?0.5???s?/?(2?*?l?-?s)?:?s?/?(2?-?(2?*?l?-?s)))?:?0),
          ????(100?*?(2?*?l?-?s))?/?2,
          ??];
          };

          //使用
          RGBToHSL(45,?23,?11);?//?[21.17647,?60.71428,?10.98039]

          將 HSL 顏色元組轉(zhuǎn)換為 RGB 格式。

          //將 HSL 顏色元組轉(zhuǎn)換為 RGB 格式。
          const?HSLToRGB?=?(h,?s,?l)?=>?{
          ??s?/=?100;
          ??l?/=?100;
          ??const?k?=?(n)?=>?(n?+?h?/?30)?%?12;
          ??const?a?=?s?*?Math.min(l,?1?-?l);
          ??const?f?=?(n)?=>
          ????l?-?a?*?Math.max(-1,?Math.min(k(n)?-?3,?Math.min(9?-?k(n),?1)));
          ??return?[255?*?f(0),?255?*?f(8),?255?*?f(4)];
          };

          //使用
          HSLToRGB(13,?100,?11);?//?[56.1,?12.155,?0]

          更改 hsl()顏色字符串的亮度值。

          //更改hsl()顏色字符串的亮度值。
          const?changeLightness?=?(delta,?hslStr)?=>?{
          ??const?[hue,?saturation,?lightness]?=?hslStr.match(/\d+/g).map(Number);
          ??const?newLightness?=?Math.max(
          ????0,
          ????Math.min(100,?lightness?+?parseFloat(delta))
          ??);
          ??return?`hsl(${hue},?${saturation}%,?${newLightness}%)`;
          };

          //使用
          changeLightness(10,?"hsl(330,?50%,?50%)");?//?'hsl(330,?50%,?60%)'
          changeLightness(-10,?"hsl(330,?50%,?50%)");?//?'hsl(330,?50%,?40%)'

          將 hsl()顏色字符串轉(zhuǎn)換為值數(shù)組。

          //?將hsl()顏色字符串轉(zhuǎn)換為值數(shù)組。
          const?toHSLArray?=?(hslStr)?=>?hslStr.match(/\d+/g).map(Number);

          //使用
          toHSLArray("hsl(50,?10%,?10%)");?//?[50,?10,?10]

          將 hsl()顏色字符串轉(zhuǎn)換為具有每種顏色值的對(duì)象。

          //將hsl()顏色字符串轉(zhuǎn)換為具有每種顏色值的對(duì)象。
          const?toHSLObject?=?(hslStr)?=>?{
          ??const?[hue,?saturation,?lightness]?=?hslStr.match(/\d+/g).map(Number);
          ??return?{?hue,?saturation,?lightness?};
          };

          //使用
          toHSLObject("hsl(50,?10%,?10%)");?//?{?hue:?50,?saturation:?10,?lightness:?10?}

          結(jié)語(yǔ)

          「關(guān)注公眾號(hào)IQ前端,一個(gè)專注于CSS/JS開發(fā)技巧的前端公眾號(hào),更多前端小干貨等著你喔」

          • 歡迎關(guān)注IQ前端,更多「CSS/JS開發(fā)技巧」只在公眾號(hào)推送



          瀏覽 92
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  我要看免费 A片 | www.国产豆花精品区 | 天堂一区二区三区18在线观看 | 中文字幕一区第一页 | 操比在线观看 |