jQuery顏色值轉換為十六進位制形式
谷歌、火狐和IE8以上瀏覽器中,獲取的顏色值是RGB形式,例如rgb(255,255,0),感覺非常不適,在實際編碼中不方便使用。
這個時候需要進行轉換,下面就提供一段相關轉換程式碼。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.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 src="mytest/jQuery/jquery-1.8.3.js"></script> <script> $.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>
以上程式碼實現了我們的要求,可以將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事件處理桉樹。
(12).$("#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()方法一章節。
相關文章
- JavaScript 十六進位制顏色和RGB顏色值的相互轉換JavaScript
- 十六進位制顏色值簡寫
- JavaScript 生成十六進位制顏色值JavaScript
- iOS 常用RGB十六進位制顏色轉換方法iOS
- 正則提取十六進位制顏色值
- Qt進位制轉換(十進位制轉十六進位制)QT
- JavaScript RGB轉換成16進位制顏色JavaScript
- 【譯】CSS 十六進位制顏色揭祕CSS
- [C/C++11]_[初級]_[如何轉換帶井號的#十六進位制顏色字串到數值]C++字串
- 十六進位制顏色透明度對照表
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- leedcode-數字轉換為十六進位制數
- [顏色進位制轉換]js實現rgb和hex的相互轉換JS
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- 十進位制轉十六進位制
- 僅做筆記用:base64字串轉換為十六進位制形式表示的二進位制資料筆記字串
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- JavaScript rgb與十六進位制格式轉換JavaScript
- 進位制數轉換方法(八/十六/十)
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- JavaScript十進位制轉換為二進位制JavaScript
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 牛客網測試題 把十六進位制數字轉換為十進位制數字
- Go語言實現十進位制轉換成二、八、十六進位制Go
- 二進位制、十進位制與十六進位制相互轉化
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- Python實現"數字轉換為十六進位制"的兩種方法
- C++資料格式化5 - uint轉換成十六進位制字串&二進位制的data列印成十六進位制字串C++UI字串
- 進位制轉換
- Python 十進位制轉換為二進位制 高位補零Python
- 顏色轉換
- Python處理十六進位制與二進位制轉換的問題——binascii自帶庫PythonASCII
- printf十六進位制輸出64位值的方法