jquery
2010-06-04 99 views 1 likes 
1

此脚本设置随机颜色的身体和一个div,并应他们之间刚刚褪去:jQuery的褪色问题

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

回答

1

如果您只是想在div和背景之间淡入淡出,http://jsfiddle.net/K2BF3/怎么办?我搞砸了颜色变化代码和超时,但渐变似乎正在工作...

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

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

+0

啊!谢谢!什么是我的超时和颜色变化frm? – meo 2010-06-04 18:57:33

+0

不确定,但如果真正的应用程序是基于时间的,我会使用'setInterval()'使事情更干净。哦,我猜你的代码不工作,因为你使用'.remove()'和'.append()'一次又一次地删除/添加'div',这无助于覆盖... – MvanGeest 2010-06-04 18:59:39

+0

啊te脚本正在工作,我已经提出了一个错误放置div。我已经设置了两次,但没有离开。但它看起来有点迟钝 – meo 2010-06-04 19:08:37

0
+0

不一定,'.animate()'方法应该工作。 – MvanGeest 2010-06-04 18:46:49

+0

我不想插件我想要我的问题的答案 – meo 2010-06-04 18:46:57

+2

这是你的问题的答案。 – Achilles 2010-06-04 18:47:34

0

你不能动画退色“原生地”没有插件的原因是,JQuery的无法增量调整元素的针对性CSS属性的值。任何具有十六进制单位或其他非整数/十进制编码的CSS属性都具有完全相同的问题。 JQuery只是递减/递增值来实现淡入淡出效果和动画。按照Sarfraz的建议使用JQuery颜色插件。

编辑:

你还缺少点......淡入淡出效果的前提是能够调整某些CSS属性。您很可能会改变颜色与尝试更改不透明度和其他CSS属性的效果相冲突。

+0

我不褪色的颜色我淡出一个div。我的颜色变化终于在工作 – meo 2010-06-04 18:51:27

相关问题