我正在试图弄清楚如何使用鼠标悬停功能将div的颜色更改为随机颜色,但是我无法找到关于我需要更改以使其发生的明确答案。有任何想法吗?这是我原来的剧本。
$(document).ready(function () {
for (var i = 0; i <= 128; i++) {
$('<div />', {
'class': 'sameDiv',
'id': 'div' + i
}).appendTo('body');
}
});
$('.sameDiv').mouseover(function () {
$(this).stop(true).fadeTo(200, Math.random());
}).mouseout(function () {
$(this).fadeTo(200, Math.random());
});
答案 0 :(得分:4)
在mouseout
功能中,您可以为rgb
颜色生成三个随机值。
$(this).css("background","rgb("+Math.floor(Math.random()*256)+","+Math.floor(Math.random()*256)+","+Math.floor(Math.random()*256)+")")
答案 1 :(得分:1)
我编辑了你的小提琴。这是解决方案:
$(document).ready(function () {
for (var i = 0; i <= 128; i++) {
$('<div />', {
'class': 'cell',
'id': 'div' + i
}).appendTo('body');
}
});
$('.cell').mouseover(function () {
var randomColor = '#' + (function co(lor){ return (lor +=
[0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f'][Math.floor(Math.random()*16)])
&& (lor.length == 6) ? lor : co(lor); })('');
$(this).css("background-color", randomColor);
});
答案 2 :(得分:0)
你想要这样的东西:
$('.cell').mouseover(function () {
var randomColor = '#' + Math.floor((Math.random() * 16777216)).toString(16);
$(this).css("background-color",randomColor);
});
过渡效果应该可以通过CSS过渡来实现。
16777216是16 ^ 6,值的范围由6位十六进制表示。 toString(16)将十进制值转换为十六进制。
<强> ETA:强>
为了正确,当生成的值非常低时,这应该考虑前导零。如果不这样做,将导致一些前零色(0A6E7A)被替换为零尾色(A6E7A0)。
$('.cell').mouseover(function () {
var randomColor = "0" + (Math.floor((Math.random() * 16777216)).toString(16));
$(this).css("background-color","#" + randomColor.substr(randomColor.length - 6));
});
答案 3 :(得分:0)
您还没有尝试过为div提供背景颜色
这是我的代码 -
$('.cell').mouseover(function () {
var randomColor ='#'+ ('000000'+(Math.random() * 0xFFFFFF<<0 ).toString( 16 )).slice(-6);
$(this).css("background-color",randomColor);
});