jQuery与js实现颜色渐变的方法


Posted in Javascript onDecember 30, 2016

本文实例讲述了jQuery与js实现颜色渐变的方法。分享给大家供大家参考,具体如下:

1.目的

本来想的是 提示用户应该点某个按钮 这个功能,就想着让这个按钮div的边框变成醒目的颜色然后逐渐变白。

在网上搜了搜,本来想使用jQuery的animate,后来发现这个方法只能用来进行长度的渐变。还有就是需要下载jQuery的颜色渐变插件来实现,感觉挺麻烦的,就自己用土办法实现了。

2.原理

先获得初始颜色的rgb,再获得终止颜色的rgb,使用rgb三个数字的差值,从初始颜色的rgb逐渐过渡到终止颜色的rgb。

3.代码

获得颜色rgb的代码如下:

//将输入的颜色字符串转换成十进制数组
function getData(color) {
  var re = RegExp;
  if (/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.test(color)) {
    //#rrggbb
    return [parseInt(re.$1,16),parseInt(re.$2,16),parseInt(re.$3,16)];
  } else if (/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.test(color)) {
    //#rgb
    return [parseInt(re.$1+re.$1,16),parseInt(re.$2+re.$2,16),parseInt(re.$3+re.$3,16)];
  } else if (/^rgb(.*),(.*),(.*)$/i.test(color)) {
    //rgb(n,n,n) or rgb(n%,n%,n%)
    if(re.$1.indexOf("%")>-1){
      return [parseInt(parseFloat(re.$1, 10) * 2.55),
          parseInt(parseFloat(re.$2, 10) * 2.55),
          parseInt(parseFloat(re.$3, 10) * 2.55)];
    }else{
       return [parseInt(re.$1),parseInt(re.$2),parseInt(re.$3)];
    }
  }
}

方法中没有队color的验证之类的方法,见谅。传入的参数color格式可以是:"#1ba3e1"、"#f0e"、"rgb(200,50,100)"、"rgb(20%,80%,50%)"这四种格式。返回的是rgb三个数值组成的数组。

然后进行颜色的渐变:

(function($){$.fn.shade = function(prop,color1,color2,mills){
  var count = mills/200;
  var data1 = getData(color1);
  var data2 = getData(color2);
  var red = data1[0],green = data1[1],blue = data1[2];
  var r = (data2[0]-data1[0])/count,g = (data2[1]-data1[1])/count,b = (data2[2]-data1[2])/count;
  obj_temp = $(this);
  for(var i=1;i<count+1;i++){
    setTimeout("$(obj_temp).css('"+prop+"','rgb("+parseInt(red+r*i+0.5)+","+
        parseInt(green+g*i+0.5)+","+parseInt(blue+b*i+0.5)+")');", i*200);
  }
}})(jQuery);

这里我在jQuery中定义了一个shade函数,参数:对象渐变的属性(如border-color)、起始颜色、终止颜色、变色所需时间。我规定了200ms进行一次变色(可以自行调整),使用setTimeout函数每200ms执行一次变化。(我起初想使用while()或者递归来实现每隔一段时间执行一次变化,但js中的线程不像java中用Thread.sleep()就可以等待,所以不得不先将要运行的变色代码全部扔到setTimeout中,等待依次执行。)

代码中使用

$("#more").shade("border-color","#1ba3e1","#fff",2000);

就可以实现了。

注:运行此函数需要定义一个obj_temp的全局变量。

如果运行出现BUG自行调试。。。Thanks for watching.

Javascript 相关文章推荐
ExtJS 2.0 实用简明教程之布局概述
Apr 29 Javascript
动态调用CSS文件的JS代码
Jul 29 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
Mar 01 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
Jan 14 Javascript
jstree单选功能的实现方法
Jun 07 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 Javascript
vue+element项目中过滤输入框特殊字符小结
Aug 07 Javascript
微信小程序实现手指拖动选项排序
Apr 22 Javascript
prettier自动格式化去换行的实现代码
Aug 25 Javascript
vue3.0 的 Composition API 的使用示例
Oct 26 Javascript
vue2.0 watch里面的 deep和immediate用法说明
Oct 30 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
Dec 30 #Javascript
ajax图片上传,图片异步上传,更新实例
Dec 30 #Javascript
浅谈JavaScript的函数及作用域
Dec 30 #Javascript
解析ajaxFileUpload 异步上传文件简单使用
Dec 30 #Javascript
JS实现的样式切换功能tableCSS实例
Dec 30 #Javascript
浅谈js script标签中的预解析
Dec 30 #Javascript
jQuery实现页面顶部下拉广告
Dec 30 #Javascript
You might like
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
hadoop中一些常用的命令介绍
2013/06/19 PHP
遭遇php的in_array低性能问题
2013/09/17 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
javascript常用的设计模式
2017/02/09 Javascript
Vue Ajax跨域请求实例详解
2017/06/20 Javascript
JavaScript前后端JSON使用方法教程
2020/11/23 Javascript
Python调用命令行进度条的方法
2015/05/05 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
Python实现端口检测的方法
2018/07/24 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
2020/03/01 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
英国精品买手店:Browns Fashion
2016/09/29 全球购物
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
不用游标的SQL语句有哪些
2012/09/07 面试题
如何在C# winform中异步调用web services
2015/09/21 面试题
高三英语教学反思
2014/01/13 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
施工协议书范本
2014/04/22 职场文书
公司晚会策划方案
2014/05/17 职场文书
组织鉴定材料
2014/06/02 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
机关作风建设工作总结
2014/10/23 职场文书
交通事故和解协议书
2015/01/27 职场文书
团代会邀请函
2015/02/02 职场文书