漂亮! 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 相关文章推荐
asp 取文本框名称代码
Dec 02 Javascript
jquery中交替点击事件toggle方法的使用示例
Dec 08 Javascript
让table变成exls的示例代码
Mar 24 Javascript
Jquery异步提交表单代码分享
Mar 26 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
Jan 18 Javascript
vue表单自定义校验规则介绍
Aug 28 Javascript
如何安装控制器JavaScript生成插件详解
Oct 21 Javascript
mpvue开发音频类小程序踩坑和建议详解
Mar 12 Javascript
JS实现判断数组是否包含某个元素示例
May 24 Javascript
JavaScript动态检测密码强度原理及实现方法详解
Jun 11 Javascript
浅析Vue 防抖与节流的使用
Nov 14 Javascript
JavaScript流程控制(循环)
Dec 06 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截取html字符串及自动补全html标签的方法
2015/01/15 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
IE8 浏览器Cookie的处理
2009/01/31 Javascript
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
jQuery实现网站添加高亮突出显示效果的方法
2015/06/26 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
js实现旋转木马效果
2017/03/17 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
Bootstrap Paginator+PageHelper实现分页效果
2018/12/29 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
深入了解JavaScript词法作用域
2020/07/29 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
Python矩阵常见运算操作实例总结
2017/09/29 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
2019/04/28 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
python多线程与多进程及其区别详解
2019/08/08 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
英国Amara家居法国网站:家居装饰,现代装饰和豪华礼品
2016/12/15 全球购物
30年同学聚会邀请函
2014/01/25 职场文书
请假条怎么写
2014/04/10 职场文书
党员承诺书怎么写
2014/05/20 职场文书
大雁塔导游词
2015/02/04 职场文书
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL