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 3d 逐侦产品展示(核心精简)
Mar 26 Javascript
js函数调用的方式
May 06 Javascript
在Linux上用forever实现Node.js项目自启动
Jul 09 Javascript
JavaScript定时显示广告代码分享
Mar 02 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
Jan 29 Javascript
基于jQuery实现二级下拉菜单效果
Feb 01 Javascript
Vuex中的State使用介绍
Jan 19 Javascript
vue-router实现嵌套路由的讲解
Jan 19 Javascript
vue store之状态管理模式的详细介绍
Jun 13 Javascript
操作按钮悬浮固定在微信小程序底部的实现代码
Aug 02 Javascript
记录vue做微信自定义分享的一些问题
Sep 12 Javascript
详解Typescript里的This的使用方法
Jan 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
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
php上传文件问题汇总
2015/01/30 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
2015/02/11 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
python和pyqt实现360的CLable控件
2014/02/21 Python
深入理解Python中的元类(metaclass)
2015/02/14 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
找到不普通的东西:Bonanza
2016/10/20 全球购物
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
外贸业务员岗位职责
2013/11/24 职场文书
计算机学生的自我评价分享
2014/02/18 职场文书
项目合作意向书范本
2014/04/01 职场文书
高效课堂标语
2014/06/26 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
成绩报告单家长评语
2014/12/30 职场文书
市场部岗位职责范本
2015/04/15 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
Java并发编程之Executor接口的使用
2021/06/21 Java/Android