jQuery-煙花效果(運動相關)


先感謝下“妙味課堂”視頻

效果圖

 

$(function(){
    $(document).click(function(event){
        /*1.創建DIV並插入到body當中
        *2.設置其初始位置:TOP為屏幕的高度,left為鼠標點擊時,鼠標的pageX值;
        */
        //創建DIV
        var $div = $("<div/>");
        var eLeft = event.pageX;
        var etop = event.pageY;
        var cHeight = document.documentElement.clientHeight;
        //設定顏色、大小,和其初始化的位置
        $div.css({"width":4,"height":15,"background-color":"red","top":cHeight,"left":eLeft});
        //插入到頁面的body當中去;
        $("body").append($div);
        //不要出現滾動條
        $("body").css("overflow","hidden");
        //讓DIV向上移動,並且移動到鼠標位置后,刪除這個DIV元素,之后執行煙花效果;
        $div.animate({"top":etop},700,function(){
            //移除DIV
            $(this).remove();
            /*煙花效果
            *1.煙花是很多個DIV構成
            *2.每個煙花的顏色不一樣
            *3.煙花的位置也不一樣
            *4.煙花散開方向不一樣
            *5.煙花有下墜感覺
            */
            //用循環造建很多個DIV,來表示煙花
            for(i=0;i<20;i++){
                $("body").append($("<div class='yh'></div>"));
            }
            /*煙花的顏色是隨機的,而且是用16進制表示色值,所以用隨機數結合16進制;
            *16進制的最大值ffffff,轉換成十進制16777215;
            *Math.random()*16777215公式可以得到0-16777215之間的數,因為是小數,所以要用到取整;
            *Math.ceil(Math.random()*16777215)生成一個在顏色值范圍內的,隨機的十進制值;
            *Math.random()*9+1公式可以得到1-10之間的數,以此類推
            *.toString(16)方法,是把得到的十進制,轉換成16進制,也就是隨機的顏色值了;
            */
            
            var sjColor = ""
            function changColor(){
                sjColor = Math.ceil(Math.random()*16777215).toString(16)//;
                //當這個產生的隨機的顏色值,不足6位數的進候,需要補齊,又不改變其值,所以要在這個數的前面加零;
                while(sjColor.length<6){
                    sjColor = "0"+sjColor;
                }
            }
            

            //設置煙花DIV的顏色和位置、散開,墜落
            $(".yh").css({"width":3,"height":3,"top":etop,"left":eLeft});
            /*煙花散開要設左和上
            *Math.random()*20-20這里要減20,是因為煙花是從中心點的左右散開的,
            *最小隨機數時0-10 = -10,最大隨機數時20-10=10;所以就是正負10之間
            */
            $(".yh").each(function(index, element) {
                var $this = $(this);
                changColor()
                var yhX = Math.random()*400-200;
                var yhY = Math.random()*600-300;
                $this.
                css({"background-color":"#"+sjColor,"width":3,"height":3}).
                animate({"top":etop-yhY,"left":eLeft-yhX},500);//散開
                for(i=0;i<30;i++){
                    //判斷鼠標點擊時的右邊煙花還是左邊煙花
                    if(yhX<0){
                        downPw($this,"+");//右下墜
                    }else{
                        downPw($this,"-");//左下墜
                    }
                }
                
                //下墜效果,即同時改變煙花元素的X和Y,會有拋物線感覺,然后完成動畫后,刪除這個煙花元素
                function downPw(odiv,f){
                    odiv.animate({"top":"+=30","left":f+"=4"},50,function(){
                                setTimeout(function(){odiv.remove()},2000);
                    })
                }
            });
        });        
    })
})

 

一、功能

  點擊頁面出現上圖的效果,並下墜。

二、功能分析

  1.點擊時創建DIV並插入到body當中

  2.煙花是很多個DIV構成,所以同時也要創建這些DIV

  3.每個煙花的顏色不一樣,所以需要隨機函數處理顏色值

  4.煙花的位置也不一樣,所以也需要隨機函數處理位置

  5.煙花散開方向不一樣

  6.煙花要下墜感覺

三、總結:

  3.1.隨機數 Math.random()零到一之間的數;

    3.11Math.random()乘以任意一個數,結果就是0-這個乘數之間的值,

      Math.random()*9 結果就是0-9之間的數

    3.12如果要讓起始值為別一個指定的數,不為零,就加上這一個數;

      Math.random()*8+2 結果就是2-10之間的數

    3.13如果要想正負之間的數,就減去乘數的一半

      Math.random()*8-4,其結果就是+4和-4之間的數

 

  3.2運動核心

    3.21就是讓元素在當前頁面中的X坐標,或Y坐標 發生改變(加、減、乘、除等,只要能讓這個值改變的運算,都行)

    3.22怎么改變才能看起來是運動的呢?

      每次改變時,都是參考元素當前的X或Y坐標。(因為每一次的改變,這個元素的坐標就會變化)所以始終都要獲取到當前這個元素改變之后的X或Y坐標值。

 

  3.3隨機顏色值

    顏色值,是十六進制數。而這個值也是有范圍的,所以我們要先取得其范圍。

    000000-FFFFFF.

    然后要轉換成十進制的范圍

    0-16777215

    有了這個范圍就可以利用隨機數,生成在這個范圍內的色值了。當然最后還是要轉成十六進制,並且不要忘記在色值前面加"#"號

 

  3.4下墜感

    其實就是讓元素有,一個拋物線的變化,即讓元素的X和Y的值,同時間變化。

 

  (在使用setTimeout的時候,里面的this,不要指向錯了!~~)

 

DEMO下載

  


免責聲明!

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



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