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 this 深入理解
Jul 30 Javascript
Mootools 1.2教程 Fx.Tween的使用
Sep 15 Javascript
前台js调用后台方法示例
Dec 02 Javascript
基于jQuery实现网页进度显示插件
Mar 04 Javascript
jQuery实现带动画效果的二级下拉导航方法
Mar 11 Javascript
Javascript字符串常用方法详解
Jul 21 Javascript
js内置对象处理_打印学生成绩单的简单实现
Sep 24 Javascript
对javascript继承的理解
Oct 11 Javascript
Node.js 实现简单的接口服务器的实例代码
May 23 Javascript
实例分析JS与Node.js中的事件循环
Dec 12 Javascript
JS中的回调函数实例浅析
Mar 21 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
Sep 12 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不用正则采集速度探究总结
2008/03/24 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
php编程每天必学之验证码
2016/03/03 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
2013/07/05 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
webpack打包nodejs项目的方法
2018/09/26 NodeJs
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
在Django的模型中添加自定义方法的示例
2015/07/21 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
python 日期排序的实例代码
2019/07/11 Python
python加载自定义词典实例
2019/12/06 Python
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
销售业务员岗位职责
2014/01/29 职场文书
三万活动总结
2014/04/28 职场文书
主题实践活动总结
2014/05/08 职场文书
赢在执行观后感
2015/06/16 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python