js如何计算两个颜色之间的渐变色值?

站长手记 作者: 2024-08-28 00:50:02
对给定的两个颜色值进行渐变计算,得到渐变的所有色值的数组。 示例:计算 #ec9089 与 #c12927 之间的渐变色值,步长设定为 100
// rgb to hex
    function rgbToHex(r, g, b){
      var hex = ((r<<16) | (g<<8) | b).toString(16);
      return "#" + new Array(Math.abs(hex.length-7)).join("0") + hex;
    }

    // hex to rgb
    function hexToRgb(hex){
      var rgb = [];
      for(var i=1; i<7; i+=2){
          rgb.push(parseInt("0x" + hex.slice(i,i+2)));
      }
      return rgb;
    }

    // 计算渐变过渡色
    function gradient (startColor,endColor,step){
      // 将 hex 转换为rgb
      var sColor = hexToRgb(startColor),
        eColor = hexToRgb(endColor);

      // 计算R\G\B每一步的差值
      var rStep = (eColor[0] - sColor[0]) / step;
        gStep = (eColor[1] - sColor[1]) / step;
        bStep = (eColor[2] - sColor[2]) / step;

      var gradientColorArr = [];
      for(var i=0;i<step;i++){
        // 计算每一步的hex值
        gradientColorArr.push(rgbToHex(parseInt(rStep*i+sColor[0]),parseInt(gStep*i+sColor[1]),parseInt(bStep*i+sColor[2])));
      }
      return gradientColorArr;
    }
var startColor = '#ec9089';
    var endColor = '#c12927';
    var step = 100;
    var colorArr = gradient(startColor, endColor, 100);
    
    console.log(colorArr)
    // ["#ec9089", "#eb8e88", "#eb8d87", "#ea8c86", ...]
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_69841.html
颜色 渐变色值