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 关于# 和 void的区别分析
Oct 26 Javascript
Google (Local) Search API的简单使用介绍
Nov 28 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
Mar 25 Javascript
JavaScript中校验银行卡号的实现代码
Dec 19 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
Mar 08 Javascript
Node+Express+MongoDB实现登录注册功能实例
Apr 23 Javascript
javascript实现QQ空间相册展示源码
Dec 12 Javascript
10 种最常见的 Javascript 错误(频率最高)
Feb 08 Javascript
详解vue-cli下ESlint 配置说明
Sep 03 Javascript
OpenLayers3实现对地图的基本操作
Sep 28 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
Oct 19 Javascript
使用TS来编写express服务器的方法步骤
Oct 29 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/04/09 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
Yii框架获取当前controlle和action对应id的方法
2014/12/03 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
javascript深入理解js闭包
2010/07/03 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
JavaScript定时器和优化的取消定时器方法
2015/07/03 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
详解如何使用webpack打包Vue工程
2017/05/27 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
python用户管理系统的实例讲解
2017/12/23 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
Pycharm 设置自定义背景颜色的图文教程
2018/05/23 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
sklearn和keras的数据切分与交叉验证的实例详解
2020/06/19 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
python 元组和列表的区别
2020/12/30 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
C语言编程题
2015/03/09 面试题
大学自荐信
2013/12/12 职场文书
大学生个人自荐信样本
2014/03/02 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
任命通知范文
2015/04/21 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书