漂亮! 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自动显示最后更新时间
Mar 15 Javascript
9个JavaScript评级/投票插件
Jan 18 Javascript
jQuery学习笔记之Helloworld
Dec 22 Javascript
使用CSS样式position:fixed水平滚动的方法
Feb 19 Javascript
jQuery实现跨域
Feb 03 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
Sep 04 Javascript
js运动应用实例解析
Dec 28 Javascript
浅谈JavaScript 数据属性和访问器属性
Sep 01 Javascript
分类解析jQuery选择器
Nov 23 Javascript
Javascript设计模式之装饰者模式详解篇
Jan 17 Javascript
JS库 Highlightjs 添加代码行号的实现代码
Sep 13 Javascript
JS+CSS实现3D切割轮播图
Mar 21 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
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
php数据访问之增删改查操作
2016/05/09 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
使用JS来动态操作css的几种方法
2019/12/18 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Python操作SQLite数据库的方法详解
2017/06/16 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
python实现定时发送qq消息
2019/01/18 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
抽象方法、抽象类怎样声明
2014/10/25 面试题