2016-04-18 10 views
5

私はwebglで少しプロジェトを行う必要があり、HTMLからjavascriptに色を渡す必要があります。私はRGbで色を必要としているので、webGlでdirecrlyを動作させる必要があります。 html5を使用して入力からrgbの色を取得する方法があるかどうかを知ることです。HtmlはRgbで色を取得

イムこれやって:ここPROBは、私は彼が私に16進数の値を与え、この色を取得しようとするならば、私は機能とJavaScriptで私はRGBに16進数に変換することができますことを知っている

<input type="color" onchange="cor()" id="color"> 

をしかし、私これをやり遂げるためのより簡単な方法があるかどうかを知る必要があります。

答えて

5

幸いにも、HTML5の色値は、#XXXXXX形式(rgb(...)#XXXは無効です)の場合にのみ有効です。私たちは常にRGB位置が結果の値になります場所を正確に知っているように私達は私達の利点にこれを使用することができます。

#XXXXXX 
#RRGGBB 

rgb(...)にこれを変換するには、我々は単に#文字を取り除くとRRを変換する必要があり、 10進数GGBB値:

// #XXXXXX -> ["XX", "XX", "XX"] 
var value = value.match(/[A-Za-z0-9]{2}/g); 

// ["XX", "XX", "XX"] -> [n, n, n] 
value = value.map(function(v) { return parseInt(v, 16) }); 

// [n, n, n] -> rgb(n,n,n) 
return "rgb(" + value.join(",") + ")"; 

とJavaScriptの美しさに、私たちはすべてのコードの1行にこれを行うことができます。

return "rgb(" + "#FF0000".match(/[A-Za-z0-9]{2}/g).map(function(v) { return parseInt(v, 16) }).join(",") + ")"; 
-> "rgb(255,0,0)" 
+2

ありがとう、すごくHtml5の改良がなぜinputType = RgbColorか何かを入れるのはなぜですか? –

+0

@FilipeCostaおそらく、異なる色の種類の* lot *があるからです。 16進記法自体には、認識している認識フォーマットが4つあります( '#RGB'、'#RGBA'、 '#RRGGBB'、'#RRGGBBAA')。受け入れられるフォーマットについて長い議論が必要です。私は、おそらくHTMLの将来の版でこれを見るだろうと思う。 –

関連する問題