jquery淡出问题

时间:2010-06-04 18:43:51

标签: jquery

这个脚本为body和div设置一个随机颜色,并且应该在它们之间淡出:

function randcolor(){
 return ('#' + (~~(Math.random() * 16777215)).toString(16))
}

var $body = $("body"),
    $div = $("<div style='display:none; position: absolute; top:0; right:0; bottom:0; right:0;'></div>")

function havefun(){
    $body.css("background", randcolor()).append($div);
    $div.fadeIn(1000);

    setTimeout(function(){
        $div.fadeOut(500, function(){ $div.remove().css("background", randcolor()).hide(); havefun(); })
    }, 1500);
}

havefun()

但是没有褪色我的颜色变化立即发生。有人可以帮忙吗? here您可以看到working example

3 个答案:

答案 0 :(得分:1)

如果你只是想在div和背景之间淡出,那么http://jsfiddle.net/K2BF3/呢?我搞砸了颜色变化代码和超时,但是淡化似乎正在起作用......

更新:我不确定自己在做什么(为什么所有这些递归式调用,如果有setInterval?),但http://jsfiddle.net/K2BF3/3/显示更好的淡入淡出。

更新:我知道jsfiddle错误地搞乱了,但http://jsfiddle.net/KLN24/终于平稳过渡了。

答案 1 :(得分:0)

答案 2 :(得分:0)

你无法在没有插件的情况下“本机地”淡化颜色的原因是JQuery无法逐步调整元素上目标css属性的值。具有十六进制单位或其他非整数/十进制编码的任何CSS属性将具有完全相同的问题。 JQuery只是递减/递增值以实现淡入淡出效果和动画。使用Sarfraz建议的JQuery颜色plugIn。

编辑:

你仍然缺少这一点......淡入淡出效果取决于能否调整某些CSS属性。很可能您更改颜色与尝试更改不透明度和其他CSS属性的效果相冲突。