jquery实现将获取的颜色值转换为十六进制形式的方法


Posted in Javascript onDecember 20, 2014

本文实例讲述了jquery实现将获取的颜色值转换为十六进制形式的方法。分享给大家供大家参考。具体分析如下:

大家或许已经注意到了,在谷歌、火狐和IE8以上浏览器中,获取的颜色值是RGB形式,例如rgb(255,255,0),感觉非常不适应,或者在实际编码中不方便使用,这个时候就需要进行转换,下面就提供一段相关转换代码。

具体代码如下:

<!DOCTYPE html> 

<html> 

<head> 

<meta charset=" utf-8"> 

<meta name="author" content="https://3water.com/" /> 

<title>颜色格式转换-三水点靠木</title>  

<style type="text/css"> 

#thediv 

{ 

  width:200px; 

  height:100px; 

  background-color:#CCC; 

  line-height:100px; 

  text-align:center; 

  color:#60F; 

} 

</style> 

<script type="text/javascript" src="jQuery/jquery-1.8.3.js"></script> 

<script type="text/javascript"> 

$.fn.getHexBackgroundColor=function(id,property) 

{  

  var rgb=$(id).css(property);  

  if($.browser.msie&&$.browser.version>8||$.browser.mozilla||$.browser.webkit) 

  {  

    rgb=rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);  

    function hex(x)  

    {  

      return ("0"+parseInt(x).toString(16)).slice(-2);  

    }  

    rgb="#"+hex(rgb[1])+hex(rgb[2])+hex(rgb[3]);  

  }  

  return rgb;  

}  

$(document).ready(function(){  

  $("#bt").click(function(){ 

    $("#thediv").text($.fn.getHexBackgroundColor("#thediv","color"))  

  }) 

}) 

</script>  

</head> 

<body> 

<div id="thediv">三水点靠木</div> 

<input type="button" value="点击查看效果" id="bt" /> 

</body> 

</html>

注意:运行编辑器之后,再按F5刷新网页即可查看演示。

以上代码实现了我们的要求,可以将RGB格式的颜色值转换为十六进制形式,下面就简单介绍一下实现过程:

一.实现原理:

当点击按钮的会触发click事件,进而执行click事件处理函数,此处理函数能够将转换后的颜色值写入div中去,其中的核心函数就是getHexBackgroundColor(),此函数首先会判断浏览器是否是IE9之下,如果是则直接返回颜色值,不进行转换,因为在IE9以下浏览器获取的颜色值就是16进制的,如果是IE8以上浏览器或者谷歌火狐,则需要进行转换,关于转换细节这里就不多介绍了,可以参考你代码注释。

二.代码注释:

1.$.fn.getHexBackgroundColor=function(id,property){},声明一个函数,此函数可以可以进行颜色值转换,此函数具有两个参数,第一个参数是元素的id属性值,第二个是属性。

2.var rgb=$(id).css(property),获取颜色值,这个时候rgb也许是16进制也许是RGB格式的。

3.if($.browser.msie&&$.browser.version>8||$.browser.mozilla||$.browser.webkit),判断浏览器是否是IE8以上或者是火狐或者谷歌浏览器。

4.rgb=rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/),这个要对正则表达式有所了解,通过match()函数可以将颜色值字符串生成一个数组,这个数组中有4个元素,以rgb(102, 0, 255)作为例子,第一个元素是整个颜色值字符串rgb(102, 0, 255),第二个数组元素是102,第三个是0,第四个是255。

5.function hex(x){},声明一个函数,此函数可以用就是进行颜色值转换,具有一个参数,传递的是rgb数组的某一项。

6.return ("0"+parseInt(x).toString(16)).slice(-2),可以将传入数值转换为16进制,注意前面是添加了一个0,最好使用slice函数截取最后两个字符,并返回截取的这两个字符。

7.rgb="#"+hex(rgb[1])+hex(rgb[2])+hex(rgb[3]),将值组合起来。

8.return rgb,返回rgb这个值。

9.$(document).ready(function(){}),当文档结构完全加载完毕再去执行函数中的代码。

10.$("#bt").click(function(){}),为按钮注册click事件处理桉树。

11.$("#thediv").text($.fn.getHexBackgroundColor("#thediv","color")) ,将转换后的颜色值写入div。

三.相关阅读:

1.浏览器版本判断可以参阅《JavaScript 判断浏览器类型及版本》。
2. parseInt()函数可以参阅《javascript中parseInt()函数的定义和用法分析》。
3.toString()函数可以参阅《javascript中Number对象的toString()方法分析》。
4.slice()函数可以参阅《javascript中String对象的slice()方法分析》。
5.click事件可以参阅《jQuery中click事件的定义和用法》。
6.text()函数可以参阅《jQuery的text()方法用法分析》。

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
javascript之typeof、instanceof操作符使用探讨
May 19 Javascript
jquery ajax方式直接提交整个表单核心代码
Aug 15 Javascript
深入领悟JavaScript中的面向对象
Nov 18 Javascript
jQuery判断checkbox是否选中的小例子
Dec 02 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
Jan 09 Javascript
jQuery代码实现发展历程时间轴特效
Jul 30 Javascript
js判断出两个字符串最大子串的函数实现方法
Nov 01 Javascript
Bootstrap栅格系统学习笔记
Nov 25 Javascript
Node.js的Mongodb使用实例
Dec 30 Javascript
es6新特性之 class 基本用法解析
May 05 Javascript
Vue组件通信中非父子组件传值知识点总结
Dec 05 Javascript
JavaScript实现网页tab栏效果制作
Nov 20 Javascript
jQuery的text()方法用法分析
Dec 20 #Javascript
jQuery中click事件的定义和用法
Dec 20 #Javascript
javascript中String对象的slice()方法分析
Dec 20 #Javascript
javascript中Number对象的toString()方法分析
Dec 20 #Javascript
javascript中parseInt()函数的定义和用法分析
Dec 20 #Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
Dec 20 #Javascript
node.js解决获取图片真实文件类型的问题
Dec 20 #Javascript
You might like
PHP安装攻略:常见问题解答(三)
2006/10/09 PHP
PHP XML备份Mysql数据库
2009/05/27 PHP
PHP 采集程序中常用的函数
2009/12/09 PHP
基于php下载文件的详解
2013/06/02 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
新闻内页-JS分页
2006/06/07 Javascript
javascript firefox兼容ie的dom方法脚本
2008/05/18 Javascript
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
javascript(js)的小数点乘法除法问题详解
2014/03/07 Javascript
jQuery中odd选择器的定义和用法
2014/12/23 Javascript
input file上传 图片预览功能实例代码
2016/10/25 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
2019/05/20 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
python开启多个子进程并行运行的方法
2015/04/18 Python
使用Python进行目录的对比方法
2018/11/01 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
Pytorch 实现自定义参数层的例子
2019/08/17 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
酒吧员工的岗位职责
2013/11/26 职场文书
八一建军节感言
2014/02/28 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
收入证明申请书
2015/06/12 职场文书
幼儿园师德师风心得体会
2016/01/12 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers