jquery的animate({})動畫整理


在網頁制作的過程中少不了用到各種動畫,形式多種多樣,flash,css,js,canvas,等等都能實現,對於其優劣和效果只能說各有千秋。

什么是動畫效果,其實網頁中的漸變效果就是一種很基礎的動畫,動畫的基礎是時間效果,在規定的時間內完成什么效果。動畫最關鍵的一點還是根據人類的視覺習慣而來,動的東西往往是心靈捕捉的對象。抓住用戶的眼光,以動畫為基礎宣傳自己迫切想表達的並且美化豐富界面內容,也算是動畫的內涵了。

下面提到的是使用jQuery如何實現動畫效果,動畫的要素是動,move當然有需要對css的position屬性進行一定的了解。然后就是時間參數,時間是確定動畫效果的基礎,然后就是運動軌跡,運動軌跡的確定就來源於今天我們學到的animate({}),不得不提的是jQ之所以盛行到今天還是有很多可取的功能,不單單是對於選擇器的使用,其他工具函數和動畫方法也很強大,基本上你能看到的網頁動畫效果它都可以幫助你實現。

下面先附上一個例子,寫的很簡單,新手制作有高手請斧正,謝謝!

html:

<p>點擊動畫</p>
<div class="ha">enheng</div>

css:

<style type="text/css">
p {
    background-color:rgba(240,210,210,1.00);
    width:70px;
    height:20px;
}
.ha {
    width:100px;
    height:100px;
    background-color:rgba(53,178,231,1.00);
    position:relative;
}
.cur {
    background-color:rgba(83,148,236,1.00);
}
.cur1  {
    background-color:rgba(37,213,23,1.00);
}
.cur2 {
    background-color:rgba(47,44,53,1.00);
}
</style>

jQ代碼:

<script type="text/javascript" src="jq/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function (){
    var ppap = $("p");
    var ddad = $(".ha");
    var i = 0;
    var m =100;
    var n =10;
    function My(i){
        ddad.animate({
            "left":m*i,
            "border-radius":n*i,
            });
        if(i>2,i<3){$(".ha").removeClass("cur2").addClass("cur");}
        else if(i>3,i<4){$(".ha").removeClass("cur").addClass("cur1");}
        else{$(".ha").removeClass("cur1").addClass("cur2");};
            };
    $("p").on("click",function (){
        i+=1;
        if(i>5){i=0};
        My(i);
        });
    timer = setInterval(function(){
        $("p").trigger("click").css("background","red");
        },1000);
    $(".ha").stop(true,true).mouseover(function (){
        clearInterval(timer);
        });
    $(".ha").stop().mouseout(function(){
        timer = setInterval(function(){
        $("p").trigger("click").css("background","red");
        },500);
        })
})
</script>

ps:首先我們想設計怎樣的動畫,這里簡單舉例,那就是點擊p標簽,然后下面的Div標簽會向右移動,具體的是每次移動100像素移動5次,然后在加載完成后設置了setInterval()讓其可以自動開始,並且設置了條件,讓他能夠循環開始,下面我們拆解一下代碼。

首先:定義了我們需要的參數ppap和ddad,別想多了我很時尚的,嗯哼,ppap,好的繼續,然后我們定義了全局常量和變量,常量n/m變量i;

其次:我們新定義了一個函數My(),讓他幫我們做一件事,什么事情呢,那就是ddad即Div標簽的運動軌跡,animate({})。里面完成兩件事left和border-radius兩個屬性值發生變化。里面有疑問請百度一下,謝謝。定義好之后,在adimate中可以設置動畫的完成事件,這里我們並沒有使用這個時間而是后面我們對其新建的定時器。

然后:我給P標簽綁定一個點擊事件,在里面我設置了變量的自動增加。和if(){}條件函數,讓變量i值不超過5,然后這樣就會讓我們的變量循環的動起來。

最后:給自定義的定時器綁定一個函數,幫我們做的事情呢,就是在我們不手動去點擊p標簽能夠自動開始,然后調用trigger()幫助我們去重復的激活給P元素綁定的點擊事件。然后變量的值就會增加,返回給我們的My(i),然后有偏移的舉例就會增加,整個過程就循環的動起來了,繼而我們給div綁定兩個mouse鼠標事件,你們看到我換着花樣對選擇器的使用,我也是測試一下,這樣會不會讓代碼出現問題,但是並沒有,由此可見對選擇器來說jQ的確很強大,他們完成的是懸停效果,划過停止,滑出繼續開始動畫。

到這里就結束了對整個動畫的操作,動畫很簡單,也很復雜,具體看實際生活中我們怎么去運用它,我們用的很多的東西,導航,下拉,折疊,手風琴,百葉窗,拖放,焦點圖等等很多的效果,都是一個對於這方面愛好的人員必定去了解和學習的東西,其實一門語言的運用會有很多相同之處,並且同一門語言解決一件動畫也有很多種不同的方法,我們只是站在了別人的肩上,運作別人曾經設定好的東西,真的有一天我們自己有了新的發現那才叫創作,現在的最多叫做擴展延伸,甚至更低。

animate與css中的transition和transform也有很多的共同點,canvas屬於Html5的東西,他的功能也足夠強大,當然了js是其中的核心基礎,原生的js現在看的比什么都重要,作為2017年的熱門語言它還有很大的擴展性,還有很多的運用途徑,這里也沒有辦法全部闡述,就先提到一點關於animate,引入后發現delay(),stop(),隊列動畫(),回調等等。太多的東西需要自己去一步步嘗試和夯實,在接下來還要繼續走向服務器,走向app,ui.......

 


免責聲明!

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



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