js 计算两个颜色之间的渐变色值 案例

效果

在这里插入图片描述

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>颜色区域中间的值获取</title>
    <style>
        .div{
            width: 120px;
            height: 800px;
            border: 1px solid;
            margin-left: 10px;
        }
        .flex{
            display: flex;
        }
        .lin{
            background: -webkit-linear-gradient(top, #00ff00 0%, #ff0000 100%);
        }
    </style>
</head>
<body>
    <div class="flex">
        <div class="div lin"></div>
        <div class="div con1"></div>
        <div class="div con2"></div>
    </div>
    
    <script>
        var parseColor = function (hexStr) {
            return hexStr.length === 4 ? hexStr.substr(1).split('').map(function (s) { return 0x11 * parseInt(s, 16); }) : [hexStr.substr(1, 2), hexStr.substr(3, 2), hexStr.substr(5, 2)].map(function (s) { return parseInt(s, 16); })
        };
        
        // zero-pad 1 digit to 2
        var pad = function (s) {
            return (s.length === 1) ? '0' + s : s;
        };
        
        /*
            start 开始颜色
            end 结束颜色
            steps 颜色分解 次数
            gamma 暂时理解为透明一点(伽马)
        */
        var gradientColors = function (start, end, steps, gamma) {
            var i, j, ms, me, output = [], so = [];
            gamma = gamma || 1;
            var normalize = function (channel) {
                return Math.pow(channel / 255, gamma);
            };
            start = parseColor(start).map(normalize);
            end = parseColor(end).map(normalize);
            for (i = 0; i < steps; i++) {
                ms = i / (steps - 1);
                me = 1 - ms;
                for (j = 0; j < 3; j++) {
                so[j] = pad(Math.round(Math.pow(start[j] * me + end[j] * ms, 1 / gamma) * 255).toString(16));
                }
                output.push('#' + so.join(''));
            }
            return output;
        };
        
        var con1 = document.querySelector(".con1")
        var con2 = document.querySelector(".con2")
 
        var color1 = gradientColors('#00ff00', '#ff0000', 100)
        console.log(color1);
        
        // 泥萌的新需求  
        var color2 = gradientColors('#00ff00', '#ff0000', 100, 2.2)
        console.log(color2);

        load(con1,color1)
        load(con2,color2)
        function load(ele,colorArr){
            var h = ele.clientHeight/colorArr.length
            colorArr.forEach(e => {
                var div = document.createElement('div')
                div.style.background = e
                div.style.height = h +'px'
                ele.appendChild(div)
            });
        }

    </script>
</body>
</html>

颜色算法

借鉴与:https://my.oschina.net/swmhxhs/blog/1799836

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在前端中,可以使用 CSS 中的 `linear-gradient` 函数来实现色系渐变。 例如,要在蓝色和红色之间创建一个渐变,可以使用以下代码: ```css .gradient { background-image: linear-gradient(to right, blue, red); } ``` 此代码会在容器的背景上创建一个从左到右的色系渐变,从蓝色开始,到红色结束。 可以通过在 `linear-gradient` 函数中添加额外的颜色来实现多色渐变。例如,要在蓝色、绿色和红色之间创建一个渐变,可以使用以下代码: ```css .gradient { background-image: linear-gradient(to right, blue, green, red); } ``` 此代码会在容器的背景上创建一个从左到右的色系渐变,从蓝色开始,到绿色和红色依次结束。 你还可以使用角度或方向关键字(例如 `to top`、`to bottom right` 等)来指定渐变的方向。 最后,你还可以使用 `rgba` 或 `hsla` 格式的颜色来创建带有透明度的渐变。 希望这些信息对你有帮助! ### 回答2: 前端计算色系渐变颜色可以通过使用HSL(色相、饱和度、亮度)模型来实现。 HSL模型将颜色表示为三个参数:色相、饱和度和亮度。其中,色相表示颜色的种类,饱和度表示颜色的纯度,亮度表示颜色的明暗程度。 计算色系渐变颜色的方法是在色相保持不变的情况下,通过改变饱和度和亮度来获得不同的颜色。 例如,我们可以以某个基准色为起点,设定一个起始的饱和度和亮度。然后,通过循环递增或递减这两个,可以得到一系列渐变色。 在前端开发中,可以使用JavaScript来计算色系渐变颜色。可以编写一个函数,接受基准色、起始饱和度和亮度以及渐变步长为参数,然后通过计算得到一系列的颜色。 具体的计算过程可以通过HSL模型的公式来实现。首先,将基准色转换为HSL。然后,根据起始饱和度和亮度,以及渐变步长,计算出一系列的新的饱和度和亮度。最后,将这些新的HSL转换回RGB,从而获得渐变色。 在实际应用中,可以将计算好的渐变色应用到页面的背景、文本颜色等元素上,从而实现色系的渐变效果。 总之,通过使用HSL模型和一些计算算法,前端可以计算出色系渐变颜色,为网页设计增加更丰富的色彩变化。 ### 回答3: 计算前端渐变颜色可以使用CSS中的线性渐变或径向渐变属性。线性渐变是沿着一条直线变化颜色,而径向渐变是从一个圆心向外辐射式变化颜色。 对于线性渐变,可以使用以下代码来计算色系渐变颜色: ```css .gradient { background: linear-gradient(to right, #FF0000, #00FF00, #0000FF); } ``` 上述代码表示从左到右将红色(#FF0000)过渡到绿色(#00FF00),再过渡到蓝色(#0000FF)。你可以根据需要添加更多颜色,每个颜色之间用逗号分隔。 对于径向渐变,可以使用以下代码来计算色系渐变颜色: ```css .gradient { background: radial-gradient(circle at center, #FF0000, #00FF00, #0000FF); } ``` 上述代码表示从一个圆心向外辐射式将红色(#FF0000)过渡到绿色(#00FF00),再过渡到蓝色(#0000FF)。同样地,你也可以添加更多颜色,每个颜色之间用逗号分隔。 通过设置不同的渐变方向、起始颜色和终止颜色,你可以计算出各种色系渐变颜色。这些代码可以应用到元素的背景、边框等属性上,使得你的前端设计更加丰富多彩。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值