作家
登录

BOOM:一款有趣的Javascript动画效果

作者: 来源: 2017-05-08 16:03:03 阅读 我要评论

实践出真知,有的时刻看到一些有趣的现象就想着用本身所学的常识复现一下。

BOOM:一款有趣的Javascript动画效不雅

缘起

前几天在 github 上看到同事的一个如许的小项目,在 IOS 上实现了如许一个小动画效不雅,看上去蛮炫的,效不雅图:

在浓烈的好奇心使令下,最终应用 Javascript 和 CSS3 完成了模仿膳绫擎的效不雅,经由过程调用办法,可以将页面上的图片一键爆炸,我给它起了个 boomJS 的名字,贴张效不雅图:

我就沉思着,在浏览器情况下,用 Javascript 怎么实现呢?

实现

1、构造新图容器,隐蔽原图

本来的图是 标签的图,一张整图,最终的效不雅当然不是在原图上 boom ,看上去连贯的动画本质上只是一个障眼法,应用 Javascript 做了一些奇妙的变换,所以第一步所做的就是取到原图的高宽及相对浏览器视窗的定位,再创建一个新的容器附着在原图之上,然后隐蔽原图。

这个办法琅绫擎我重要用到了 getBoundingClientRect 这个办法,该办法返回元素的大年夜小及其相对于视口的地位,完美知足我的须要。

嗯,这一步做了什么呢?简单的如下所示:

2、生成一张张是碎裂小图

最后效不雅是图片 boom 一下裂开,所以第二步要做的就是模仿出一小块一小块小图,这琅绫强一个小块就是一个新的 div ,然后应用图片的定位 background-position 将其定位到合适的地位,嘿,看看效不雅:

可以看到,这里瓜分成了很多个小块,每个小块其实是一个 div 然后,这些小块被添加到我们上一步中设置的容器傍边,然后应用原图设置 div 的背景图,所有 div 应用的都是原图一张背景图,接着图片定位就可以完成如许一个效不雅,说起来很简单,然则中心经历了很多计算,若何瓜分图片,图片的 width 与 height 比(是横图照样竖图),每个小块 div 的定位及小 div 背景图的定位,具体的可以到这里看看:boomJS。

最后为了好看,设置了圆角,然则如许爆炸的话,感到不敷真实,图片一块一块的清楚可辨。所以应用缩放 scale ,随机让每个小块放大年夜或者缩小,再看看缩放后的效不雅:

我感到效不雅照样可以的,因为没有应用 canvas ,所以无法取到图片膳绫强个像素的色彩值。应用了一些比较讨(sha)巧(bi)的办法,下面简单讲讲若何实现的:

嗯,模糊了很多,效不雅近一步加强,如许爆开来比较真实。

3、boom 爆炸!

嗯,到了鸡冻人心的最后一步,要做的就是给每一个 div 小块设置活动轨迹,然后同时爆开。

过程比较繁琐,须要先算出图片的中间点,然后每个 div 块点以中间为基准点向外做直线活动,不得不说,做这个我还特意恶补了一下高中的几何常识(囧)。为了效不雅加倍真实,每个 div 块活动的直线距离添加一个正负值恰当的随机数,那么就可以达到有的块炸的比较远,有的块炸的比较近。应用未缩放的小块图片做一下大年夜概的示意图:

最后在炸裂的刹时,让每个小块渐变消掉,就可以完成膳绫擎 Gif 所示的效不雅了。

总结一下,其实过程傍边还有很多细节没有说起,比较重要的是动画触发的时序控制,因为比来在研读 jQuery 源码,就R单的应用了 jQuery 的队列来实现控制时序。

提到了就安利一下,我在 github 上关于 jQuery 源码的全文注解,感兴趣的可以围不雅一下。jQuery v1.10.2 源码注解。

然后本文没有贴代码,这个动画效不雅完全的代码在我的 github 上,有兴趣也可以围不雅一下:boomJSmJS

本文较短,如不雅还有什么疑问或者建议,可以多多交换,原创文┞仿,文笔有限,才疏学浅,文中如有不正之处,万望告诉。

【编辑推荐】

  1. 深刻懂得JavaScript缺点和客栈追踪
  2. 若何用JavaScript实现一个数组惰性求值库
  3. 纯CSS3画出小黄人并实现动画效不雅
  4. 基于Python和JavaScript编写物联网温度计法度榜样
  5. Prepack——JavaScript代码优化对象
【义务编辑:枯木 TEL:(010)68476606】

  推荐阅读

  MySQL注入攻击与防御

下面几点是注入中经常会用到的语句 控制语句操作(select, case, if(), ...) 比较操作(=, like, mod(), ...) 字符串的猜解操作(mid(), left(), rpad(), …) 字符串生成操>>>详细阅读


本文标题:BOOM:一款有趣的Javascript动画效果

地址:http://www.17bianji.com/lsqh/35072.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)