2012-12-09 77 views
1

我需要一個函數來根據字符串生成一個CSS顏色,範圍爲min: #000000max: #FFFFFF。如果輸入字符串中的長度或任何字符發生更改,則該函數應該返回不同的顏色(但它必須始終在相同的字符串輸入中返回相同的顏色)。JS:需要一個基於字符串的css顏色代碼

例如:

f("Reddit") ==>#FF0000 

f("Smith") ==>#FFC0CB 

f("Smixh")==>#F008FF 

f("Smith") ==>#FFC0CB 

f("foo")==>#FF00FF 

f("Reddit") ==>#FF0000 

等。任何想法如何做到這一點?

+0

這家完全取決於什麼樣的字符串的素質你想要影響顏色。恩。字符串的長度意味着更深的顏色。 –

+0

是不同的字符串顏色模糊好嗎?如果沒有管理字符串本身的一些規則,則不可能保證獨特的字符串例如,什麼是最小/最大字符? –

回答

14

我最好hash the string,並使用十六進制校驗和的前六個字符爲十六進制顏色代碼:

function color(string) { 
    return '#' + md5(string).slice(0, 6); 
} 

演示:http://jsfiddle.net/4PMnA/48/

+0

天才!謝謝,是的,這應該工作得很好,謝謝 – hanshenrik

+0

CRC32可能是比MD5更好(更快)的選項。 – DCoder

+2

jsfiddle演示沒有工作了(問題加載md5 lib)。修正版本:http://jsfiddle.net/4PMnA/48/ – Stefaan

相關問題