亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

Html5頁面內使用JSON動畫的實現

2024-08-26 00:21:19
字體:
來源:轉載
供稿:網友

問題背景

有一天我們的UI設計師找到我說,要把頁面中我自己用程序寫的動畫,換成他們給的json動畫,原因是有的動畫很復雜,自己寫起來達不到他們的預期效果(寫到這里我突然想到一個問題,這么復雜的動畫為什么不使用gif。。。。坐我對面的安卓開發小哥答因為gif播放的時候可能質量不高不流暢,好吧我信了)

我:????客戶端可以加json動畫,H5頁面沒聽說過可以讀json動畫哎

設計師一臉肯定,說可以的,有web版本。

寫到這里,我真的要好好夸一波我們的設計師妹子了,幾乎很多蠻好的解決方法都是在他們的“逼迫”之下找到的(哦,她們還會寫H5頁面。。。要我有何用系列

那問題來了,怎么在H5頁面里面使用json動畫呢

如何在H5頁面內使用json動畫

這時候設計師甩了一個鏈接給我,看這里lottie-web ;我點進去了解了一下,是Airbnb開源的一個動畫庫,該庫可以完成很多酷炫動畫,使用起來也很簡單,設計師只需要通過AE做成的動畫導出JSON文件,然后前端使用Lottie直接加載JSON文件生成動畫,既不需要設計師切N多gif,也不需要前端去進行復雜繪制了,一舉兩得,并且,Lottie全平臺可用,ios、Android、web、React Native都可以,且占用內存少,加載流暢。(這么個神仙東西我為什么現在才發現。。

說了這么多,那怎么在H5頁面里面使用呢?

很簡單了,設計師生成的文件夾發給你(設計師那邊只用在AE中加個lottie插件,導出就行了),打開之后應該是這樣子的,打開demo.html就知道是怎么用的了(所以我還在這里寫什么技術文章

Html5,JSON,動畫

玩笑歸玩笑,其實在使用中還是碰到了很多坑的,這里記錄幾個使用時注意的地方

1.demo.html里面有很多內聯的東西,使用時堆積在頁面內不好看

仔細看一下,其實demo.html把js和json都放進去了,這時候我們可以把js和json單獨分出來,js的話可以使用cdn上提供的地址

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.4.3/lottie.min.js"></script>

動畫需要的json數據放在data.json文件里面,但是給出的json文件里面的數據格式是這樣的(太長了 截不完

Html5,JSON,動畫

那如果你要在單獨的一個html里面使用script的方式引入json文件的話,會報錯,所以需要修改json文件,在前面加上變量,賦值。如下圖:

Html5,JSON,動畫

這樣你可以通過像引入js文件的方式一樣的引入該json

<script type="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;            margin: 0px;            height: 100%;            overflow: hidden;        }        #lottie{            background-color:#fff;            width:100%;            height:100%;            display:block;            overflow: hidden;            transform: translate3d(0,0,0);            text-align: center;            opacity: 1;        }    </style></head><body><div id="lottie"></div><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/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,        animationData: animationData    };    var anim;    anim = lottie.loadAnimation(params);</script></body></html>

當然,你如果使用的是js模塊化編程的話,可以不用更改data.json,直接import進來就行了,如下:

import animationData from './data.json'

2.使動畫適配移動端

之所以覺得這是個坑是因為,設計師給我的動畫是全屏且非透明底的,然后她要求我將這個動畫以寬度100% 高度垂直居中截取的方式定位,我在瀏覽器里面試了下,360*640屏幕下,寬度100%,表現形式是這樣的(看上去是高度100% 寬度適配居中 兩邊漏出了黑色的背景色,見下圖藍色框起來的部分)

Html5,JSON,動畫

換成iPhone X的屏幕下,相反,表現出來是寬度100% 高度適配居中,上下漏出黑色背景色,見下圖藍色框起來的部分(究其原因是因為iphonex屏幕較長

Html5,JSON,動畫

這個布局好熟悉哇,跟img的object-fit屬性取值為contain的時候表現一致(object-fit也是寶藏,有興趣的同學可以去研究一下,非常好用)

我這里解決設計師的需求主要增加下面的代碼:

js部分:setTimeout(function() {    document.getElementsByTagName('svg')[0].style.height = 'auto';}, 50);css部分:(給lottie增加flex布局)#lottie {    width:100%;    height:100%;    transform: translate3d(0,0,0);    text-align: center;    opacity: 1;    position: absolute;    top: 0;    left: 0;    z-index: 3;    display: flex;    flex-direction: row;    justify-content: center;    align-items: center;}

最終效果:

Html5,JSON,動畫

總結

以上圖片截圖都是靜態的,實際是有一個動態效果的,我不知道怎么添加動圖就沒弄了,感興趣的可以試一下。

適用范圍:我感覺一般全屏的或者局部很復雜的動畫可以使用這個方法一試,比gif要流暢,兼容性也做得不錯,一些安卓產品比較酷炫的開屏就是使用的這個方法,H5頁面的話,簡單動畫一般自己程序實現就可以,還可以避免踩坑。

參考鏈接:
lottie官網
lottie-web github地址

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧洲午夜一线一品| 欧美日韩精品在线视频| 成人午夜激情免费视频| 中文字幕欧美国内| 91免费精品国偷自产在线| 成人福利网站在线观看11| 美日韩丰满少妇在线观看| 中文字幕欧美国内| 久久久久久香蕉网| 国产精品影片在线观看| 精品丝袜一区二区三区| 91tv亚洲精品香蕉国产一区7ujn| 91美女片黄在线观| 懂色aⅴ精品一区二区三区蜜月| 欧美激情欧美狂野欧美精品| 亚洲乱码av中文一区二区| 一本色道久久88亚洲综合88| www日韩中文字幕在线看| 亚洲国产精品va| 日韩在线观看成人| 91社区国产高清| 亚洲精品第一页| 亚洲自拍偷拍色片视频| 亚洲国产成人精品女人久久久| 国产精品91久久| 国产精品美女久久久久久免费| 97国产suv精品一区二区62| 久久中文字幕在线| 亚洲国产成人精品一区二区| 亚洲免费影视第一页| 狠狠色香婷婷久久亚洲精品| 亚洲国产精品一区二区久| 久久久国产精品视频| 国产精品永久在线| 91精品国产91久久久久久最新| 日韩精品福利在线| 欧美成人免费一级人片100| 亚洲国产欧美自拍| 欧美日韩免费观看中文| 久久人人爽人人爽人人片av高清| 久久精品国产欧美亚洲人人爽| 中文字幕视频在线免费欧美日韩综合在线看| 日韩视频免费在线| 亚洲精品有码在线| 亚洲午夜精品视频| 久久精品国产视频| 色偷偷av一区二区三区乱| 日韩视频在线免费观看| 欧美性视频精品| 日韩中文字幕在线看| 一区二区三区 在线观看视| 精品国产自在精品国产浪潮| 久久久久久久久久婷婷| 欧美成人精品在线观看| 欧美亚洲国产日本| 日韩欧美国产网站| 国产v综合ⅴ日韩v欧美大片| 国产精品福利网站| 九九视频直播综合网| 国产一区二区三区视频| 精品日韩视频在线观看| 日本精品一区二区三区在线| 久久久国产一区二区三区| 日本国产精品视频| 久久影视三级福利片| 91国语精品自产拍在线观看性色| 在线观看视频亚洲| 欧美小视频在线观看| 欧美日韩国产综合视频在线观看中文| 日韩毛片在线观看| 伊是香蕉大人久久| 成人欧美一区二区三区在线湿哒哒| 九九热精品在线| 麻豆精品精华液| 成人a免费视频| 成人福利网站在线观看| 亚洲欧美另类国产| 欧美一级高清免费| 亚洲高清在线观看| 亚洲一区二区免费在线| 久久精品视频在线| 国产极品精品在线观看| 精品亚洲男同gayvideo网站| 精品视频久久久久久| 欧美日本中文字幕| 久久久成人的性感天堂| 国产精品爱久久久久久久| 亚洲第一精品夜夜躁人人爽| 久久艳片www.17c.com| 国产欧美日韩精品专区| 久久亚洲国产精品成人av秋霞| 亚洲欧美成人一区二区在线电影| 亚洲精品suv精品一区二区| 日本国产精品视频| 久久久久久国产精品| 亚洲免费福利视频| 2020国产精品视频| 一区二区三区久久精品| 亚洲女人被黑人巨大进入| 国产成人精品在线观看| 最近2019年手机中文字幕| 日韩av在线直播| 久久噜噜噜精品国产亚洲综合| 精品国产一区久久久| 国产精品免费在线免费| 亚洲人午夜精品免费| 国产精品香蕉在线观看| 国产精品精品久久久久久| 日韩免费观看在线观看| 热久久99这里有精品| 亚洲精品电影在线| 国产日韩欧美在线观看| 久久久人成影片一区二区三区| 欧美中文字幕视频在线观看| 国产日韩欧美在线视频观看| 久久久久日韩精品久久久男男| 日本中文字幕不卡免费| 亚洲三级免费看| 91久久久久久久一区二区| 午夜精品福利在线观看| 成年无码av片在线| 国语对白做受69| 国产精品jvid在线观看蜜臀| 精品国产91久久久久久老师| 国产精品国产三级国产专播精品人| 国产最新精品视频| 亚洲精品美女在线| 成人乱色短篇合集| 国产视频久久久久久久| 亚洲精品久久久久中文字幕欢迎你| 日本高清+成人网在线观看| 欧美视频在线观看免费网址| 国产精品自拍偷拍视频| 亚洲美女视频网| 欧美成人第一页| 成人亚洲欧美一区二区三区| 韩国一区二区电影| 91在线观看欧美日韩| 久久精品国产久精国产一老狼| 欧美精品日韩www.p站| 欧洲日本亚洲国产区| 在线日韩第一页| 欧美国产日本在线| 精品中文视频在线| 久久香蕉频线观| 国产91精品黑色丝袜高跟鞋| 国产主播喷水一区二区| 精品久久久久久亚洲精品| 精品久久久久久中文字幕大豆网| 国产精品扒开腿做| 国产综合久久久久| 日韩在线视频线视频免费网站| 欧美成人一区在线| 久久亚洲国产精品成人av秋霞| 日韩电影网在线| 久久久国产一区二区三区| 在线播放国产一区中文字幕剧情欧美| 国产精品高潮粉嫩av| 97色在线视频观看| 日韩精品在线视频美女| 精品国产福利视频| 久久免费在线观看| 久久精品国产亚洲一区二区| 亚洲乱码国产乱码精品精天堂|