jQuery backgroundColor的animate效果

咱們知道jQuery幾乎是咱們最經常使用的javascript庫了,不過儘管他本身自己擁有大量的特效,但卻仍然缺乏一些動畫效果。好比說,顏色、背景顏色的變換。javascript

animate通常只支持大小,位置,透明度的變化css

今天看到新浪微博在微博發佈框無內容時,點擊發布按鈕,發佈框會有背景顏色閃爍,產生警示的效果,友好的用戶體驗就想模仿一下。 
因而又糾結了一天。。。 java

剛開始我用jQuery的fadeIn和fadeOut,很快的就能達到效果。可是我發現,微博那裏是逐漸地改變背景顏色實現的,而fadeIn跟fadeOut是經過逐漸改變alpha即透明度實現。因此開始糾結中。。 
而後,寫了段代碼 jquery

var color = function(){};
color.fadeIn = function(a){
if(a>=255){
$('#input').css('backgroundColor', 'gba('+a+','+a+','+a+')');
a++;
setTimeout(color.fadeIn(a), 20);
} else {
setTimeout(color.fadeOut(a), 20);
}
}
color.fadeOut = function(a){
// 此處省略
}


簡單說,我是想實現,好比rgb(a, a, a)遞增至rgb(255, 255, 255) 再遞減至 rgb(a, a, a) 
可是效果差不少,一測試顏色沒變化。 
因而,打了一段測試代碼 瀏覽器

setTimeout($('#input').css('backgroundColor', 'red'), 1000);
setTimeout($('#input').css('backgroundColor', 'black'), 2000);


打開瀏覽器,直接就是黑色,並無從紅色跳到黑色。 
。。。 
後來 找到jQuery的一個插件叫jquery.color.js裏面重寫了backgroundColor,color,boderColor等屬性顏色的animate效果 
因而問題能夠這樣解決 : 
$('#input').animate({backgroundColor:'red'}, 1000); 
這樣就能夠從原始的背景顏色逐漸變成紅色的效果。 
很神奇啊,開始研究jquery.color.js的源代碼。 
先附上用jquery.color.js實現的顏色閃爍的警示效果代碼 post

$('.publish a').click(function(){
var content = $('textarea').val();
if(content==""){
$('#input').stop(false, true).animate({backgroundColor:'#FF9966'}, 250)
.animate({backgroundColor:'#FFF'}, 200)
.animate({backgroundColor:'#FF9966'}, 250)
.animate({backgroundColor:'#FFF'}, 200);
} else {
$.post(url, {input:content},function(data){
});
}
});
相關文章
相關標籤/搜索