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 相关文章推荐
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
Feb 09 Javascript
jquery弹出框的用法示例(一)
Aug 26 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
May 14 Javascript
a标签click和href执行顺序探讨
Jun 23 Javascript
基于JS实现Android,iOS一个手势动画效果
Apr 27 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
Aug 17 Javascript
Bootstrap响应式侧边栏改进版
Sep 17 Javascript
微信小程序之自定义组件的实现代码(附源码)
Aug 02 Javascript
javascript创建元素和删除元素实例小结
Jun 19 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
Oct 10 jQuery
继承行为在 ES5 与 ES6 中的区别详解
Dec 24 Javascript
Javascript执行流程细节原理解析
May 14 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 中文乱码解决办法总结分析
2009/07/30 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
Javascript call和apply区别及使用方法
2013/11/14 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
详解Bootstrap插件
2016/04/25 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
js面向对象之实现淘宝放大镜
2020/01/15 Javascript
原生js实现瀑布流效果
2020/03/09 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
详解javascript void(0)
2020/07/13 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
Python的另外几种语言实现
2015/01/29 Python
Python实现把数字转换成中文
2015/06/29 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
python主线程捕获子线程的方法
2018/06/17 Python
Python实现Event回调机制的方法
2019/02/13 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
python机器人运动范围问题的解答
2019/04/29 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
总经理职责
2013/12/22 职场文书
开会迟到检讨书
2014/01/08 职场文书
个人租房协议书样本
2014/10/01 职场文书
资产移交协议书
2016/03/24 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
一条慢SQL语句引发的改造之路
2022/03/16 MySQL