js实现颜色阶梯渐变效果(Gradient算法)
发布时间 - 2026-01-11 00:17:05 点击率:次html中颜色可以使用rgb和hex方式来表示。

在色彩中,色相、明度、纯度也都可以产生渐变效果,并会表现出具有丰富层次的美感。本文主要讲述两种颜色RGB数值的梯级渐变算法。
其中如如16进制颜色如#336600分别表示rgb模式中r的值为16进制33(即),g的值为16进制的66,和b为16进制的00,转换后用rgb完整表述为:rgb(51,102,0)。
其中使用16进制进行加减乘除不方便,尤其还使用了rgb的16进制颜色组合(#336600)。因此我们可以将16进制转换为rgb单个进行梯级运算在进行组合。
已知:RStart=50,REnd=200,RStart、REnd之间平均分成3份(Step=3),求每份的数值(StepN)分别是多少。
公式:Gradient = RStart+ (REnd-RStart) / Step * N (第N步的颜色rgb中R的值)
实现方法非常简单,只是需要将颜色从rgb到hex的互转。
实现代码:
<script type="text/javascript">
/*
// 作者 yanue
// 参数:
// startColor:开始颜色hex
// endColor:结束颜色hex
// step:几个阶级(几步)
*/
function gradientColor(startColor,endColor,step){
startRGB = this.colorRgb(startColor);//转换为rgb数组模式
startR = startRGB[0];
startG = startRGB[1];
startB = startRGB[2];
endRGB = this.colorRgb(endColor);
endR = endRGB[0];
endG = endRGB[1];
endB = endRGB[2];
sR = (endR-startR)/step;//总差值
sG = (endG-startG)/step;
sB = (endB-startB)/step;
var colorArr = [];
for(var i=0;i<step;i++){
//计算每一步的hex值
var hex = this.colorHex('rgb('+parseInt((sR*i+startR))+','+parseInt((sG*i+startG))+','+parseInt((sB*i+startB))+')');
colorArr.push(hex);
}
return colorArr;
}
// 将hex表示方式转换为rgb表示方式(这里返回rgb数组模式)
gradientColor.prototype.colorRgb = function(sColor){
var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
var sColor = sColor.toLowerCase();
if(sColor && reg.test(sColor)){
if(sColor.length === 4){
var sColorNew = "#";
for(var i=1; i<4; i+=1){
sColorNew += sColor.slice(i,i+1).concat(sColor.slice(i,i+1));
}
sColor = sColorNew;
}
//处理六位的颜色值
var sColorChange = [];
for(var i=1; i<7; i+=2){
sColorChange.push(parseInt("0x"+sColor.slice(i,i+2)));
}
return sColorChange;
}else{
return sColor;
}
};
// 将rgb表示方式转换为hex表示方式
gradientColor.prototype.colorHex = function(rgb){
var _this = rgb;
var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
if(/^(rgb|RGB)/.test(_this)){
var aColor = _this.replace(/(?:(|)|rgb|RGB)*/g,"").split(",");
var strHex = "#";
for(var i=0; i<aColor.length; i++){
var hex = Number(aColor[i]).toString(16);
hex = hex<10 ? 0+''+hex :hex;// 保证每个rgb的值为2位
if(hex === "0"){
hex += hex;
}
strHex += hex;
}
if(strHex.length !== 7){
strHex = _this;
}
return strHex;
}else if(reg.test(_this)){
var aNum = _this.replace(/#/,"").split("");
if(aNum.length === 6){
return _this;
}else if(aNum.length === 3){
var numHex = "#";
for(var i=0; i<aNum.length; i+=1){
numHex += (aNum[i]+aNum[i]);
}
return numHex;
}
}else{
return _this;
}
}
var gradient = new gradientColor('#013548','#554851',10);
console.log(gradient);//控制台输出
alert(gradient);
</script>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# js实现颜色渐变
# js颜色阶梯过渡
# js实现渐变效果
# gradient渐变
# JavaScript实现的鼠标响应颜色渐变效果完整实例
# JS实现颜色梯度与渐变效果完整实例
# jQuery与js实现颜色渐变的方法
# 漂亮! js实现颜色渐变效果
# 使用three.js 画渐变的直线
# 神奇!js+CSS+DIV实现文字颜色渐变效果
# js实现有过渡渐变效果的图片轮播相册(兼容IE
# ff)
# javascript计算渐变颜色的实例
# 转换为
# 值为
# 明度
# 几个
# 加减乘除
# 两种
# 我们可以
# 表现出
# 也都
# 可以使用
# 几步
# 六位
# 并会
# 使用了
# class
# Gradient
# pre
# brush
# lt
# js
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何基于PHP生成高效IDC网络公司建站源码?
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
如何在云主机上快速搭建多站点网站?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
如何挑选优质建站一级代理提升网站排名?
Laravel如何处理和验证JSON类型的数据库字段
EditPlus中的正则表达式 实战(4)
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
IOS倒计时设置UIButton标题title的抖动问题
微信h5制作网站有哪些,免费微信H5页面制作工具?
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
用v-html解决Vue.js渲染中html标签不被解析的问题
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
如何用好域名打造高点击率的自主建站?
Laravel怎么在Controller之外的地方验证数据
详解Android中Activity的四大启动模式实验简述
如何在Windows环境下新建FTP站点并设置权限?
个人网站制作流程图片大全,个人网站如何注销?
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
香港服务器租用费用高吗?如何避免常见误区?
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
网站建设保证美观性,需要考虑的几点问题!
如何在建站之星网店版论坛获取技术支持?
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
深入理解Android中的xmlns:tools属性
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
动图在线制作网站有哪些,滑动动图图集怎么做?
Linux系统运维自动化项目教程_Ansible批量管理实战
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
Python进程池调度策略_任务分发说明【指导】
深圳网站制作平台,深圳市做网站好的公司有哪些?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
香港服务器选型指南:免备案配置与高效建站方案解析
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
SQL查询语句优化的实用方法总结
php485函数参数是什么意思_php485各参数详细说明【介绍】
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
如何登录建站主机?访问步骤全解析
java ZXing生成二维码及条码实例分享
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
如何在企业微信快速生成手机电脑官网?
活动邀请函制作网站有哪些,活动邀请函文案?
网站制作软件有哪些,制图软件有哪些?
C语言设计一个闪闪的圣诞树

