jQuery顏色值轉換為十六進位制形式

螞蟻小編發表於2018-07-07

谷歌、火狐和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()方法一章節。

相關文章