漂亮! 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 相关文章推荐
静态页面的值传递(三部曲)
Sep 25 Javascript
ExtJS 简介 让你知道extjs是什么
Dec 29 Javascript
JQuery小知识
Oct 15 Javascript
在多个页面使用同一个HTML片段《续》
Mar 04 Javascript
jquery实现页面图片等比例放大缩小功能
Feb 12 Javascript
javascript跨浏览器的属性判断方法
Mar 16 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
Apr 16 Javascript
jquery超简单实现手风琴效果的方法
Jun 05 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
Sep 08 Javascript
Bootstrap基本样式学习笔记之按钮(4)
Dec 07 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
Jun 08 Javascript
原生js实现滑块区间组件
Jan 20 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基于imap获取邮件实例
2014/11/11 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
php递归函数怎么用才有效
2018/02/24 PHP
jQuery获取地址栏参数插件(模仿C#)
2010/10/26 Javascript
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
使用 js+正则表达式为关键词添加链接
2014/11/11 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
安全环保演讲稿
2014/08/28 职场文书
党员创先争优心得体会
2014/09/11 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL