JavascriptでカラーコードをRGB形式に変換する方法をメモ。
サンプルコード
カラーコードの6桁の値は、16進数でそれぞれRGBの値(#RRGGBB)を表しているものなので、RRとGGとBBそれぞれを10進数に変換すればいいようです。
HTML
#<input type="text" name="color" id="color"> <button id="convert">変換</button> <p id="before">変換前: <span id="before-code"></span></p> <p id="after">変換後: <span id="after-code"></span></p>
JavaScript
// 使用する要素を取得
var convert = document.getElementById('convert');
var color = document.getElementById('color');
var before = document.getElementById('before');
var beforecode = document.getElementById('before-code');
var after = document.getElementById('after');
var aftercode = document.getElementById('after-code');
// 変換ボタンをクリックしたとき
convert.addEventListener('click', function() {
// 入力した値を取得
var colorcode = color.value;
// 変換した値を取得
var rgbArr = convert_colorcode_to_rgb(colorcode);
// 変換に失敗したときは処理終了
if(!rgbArr) {
alert('変換に失敗しました');
return false;
}
// 変換前と変換後を結果に反映
if(colorcode.split('')[0] !== '#') {
colorcode = '#' + colorcode;
}
var rgb = 'rgb(' + rgbArr[0] + ', ' + rgbArr[1] + ', ' + rgbArr[2] + ')';
before.style.backgroundColor = colorcode;
beforecode.innerHTML = colorcode;
after.style.backgroundColor = rgb;
aftercode.innerHTML = rgb;
}, false);
// カラーコードをrgbに変換する関数
function convert_colorcode_to_rgb(colorcode) {
// 先頭に#が含まれている場合は除外
if(colorcode.split('')[0] === '#') {
colorcode = colorcode.substring(1);
}
// カラーコードが省略されている場合は6桁に戻す
if(colorcode.length === 3) {
var codeArr = colorcode.split('');
colorcode = codeArr[0] + codeArr[0] + codeArr[1] + codeArr[1] + codeArr[2] + codeArr[2];
}
// カラーコードが6桁でない場合
if(colorcode.length !== 6) {
return false;
}
var r = parseInt(colorcode.substring(0, 2), 16);
var g = parseInt(colorcode.substring(2, 4), 16);
var b = parseInt(colorcode.substring(4, 6), 16);
return [r, g, b];
}
【参考サイト】
コメントが承認されるまで時間がかかります。