漂亮! 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 urldecode URL解码的问题
Jan 08 Javascript
jQuery插件分享之分页插件jqPagination
Jun 06 Javascript
JS 清除字符串数组中,重复元素的实现方法
May 24 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
Aug 11 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
Sep 06 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
Nov 17 Javascript
微信小程序页面生命周期详解
Jan 31 Javascript
JS遍历DOM文档树的方法实例详解
Apr 03 Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
Mar 13 Javascript
JavaScript中继承原理与用法实例入门
May 09 Javascript
vue同个按钮控制展开和折叠同个事件操作
Jul 29 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
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
PHP 使用二进制保存用户状态的实例
2018/01/29 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
如何实现JS函数的重载
2006/09/22 Javascript
javascript document.images实例
2008/05/27 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
vue各种事件监听实例(小结)
2020/06/24 Javascript
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
一步步解析Python斗牛游戏的概率
2016/02/12 Python
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
python global和nonlocal用法解析
2020/02/03 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
css3实现超立体3D图片侧翻倾斜效果
2014/04/16 HTML / CSS
简单html5代码获取地理位置
2014/03/31 HTML / CSS
研发工程师的岗位职责
2013/11/18 职场文书
运动会800米加油稿
2014/02/22 职场文书
高二学生评语大全
2014/04/25 职场文书
一年级数学上册复习计划
2015/01/17 职场文书
高三英语复习计划
2015/01/19 职场文书
文艺节目主持词
2015/07/06 职场文书
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技
MySQL 开窗函数
2022/02/15 MySQL