成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

BOOM:一款有趣的Javascript動畫效果

開發 前端
在濃烈的好奇心驅使下,最終利用 Javascript 和 CSS3 完成了模仿上面的效果,通過調用方法,可以將頁面上的圖片一鍵爆炸,我給它起了個 boomJS 的名字。

BOOM:一款有趣的Javascript動畫效果

實踐出真知,有的時候看到一些有趣的現象就想著用自己所學的知識復現一下。

緣起

前幾天在 github 上看到同事的一個這樣的小項目,在 IOS 上實現了這樣一個小動畫效果,看上去蠻炫的,效果圖:

 

 

我就尋思著,在瀏覽器環境下,用 Javascript 怎么實現呢?

在濃烈的好奇心驅使下,最終利用 Javascript 和 CSS3 完成了模仿上面的效果,通過調用方法,可以將頁面上的圖片一鍵爆炸,我給它起了個 boomJS 的名字,貼張效果圖:

 

 

實現

我感覺效果還是可以的,因為沒有使用 canvas ,所以無法取到圖片上每個像素的顏色值。使用了一些比較討(sha)巧(bi)的方法,下面簡單講講如何實現的:

1、構造新圖容器,隱藏原圖

原本的圖是 標簽的圖,一張整圖,最終的效果當然不是在原圖上 boom ,看上去連貫的動畫本質上只是一個障眼法,利用 Javascript 做了一些巧妙的變換,所以***步所做的就是取到原圖的高寬及相對瀏覽器視窗的定位,再創建一個新的容器附著在原圖之上,然后隱藏原圖。

這個方法里面我主要用到了 getBoundingClientRect 這個方法,該方法返回元素的大小及其相對于視口的位置,***滿足我的需要。

嗯,這一步做了什么呢?簡單的如下所示:

 

 

2、生成一張張是碎裂小圖

***效果是圖片 boom 一下裂開,所以第二步要做的就是模擬出一小塊一小塊小圖,這里每一個小塊就是一個新的 div ,然后利用圖片的定位 background-position 將其定位到合適的位置,嘿,看看效果:

 

 

可以看到,這里分割成了很多個小塊,每個小塊其實是一個 div 然后,這些小塊被添加到我們上一步中設置的容器當中,然后利用原圖設置 div 的背景圖,所有 div 利用的都是原圖一張背景圖,接著圖片定位就可以完成這樣一個效果,說起來很簡單,但是中間經歷了很多計算,如何分割圖片,圖片的 width 與 height 比(是橫圖還是豎圖),每個小塊 div 的定位及小 div 背景圖的定位,具體的可以到這里看看:boomJS。

***為了好看,設置了圓角,但是這樣爆炸的話,感覺不夠真實,圖片一塊一塊的清晰可辨。所以利用縮放 scale ,隨機讓每個小塊放大或者縮小,再看看縮放后的效果:

 

 

嗯,模糊了很多,效果近一步增強,這樣爆開來比較真實。

3、boom 爆炸!

嗯,到了雞凍人心的***一步,要做的就是給每一個 div 小塊設置運動軌跡,然后同時爆開。

過程比較繁瑣,需要先算出圖片的中心點,然后每個 div 塊點以中心為基準點向外做直線運動,不得不說,做這個我還特意惡補了一下高中的幾何知識(囧)。為了效果更加真實,每個 div 塊運動的直線距離添加一個正負值恰當的隨機數,那么就可以達到有的塊炸的比較遠,有的塊炸的比較近。利用未縮放的小塊圖片做一下大概的示意圖:

 

 

***在炸裂的瞬間,讓每個小塊漸變消失,就可以完成上面 Gif 所示的效果了。

總結一下,其實過程當中還有很多細節沒有提及,比較重要的是動畫觸發的時序控制,因為最近在研讀 jQuery 源碼,就簡單的利用了 jQuery 的隊列來實現控制時序。

提到了就安利一下,我在 github 上關于 jQuery 源碼的全文注解,感興趣的可以圍觀一下。jQuery v1.10.2 源碼注解。

然后本文沒有貼代碼,這個動畫效果完整的代碼在我的 github 上,有興趣也可以圍觀一下:boomJSmJS

本文較短,如果還有什么疑問或者建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2022-02-25 14:57:33

harmonyOSjava心形動畫

2023-10-25 10:57:29

OverskrideLinux應用

2011-09-15 14:15:53

IOS應用

2016-03-29 14:54:36

2011-09-16 13:35:46

Android應用蹲蹲樂

2025-03-17 09:19:45

2022-02-17 10:26:17

JavaScript掃雷游戲前端

2014-12-16 10:11:22

2024-08-16 08:31:05

2021-07-23 16:50:19

httpJava框架

2021-09-28 20:19:54

APKAndroid流程

2020-11-05 09:27:48

JavaScript開發技術

2020-07-06 10:29:21

Linux系統數據

2017-03-06 11:02:59

產品軟件Power Desig

2011-08-09 09:16:44

Eclipse

2023-01-29 07:49:57

2015-07-08 15:30:59

智慧存儲華為

2020-06-01 16:45:44

Linux終端Terminus

2022-10-09 10:11:30

Python爬蟲神器

2015-12-07 16:18:06

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久国产 | 黄网站在线播放 | 欧美日韩在线不卡 | 色综合色综合 | 欧美日韩在线免费 | 国产精品一区在线观看你懂的 | 精品视频在线播放 | 色综合久久久久 | 成人午夜性成交 | 色视频www在线播放国产人成 | www.黄网 | 日韩欧美在线观看 | 涩涩鲁亚洲精品一区二区 | 精品久久一区二区 | 日韩成人在线观看 | 国产精品99久久久久久www | 黄色片大全在线观看 | 天天色综 | 羞羞视频网站在线观看 | 免费视频一区二区 | 亚洲成人一区 | 国产伦精品一区二区三区高清 | 日韩欧美天堂 | 日韩α片 | 亚洲视频区| 国产中文视频 | 国产日韩一区二区三区 | 国产成人精品一区二区三区四区 | 久久国产美女视频 | 色必久久 | 久久三区 | 免费观看黄色一级片 | 亚洲国产精品视频一区 | 亚洲精品456| 国产精品视频网 | 亚洲欧洲中文日韩 | 国产高清久久久 | 全免费a级毛片免费看视频免费下 | 区一区二区三在线观看 | 国产精品久久久久久妇女6080 | 久久久国产亚洲精品 |