json html 展示,json动画制作

  json html 展示,json动画制作

  问题背景

  有一天,我们的UI设计师找到我,说要把页面里我自己程序写的动画换成他们给的json动画。原因是有些动画太复杂,自己写的时候达不到预期效果。(写到这里,突然想到一个问题。这么复杂的动画为什么不用gif?坐在我对面的安卓开发者兄弟回答是因为gif的质量可能不高,播放的时候不流畅,好吧,我信)

  我:客户端可以添加json动画,H5页面从来没有听说过json动画。

  设计师一脸肯定,说好。有网页版。

  写到这里,我真的想夸夸我们的设计师姐姐。几乎很多好的解决方案都是在他们的“胁迫”下找到的(哦,他们还会写H5页。能为你做什么?

  这就是问题所在。如何在H5页面中使用json动画?

  如何在H5页面内使用json动画

  这时候设计师给我甩了一个链接。看到这里洛蒂网络;我点进去了解了一下。它是Airbnb的开源动画库,可以完成很多很酷的动画,使用起来非常简单。设计师只需要通过AE制作的动画导出JSON文件,然后前端使用Lottie直接加载JSON文件生成动画。不需要设计师裁剪N个gif或者前端做复杂的图纸,一举两得。而且Lottie在所有平台都有,ios,Android,web,React。为什么我现在才发现这么仙的东西?

  说到这里,我该如何在H5页面中使用它呢?

  很简单。设计师生成的文件夹会发给你(设计师只需要给AE添加一个lottie插件,导出即可)。打开后应该是这样的。打开demo.html你就知道怎么用了(所以我还是在这里写一些技术文章。

  开个玩笑,其实还是有很多坑在用的。以下是使用中的几点注意事项。

  1.demo.html里面有很多内联的东西,使用时堆积在页面内不好看

  仔细看看。实际上,demo.html把js和json都放进去了。这时候我们可以把js和json分开。如果使用js,可以使用cdn上提供的地址。

  script type= text/JavaScript src= https://cdnjs . cloud flare . com/Ajax/libs/body movin/5 . 4 . 3/Lottie . min . js /json脚本动画需要的数据放在data.json文件中,但是给出的JSON文件中的数据格式如下(太长了,写不完。

  然后,如果你想用脚本在单独的html中引入json文件,会得到一个错误,所以你需要修改json文件,添加变量,赋值到前面。如下图:

  通过这种方式,可以像导入JS文件一样导入jsON。

  脚本类型= text/JavaScript src=。/data.json/script可用的demo.html减少到如下

  html xmlns= http://www . w3 . org/1999/XHTML meta charset= UTF 8 head style body { background-color:black;边距:0px身高:100%;溢出:隐藏;} #洛蒂{ background-color:# fff;宽度:100%;身高:100%;显示:块;溢出:隐藏;transform: translate3d(0,0,0);文本对齐:居中;不透明度:1;}/style/head body div id= Lottie /div script type= text/JavaScript src= https://cdnjs . cloud flare . com/Ajax/libs/body movin/5 . 4 . 3/Lottie . min . js /script script type= text/JavaScript src=。/data . JSON /script script var params={ container:document . getelementbyid( Lottie ),renderer: svg ,loop: true,autoplay: true,animation data:animation data };var animanim=Lottie . load animation(params);/script/body/html当然,如果你使用的是js模块化编程,可以直接导入,不需要修改data.json,如下:

  从导入animationData。/data.json2.使动画适配移动端

  我之所以觉得这是个坑,是因为设计师给我的动画是全屏不透明的,然后她让我把这个动画定位成宽度100%,高度垂直居中的方式。我在浏览器里试了一下,360*640的屏幕上宽度是100%。表达式如下(好像高度100%宽度贴合中间边,黑色背景色漏出来。请参见下面的蓝色框部分)

  而在iphonex的屏幕下,则相反,显示宽度为100%,高度居中,黑色背景色从上下漏出,如下图蓝色边框部分所示(原因是iPhone X屏幕较长。

  这种布局是如此熟悉,它与img的object-fit属性包含时的性能一致(object-fit也是一个宝藏,因此有兴趣的学生可以研究它,这非常容易使用)

  我在这里主要添加以下代码来解决设计师的需求:

  Js节:SetTimeout(function(){ document . getelementsbytagname( SVG )[0]。style.height= auto}, 50);Css部分:(向lottie添加flex布局)# Lottie { width:100%;身高:100%;transform: translate3d(0,0,0);文本对齐:居中;不透明度:1;位置:绝对;top:0;左:0;z指数:3;显示器:flex弯曲方向:行;justify-content:居中;对齐-项目:居中;}最终效果:

  总结

  以上截图是静态的,实际上有动态效果。我不知道怎么加动画,所以没弄。有兴趣的可以试试。

  适用范围:我感觉一般的全屏或者部分复杂的动画都可以尝试用这个方法,比gif流畅,兼容性好。一些Android产品使用这种方法来打开屏幕。对于H5页面,简单的动画可以通过自己的程序实现,可以避免踩坑。

  参考链接:

  洛蒂官网

  洛蒂-web github地址

  这就是本文的全部内容。希望对大家的学习和支持有帮助。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: