漂亮! 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 相关文章推荐
Extjs4 关于Store的一些操作(加载/回调/添加)
Apr 18 Javascript
jquery $.each()使用探讨
Sep 23 Javascript
一个网页标题title的闪动提示效果实现思路
Mar 22 Javascript
javascript中字符串拼接详解
Sep 26 Javascript
javascript生成大小写字母
Jul 03 Javascript
javascript实现任务栏消息提示的简单实例
May 31 Javascript
jQuery的ready方法实现原理分析
Oct 26 Javascript
如何使用Bootstrap创建表单
Mar 29 Javascript
ES6入门教程之let和const命令详解
May 17 Javascript
vue+axios+element ui 实现全局loading加载示例
Sep 11 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
May 12 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
Aug 08 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
理解PHP5中static和const关键字的区别
2007/03/19 PHP
PHP日期处理函数 整型日期格式
2011/01/12 PHP
PHP文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
javascript document.compatMode兼容性
2010/02/23 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
微信小程序 video组件详解
2016/10/25 Javascript
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
python创建和使用字典实例详解
2013/11/01 Python
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Django 中间键和上下文处理器的使用
2019/03/17 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
python网络编程socket实现服务端、客户端操作详解
2020/03/24 Python
Python __slots__的使用方法
2020/11/15 Python
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
html5 Canvas画图教程(1)—画图的基本常识
2013/01/09 HTML / CSS
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
护士上岗前培训自我鉴定
2014/04/20 职场文书
诚信承诺书模板
2014/05/26 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
Spring 使用注解开发
2022/05/20 Java/Android