最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Html5頁(yè)面內(nèi)使用JSON動(dòng)畫(huà)的實(shí)現(xiàn)

  發(fā)布時(shí)間:2019-01-29 16:00:24   作者:羊羊羊   我要評(píng)論
這篇文章主要介紹了Html5頁(yè)面內(nèi)使用JSON動(dòng)畫(huà)的實(shí)現(xiàn)的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

問(wèn)題背景

有一天我們的UI設(shè)計(jì)師找到我說(shuō),要把頁(yè)面中我自己用程序?qū)懙膭?dòng)畫(huà),換成他們給的json動(dòng)畫(huà),原因是有的動(dòng)畫(huà)很復(fù)雜,自己寫(xiě)起來(lái)達(dá)不到他們的預(yù)期效果(寫(xiě)到這里我突然想到一個(gè)問(wèn)題,這么復(fù)雜的動(dòng)畫(huà)為什么不使用gif。。。。坐我對(duì)面的安卓開(kāi)發(fā)小哥答因?yàn)間if播放的時(shí)候可能質(zhì)量不高不流暢,好吧我信了)

我:????客戶(hù)端可以加json動(dòng)畫(huà),H5頁(yè)面沒(méi)聽(tīng)說(shuō)過(guò)可以讀json動(dòng)畫(huà)哎

設(shè)計(jì)師一臉肯定,說(shuō)可以的,有web版本。

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

那問(wèn)題來(lái)了,怎么在H5頁(yè)面里面使用json動(dòng)畫(huà)呢

如何在H5頁(yè)面內(nèi)使用json動(dòng)畫(huà)

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

說(shuō)了這么多,那怎么在H5頁(yè)面里面使用呢?

很簡(jiǎn)單了,設(shè)計(jì)師生成的文件夾發(fā)給你(設(shè)計(jì)師那邊只用在AE中加個(gè)lottie插件,導(dǎo)出就行了),打開(kāi)之后應(yīng)該是這樣子的,打開(kāi)demo.html就知道是怎么用的了(所以我還在這里寫(xiě)什么技術(shù)文章

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

1.demo.html里面有很多內(nèi)聯(lián)的東西,使用時(shí)堆積在頁(yè)面內(nèi)不好看

仔細(xì)看一下,其實(shí)demo.html把js和json都放進(jìn)去了,這時(shí)候我們可以把js和json單獨(dú)分出來(lái),js的話(huà)可以使用cdn上提供的地址

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

動(dòng)畫(huà)需要的json數(shù)據(jù)放在data.json文件里面,但是給出的json文件里面的數(shù)據(jù)格式是這樣的(太長(zhǎng)了 截不完

那如果你要在單獨(dú)的一個(gè)html里面使用script的方式引入json文件的話(huà),會(huì)報(bào)錯(cuò),所以需要修改json文件,在前面加上變量,賦值。如下圖:

這樣你可以通過(guò)像引入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>

當(dāng)然,你如果使用的是js模塊化編程的話(huà),可以不用更改data.json,直接import進(jìn)來(lái)就行了,如下:

import animationData from './data.json'

2.使動(dòng)畫(huà)適配移動(dòng)端

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

換成iPhone X的屏幕下,相反,表現(xiàn)出來(lái)是寬度100% 高度適配居中,上下漏出黑色背景色,見(jiàn)下圖藍(lán)色框起來(lái)的部分(究其原因是因?yàn)閕phonex屏幕較長(zhǎng)

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

我這里解決設(shè)計(jì)師的需求主要增加下面的代碼:

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;
}

最終效果:

總結(jié)

以上圖片截圖都是靜態(tài)的,實(shí)際是有一個(gè)動(dòng)態(tài)效果的,我不知道怎么添加動(dòng)圖就沒(méi)弄了,感興趣的可以試一下。

適用范圍:我感覺(jué)一般全屏的或者局部很復(fù)雜的動(dòng)畫(huà)可以使用這個(gè)方法一試,比gif要流暢,兼容性也做得不錯(cuò),一些安卓產(chǎn)品比較酷炫的開(kāi)屏就是使用的這個(gè)方法,H5頁(yè)面的話(huà),簡(jiǎn)單動(dòng)畫(huà)一般自己程序?qū)崿F(xiàn)就可以,還可以避免踩坑。

參考鏈接:
lottie官網(wǎng)
lottie-web github地址

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • HTML5實(shí)現(xiàn)的移動(dòng)端購(gòu)物車(chē)自動(dòng)結(jié)算功能示例代碼

    本文介紹HTML5實(shí)現(xiàn)移動(dòng)端購(gòu)物車(chē)自動(dòng)結(jié)算,通過(guò)WebStorage、事件監(jiān)聽(tīng)、DOM操作等技術(shù),確保實(shí)時(shí)更新與數(shù)據(jù)同步,優(yōu)化性能及無(wú)障礙性,提升用戶(hù)體驗(yàn),感興趣的朋友一起看看吧
    2025-06-18
  • HTML5 中的<button>標(biāo)簽用法和特征

    在HTML5中,<button>標(biāo)簽用于定義一個(gè)可點(diǎn)擊的按鈕,它是創(chuàng)建交互式網(wǎng)頁(yè)的重要元素之一,本文將深入解析HTML5中的<button>標(biāo)簽,詳細(xì)介紹其屬性、樣式以及實(shí)際
    2025-06-18
  • 基于 HTML5 Canvas 實(shí)現(xiàn)圖片旋轉(zhuǎn)與下載功能(完整代碼展示)

    本文將深入剖析一段基于 HTML5 Canvas 的代碼,該代碼實(shí)現(xiàn)了圖片的旋轉(zhuǎn)(90 度和 180 度)以及旋轉(zhuǎn)后圖片的下載功能,通過(guò)對(duì)代碼的解讀,我們可以學(xué)習(xí)到如何利用 Canvas API
    2025-06-18
  • HTML5 getUserMedia API網(wǎng)頁(yè)錄音實(shí)現(xiàn)指南示例小結(jié)

    本教程將指導(dǎo)你如何利用這一API,結(jié)合Web Audio API,實(shí)現(xiàn)網(wǎng)頁(yè)錄音功能,從獲取音頻流到處理和保存錄音,整個(gè)過(guò)程將逐步詳解,此外,還討論了getUserMedia API的使用限制和最
    2025-06-16
  • HTML5 搜索框Search Box詳解

    HTML5的搜索框是一個(gè)強(qiáng)大的工具,能夠有效提升用戶(hù)體驗(yàn),通過(guò)結(jié)合自動(dòng)補(bǔ)全功能和適當(dāng)?shù)臉邮?,可以?chuàng)建出既美觀(guān)又實(shí)用的搜索界面,這篇文章給大家介紹HTML5 搜索框Search Box
    2025-06-13
  • 全面解析HTML5中Checkbox標(biāo)簽

    Checkbox是HTML5中非常重要的表單元素之一,通過(guò)合理使用其屬性和樣式自定義方法,可以為用戶(hù)提供豐富多樣的交互體驗(yàn),這篇文章給大家介紹HTML5中Checkbox標(biāo)簽的深入全面解
    2025-06-13
  • HTML5無(wú)插件拖拽圖片上傳功能實(shí)現(xiàn)過(guò)程

    本實(shí)例展示了一種基于HTML5技術(shù)的圖片上傳功能,無(wú)需外部插件即可通過(guò)拖放圖片實(shí)現(xiàn)上傳,涉及到HTML5的拖放API和File API,以及使用CSS來(lái)增強(qiáng)用戶(hù)界面的交互性和視覺(jué)反饋,
    2025-05-16
  • HTML5 定位大全之相對(duì)定位、絕對(duì)定位和固定定位

    在HTML5和CSS中,定位(positioning)是控制元素在頁(yè)面上位置的重要機(jī)制,主要有四種定位方式:靜態(tài)定位(static)、相對(duì)定位(relative)、絕對(duì)定位(absolute)和固定定位(fixed),
    2025-05-13
  • HTML5中的Microdata與歷史記錄管理詳解

    Microdata作為HTML5新增的一個(gè)特性,它允許開(kāi)發(fā)者在HTML文檔中添加更多的語(yǔ)義信息,以便于搜索引擎和瀏覽器更好地理解頁(yè)面內(nèi)容,本文將探討HTML5中Microdata的使用方法以及
    2025-04-21
  • HTML5表格語(yǔ)法格式詳解

    在HTML語(yǔ)法中,表格主要通過(guò)< table >、< tr >和< td >3個(gè)標(biāo)簽構(gòu)成,本文通過(guò)實(shí)例代碼講解HTML5表格語(yǔ)法格式,感興趣的朋友一起看看吧
    2025-04-21

最新評(píng)論

桂林市| 商南县| 万全县| 汨罗市| 珲春市| 河曲县| 盘山县| 监利县| 胶州市| 长兴县| 五原县| 无极县| 丰县| 商都县| 大同市| 正定县| 元阳县| 湖南省| 清河县| 南澳县| 永吉县| 华坪县| 萨迦县| 长岭县| 循化| 崇仁县| 咸阳市| 北宁市| 中超| 茌平县| 灵石县| 盐城市| 哈巴河县| 元阳县| 行唐县| 武义县| 慈利县| 延长县| 延吉市| 阳东县| 信阳市|