jQuery は HEX ではなく RGB を提供します
jQuery は、要求されたときにrgb
値を返します。#CCC
たとえば、背景色を に設定し#CCC
、jQuery で要求した場合:
$(".foo").css("backgroundColor"); // rgb(204, 204, 204)
RGB から HEX を取得する
これは、RGB を HEX に変換する手段が必要になることを意味します。この質問は、ここ Stack Overflow で尋ねられ、回答されています。jQuery で RGB 値ではなく HEX 値を取得するを参照してください。私たちの目的のために、以下の関数を使用できます。
//Function to convert hex format to a rgb color
function rgb2hex(rgb){
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
return "#" +
("0" + parseInt(rgb[1],10).toString(16)).slice(-2) +
("0" + parseInt(rgb[2],10).toString(16)).slice(-2) +
("0" + parseInt(rgb[3],10).toString(16)).slice(-2);
}
滑らかな背景色のアニメーションを可能にする
これにより、検索と比較が処理されます。$.animate()
次に、メソッドを少しだけ拡張する jQuery UI コアをロードする必要があります。
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui..."></script>
背景色のアニメーション
jQuery UI のコア インプレース (フル パスはこちら) を使用すると、次のことができます。
$(".foo").animate({ backgroundColor: "#999999" }, 1000);
#999999
これにより、背景が最初から まで、1 秒かけて徐々にアニメーション化されます。
すべて一緒に今
最終的には次のようになります (jQuery UI のコアがリンクされていると仮定します)。
//Function to convert hex format to a rgb color
function rgb2hex(rgb){
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
return "#" +
("0" + parseInt(rgb[1],10).toString(16)).slice(-2) +
("0" + parseInt(rgb[2],10).toString(16)).slice(-2) +
("0" + parseInt(rgb[3],10).toString(16)).slice(-2);
}
$("#hello").on("click", function(e){
background = rgb2hex( $(this).css("backgroundColor") );
if ( background == '#cccccc' ) {
$(this).animate({
backgroundColor: "#123456",
color: "#fff"
}, 1000);
}
});
オンラインデモ: http://jsbin.com/uwiyon/edit#javascript,html