咱們知道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){ }); } });