IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

JavaScript のワンライナーでカラーコード

RGB 値が分かってて #XXXXXX を計算するのめんどいなーと思って

Firebug でやってみた。

'#' + [76, 84, 105].map(function(i){ return (i >> 4 ? '' : 0) + i.toString(16) }).join('')

このくらいならワンライナーで書けて便利ー^^

追記:

弾さんからトラックバックもらって見てみたけど弾さんはちょっとミスってたので再トラバします。

(function(r,g,b){return '#' + (r < 16 ? 0:'') + (r*65536+g*256+b).toString(16)})(15, 127, 255)
http://blog.livedoor.jp/dankogai/archives/50911084.html

これだと

(function(r,g,b){return '#' + (r < 16 ? 0:'') + (r*65536+g*256+b).toString(16)})(0, 1, 1) // #0101 

このように r が 0 だとおかしくなりませんか?
という訳で弾さんのを元にした別解

(function(r,g,b){return ((1<<24)+(r<<16)+(g<<8)+b).toString(16).replace(/^1/,'#')})(0, 1, 1)

どうでしょうか
いや、こっちのがいいかな

(function(r,g,b){return ((((1<<8)+r<<8)+g<<8)+b).toString(16).replace(/^1/,'#')})(0, 1, 1)

いやー。時間の無駄遣いだなあ