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 去掉字符串中的空格(实现代码)
Nov 19 Javascript
屏蔽相应键盘按钮操作
Mar 10 Javascript
win7下安装配置node.js+express开发环境
Dec 06 Javascript
JS设置cookie、读取cookie
Feb 24 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
Jun 06 Javascript
浅谈JavaScript中变量和函数声明的提升
Aug 09 Javascript
AngularJS 防止页面闪烁的方法
Mar 09 Javascript
Webpack打包css后z-index被重新计算的解决方法
Jun 18 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 jQuery
Vue脚手架的简单使用实例
Jul 10 Javascript
Node.js的进程管理的深入理解
Jan 09 Javascript
详解react组件通讯方式(多种)
May 06 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中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
jquery文字填写自动高度的实现方法
2016/11/07 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
深入学习js函数的隐式参数 arguments 和 this
2019/06/24 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
基于python实现名片管理系统
2018/11/30 Python
pandas数据处理进阶详解
2019/10/11 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
J2EE是技术还是平台还是框架
2016/08/14 面试题
丧事主持词大全
2014/04/02 职场文书
新品发布会策划方案
2014/06/08 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
运动会广播稿200字
2014/10/18 职场文书
2014年人大工作总结
2014/12/10 职场文书
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL
用php如何解决大文件分片上传问题
2021/07/07 PHP
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers