漂亮! js实现颜色渐变效果


Posted in Javascript onAugust 12, 2016

今天做组织机构,要分级别显示颜色,自己计算半天也没算出颜色渐变的方法,出来总是花里胡哨的难看的不要不要的,所以查了一下,找到一个js代码,试了试,很完美哦! 

漂亮! js实现颜色渐变效果

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title></title>
</head>
<body>
<script src="js/jquery-1.11.3.js"></script>
<script src="js/swiper-3.3.1.jquery.min.js"></script>
<script type="text/javascript">
 /*
  // 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('#e82400','#8ae800',10);
 console.log(gradient);//控制台输出
 alert(gradient);
 for(var i=0;i<gradient.length;i++){
  var htmls='<div class="mmm'+i+'">'+i+'</div>';
  $("body").append(htmls);
  console.log($("mmm"+i));
  console.log(gradient[i]);
  $(".mmm"+i).css("background-color",gradient[i]);
 }

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery选择器(常用选择器说明)
Sep 28 Javascript
使用jquery实现select添加实现后台权限添加的效果
May 28 Javascript
理清apply(),call()的区别和关系
Aug 14 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
Mar 14 Javascript
jQuery对象的selector属性用法实例
Dec 27 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
Sep 09 Javascript
canvas实现爱心和彩虹雨效果
Mar 09 Javascript
Js利用prototype自定义数组方法示例
Oct 20 Javascript
简单的Vue异步组件实例Demo
Dec 27 Javascript
vue实现绑定事件的方法实例代码详解
Jun 20 Javascript
前端 javascript 实现文件下载的示例
Nov 24 Javascript
jQuery ztree实现动态树形多选菜单
Aug 12 #Javascript
jquery表格datatables实例解析 直接加载和延迟加载
Aug 12 #Javascript
jquery插件uploadify多图上传功能实现代码
Aug 12 #Javascript
Javascript中的对象和原型(二)
Aug 12 #Javascript
JavaScript中的对象和原型(一)
Aug 12 #Javascript
JavaScript中对象的不同创建方法
Aug 12 #Javascript
酷! 不同风格页面布局幻灯片特效js实现
Feb 19 #Javascript
You might like
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
分享一个常用的javascript静态类
2014/12/31 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
JS实现动态添加DOM节点和事件的方法示例
2017/04/28 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
文秘专业应届生求职信范文
2013/11/14 职场文书
2014年大学生自我评价
2014/01/19 职场文书
担保书格式及范文
2014/04/01 职场文书
小学生评语大全
2014/04/18 职场文书
心理学专业求职信
2014/06/16 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
Python3 类型标注支持操作
2021/06/02 Python
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers