jQuery backgroundColor的animate效果


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

animate一般只支持大小,位置,透明度的變化

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

剛開始我用jQuery的fadeIn和fadeOut,很快的就能達到效果。但是我發現,微博那里是逐漸地改變背景顏色實現的,而fadeIn跟fadeOut是通過逐漸改變alpha即透明度實現。所以開始糾結中。。 
然后,寫了段代碼 

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實現的顏色閃爍的警示效果代碼 

$('.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){
});
}
});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM