漂亮! 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 相关文章推荐
用javascript getComputedStyle获取和设置style的原理
Oct 10 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
Mar 05 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
Jul 09 Javascript
js 数组去重的四种实用方法
Sep 09 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
Feb 02 Javascript
Node.js文件操作方法汇总
Mar 22 Javascript
jQuery实现复选框的全选和反选
Feb 02 Javascript
webpack学习教程之publicPath路径问题详解
Jun 17 Javascript
对Vue beforeRouteEnter 的next执行时机详解
Aug 25 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
Sep 12 Javascript
详解JavaScript中typeof与instanceof用法
Oct 24 Javascript
Vue.js递归组件实现组织架构树和选人功能
Jul 04 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
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
不用ajax实现点击文字即可编辑的方法
2007/12/16 Javascript
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
react实现菜单权限控制的方法
2017/12/11 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
[01:06]DOTA2隆重推出2016冬季勇士令状 内含上海特级锦标赛互动指南
2016/02/17 DOTA
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
python自动点赞功能的实现思路
2020/02/26 Python
Python内置函数及功能简介汇总
2020/10/13 Python
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
巴西购物网站:Onofre Agora
2020/06/08 全球购物
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
社会实践自我鉴定
2013/11/07 职场文书
新闻专业个人求职信
2013/12/19 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
日化店促销方案
2014/03/26 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
利用Apache Common将java对象池化的问题
2022/06/16 Servers