生成一个随机的种子十六进制颜色
Generate a random seeded hex color?
我使用'#'+Math.floor(Math.random()*16777215).toString(16);
在按键上生成随机的十六进制颜色。
当按下小写alpha键时,用于改变背景颜色。
我想把这段代码改为由keycode播种。我该怎么做呢?
我尝试了'#'+Math.floor(e.which*16777215).toString(16);
,但这产生了一个7个字符的代码,而不是6?
说明你想要一个"种子"我假设你希望每次按下相同的键时都是相同的颜色。不幸的是,你不能在JavaScript中控制Math.random()
种子,因为它不像其他语言那样接受种子作为参数。
你可以像这样生成一个随机的十六进制数字:
Math.floor((Math.abs(Math.sin(seed) * 16777215))).toString(16);
这应该为ASCII范围内的所有内容生成一个唯一的数字,但是有些颜色可能非常相似。
function genColor (seed) {
color = Math.floor((Math.abs(Math.sin(seed) * 16777215)));
color = color.toString(16);
// pad any colors shorter than 6 characters with leading 0s
while(color.length < 6) {
color = '0' + color;
}
return color;
}
let tableHTML = '';
for (let i=32; i < 127; i++) {
color = genColor(i);
tableHTML += `<tr style="background:#${color}"><td>${String.fromCharCode(i)}</td><td>#${color}</td></tr>`;
}
tableHTML = `<table>${tableHTML}</table>`;
$('#test').bind('keypress', function (evt) {
$(this).css('background', '#' + genColor(evt.which));
});
$('body').append(tableHTML);
#out, p, input { margin: 1em }
table {border-collapse: separate}
td {padding: 1em; border: 3px solid #fff; color: #fff; text-shadow: 0px 0px 3px #000}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="out">Type in the input box to change its background color :<input id="test">
<p>Below is a list of colors generated for ASCII 32 through 126</p>
</div>
您正在获得7
字母代码,因为您正在处理一个不能用十六进制6
字符表示的数字。
16777215
(以10为基数)在16为基数时为FFFFFF
。如果您的十进制数增大任何,将使用另一个十六进制字母/数字来表示它。
让你的代码工作,只要确保16777215
是最高的。
222
似乎是最高的键码可能(请纠正我,如果我错了):
Math.floor(e.which * 16777215 / 222).toString(16);
一个简单的JavaScript代码是:
function getRandomColor() {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++ ) {
color += letters[Math.round(Math.random() * 15)];
}
return color;
}
您可以在这里看到它的工作原理:http://sweb1.dmit.nait.ca/~bkoepke1/Random%20Colour%20Generator/
一个十六进制色码有3个组件,从00到FF连接成一个字符串。它不仅仅是一个6个十六进制字符的数字。所以一个随机颜色生成器应该是这样的:
function randomHexColor() {
var x, c = '#';
var i = 3;
while (i--) {
x = (Math.random()*256|0).toString(16).toUpperCase();
c += (x.length < 2? '0' : '') + x;
}
return c;
}
根据需要添加播种
相关文章:
- $(document).height()在刷新时随机化值(Safari 5.1.10)
- 使用当前日期生成随机id
- 从a-z中随机选择一个字母
- RequireJ无法随机加载脚本
- 单击按钮时显示随机字符串
- Ajax更新面板随机错误'PRM_MissingPanel'
- 如何检查if/else语句中的随机条件
- 是否可以自动拉取“随机”;标签“;从一长串文本中提取
- 如何使用D3生成特定范围内的随机颜色
- 如何在 Javascript/jQuery 中获取一些随机下拉列表的选定值
- 在固定位置显示随机图像
- 有效地获取两个区间之间的随机整数
- 如何获得随机灯光颜色
- 设置随机数,然后每5秒随机减少一次,直到达到0(javascript)
- 阵列中随机图像的问题
- 流星随机包vs随机种子
- Javascript随机排序与种子
- 当Javascript数学.随机方法是有种子的
- 生成一个随机的种子十六进制颜色
- 从种子点生成特定半径内的随机地理坐标