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 相关文章推荐
js option删除代码集合
Nov 12 Javascript
Javascript 面向对象 重载
May 13 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
Jul 05 Javascript
js实现用户注册协议倒计时的方法
Jan 21 Javascript
jQuery实现数秒后自动提交form的方法
Mar 05 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
May 20 Javascript
javascript 广告移动特效的实现代码
Jun 25 Javascript
用jquery获取自定义的标签属性的值简单实例
Sep 17 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
Sep 03 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
Oct 24 Javascript
JavaScript实现4位随机验证码的生成
Jan 28 Javascript
JavaScript如何优化逻辑判断代码详解
Jun 08 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 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
JS正则表达式常见用法实例详解
2018/06/19 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
python使用arp欺骗伪造网关的方法
2015/04/24 Python
Python学生信息管理系统修改版
2018/03/13 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
python如何爬取个性签名
2018/06/19 Python
python os模块简单应用示例
2019/05/23 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
法制宣传月活动方案
2014/05/11 职场文书
新教师岗前培训方案
2014/06/05 职场文书
拾金不昧感谢信
2015/01/21 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书
分享一些Java的常用工具
2021/06/11 Java/Android
Elasticsearch 批量操作
2022/04/19 Python