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()方法一章節。
相關文章
- 將十六進位制顏色值轉換為RGB顏色值程式碼例項
- JavaScript 十六進位制顏色和RGB顏色值的相互轉換JavaScript
- 十六進位制顏色值簡寫
- JavaScript 生成十六進位制顏色值JavaScript
- js實現的十六進位制顏色和RGB顏色值的相互轉換JS
- 正則提取十六進位制顏色值
- 十六進位制顏色轉換為RGB程式碼例項
- iOS 常用RGB十六進位制顏色轉換方法iOS
- 十六進位制和RGB顏色格式的相互轉換
- 匹配十六進位制顏色值正規表示式
- 十六進位制轉換為八進位制
- 十六進位制轉換為十進位制
- 隨機生成十六進位制顏色值程式碼例項隨機
- 【譯】CSS 十六進位制顏色揭祕CSS
- Qt進位制轉換(十進位制轉十六進位制)QT
- js隨機生成十六進位制顏色值程式碼例項JS隨機
- 【進位制轉換】十進位制與十六進位制相互轉換方法
- 十六進位制顏色透明度對照表
- 匹配十六進位制顏色正規表示式
- [C/C++11]_[初級]_[如何轉換帶井號的#十六進位制顏色字串到數值]C++字串
- JavaScript RGB轉換成16進位制顏色JavaScript
- Swift3.0-16進位制顏色轉換UIColorSwiftUI
- javascriptRGB顏色轉換到16進位制詳解JavaScript
- 十六進位制顏色字串轉換成Color在Silverlight中的實現字串
- RGB顏色與16進位制顏色的換算方法
- 十進位制轉換為十六進位制和二進位制程式碼例項
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 遞迴-進位制轉換器(十六進位制以內)遞迴
- Oracle中十進位制與十六進位制轉換程式Oracle
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- Python 進位制互相轉換(二進位制、十進位制和十六進位制)Python
- 僅做筆記用:base64字串轉換為十六進位制形式表示的二進位制資料筆記字串
- 十進位制轉十六進位制
- Facebook 面試題 | 將數字轉換為十六進位制面試題
- leedcode-數字轉換為十六進位制數
- [顏色進位制轉換]js實現rgb和hex的相互轉換JS