javascript中的伪随机颜色生成器
Pseudo random colours generator in javascript
从这个问题开始:JavaScript中的随机颜色生成器和它的第一个答案:
function get_random_color() {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++ ) {
color += letters[Math.round(Math.random() * 15)];
}
return color;
}
我在问:有没有一种方法可以避免特定范围的颜色?
假设我想避免C0C0C0(银色)和所有类似的颜色…我试图理解这里的颜色是如何工作的:http://www.w3schools.com/tags/ref_colorpicker.asp。我写了C0C0C0,我得到了所有相似的颜色,但显然列表不完整,因为从C0C0C0上下我们有C6C6C6和ADADAD,但我也会避免C0C0C1,它只在最后一位与银色不同。
我希望我已经解释清楚了。你能做到吗?谢谢欢呼
就像有人说的一样是模糊的词:)
如果这个功能真的很重要,你可以尝试使用CIE LAB颜色模型来定义"色差"。L * a * b模型
取值:L, a, b
可以计算ΔE = sqrt((ΔL) ^ 2 +(Δ)^ 2 +(Δb) ^ 2)
模型显示:
0<ΔE<1 - cannot see the difference
1 <ΔE < 2 - the difference can be seen by experienced observer
2 <ΔE < 3,5 - the difference can be seen also by unexperienced observer
3,5 <ΔE < 5 - the difference is distinct
5 < ΔE - both colors are totally different
所以你会将RGB转换为L*a*b(例如:http://www.easyrgb.com/index.php?X=MATH)and看看是否有"不同"的颜色
我从来没有这样做过,这只是一个想法:)
function get_random_color() {
var color = new Array;
do {
for (var i = 0; i < 3; i++ ) {
color[i] = Math.round(Math.random() * 255);
}
} while (close_to_gray(color));
// Reformat the r, g, b binaries to #XXXXXX here, call it 'color_s'
return color_s;
}
function close_to_gray(color) {
var spread = 1;
for ( var i = 0; i < 3; i++ ) {
for ( var j = i+1; j < 3; j++ )
if ( abs(color[i] - color[j]) > spread )
return false;
}
return true;
}
差不多。您可以根据自己的喜好调整spread
的值。:)
相关文章:
- 如何使用D3生成特定范围内的随机颜色
- 如何获得随机灯光颜色
- 单击时将文本的颜色更改为随机颜色(按钮)
- 使用JS将页面中的每个字母设置为随机颜色.为什么在页面的每个打开标记之前总是有一组额外的span标记
- 我怎样才能随机化 HTML 元素的颜色属性
- 文本颜色的随机色调不起作用
- 令人愉快的调色板随机颜色生成
- 显示所选随机颜色的十六进制
- 使用Javascript对RGBA颜色进行光标控制的形状随机化
- 随机bg颜色,每次刷新都会更改
- 每次单击按钮时随机选择颜色
- JavaScript 创建一个随机表生成器并为单元格分配颜色
- 使用jquery将文本更改为伪随机颜色
- 用于生成具有随机颜色的 CSS 属性的脚本
- 随机化网页上的图像和颜色对
- 使用 javascript 随机更改表的背景颜色
- 悬停时查询颜色随机化
- javascript颜色随机化器不起作用
- 颜色随机连接线
- 我如何改变背景颜色随机与Javascript