android基础知识实例

前端动效实现--lottie - web

2019-12-26  本文已影响0人  LazyCat404

更新:2021-12-11

本文简单介绍了一下动画的引入,有关动画的深入交互近期会更新(^U^)ノ~YO

CSS3 帧动画

CSS 发展到了今天,它的强大几乎不是我们可以想像到的。合理的使用Animation可以实现很多神奇效果。配合设计师的导出图,前端使用序列帧即可实现动画效果。

序列帧

帧动画的缺点和局限性比较明显,导出图文件大,且在不同屏幕分辨率下可能会失真。

JS

通过JS方法控制DOM,从而实现动画效果

GIF

关于这个不想多废话了!!!

canvas/svg

首先说明这篇文章不是在叙述canvas/svg的用法,所以并不过多赘述。

js + canvas/svg 应该是目前前端实现复杂动效的最优方案了,但要注意canvassvg二者之间区别,根据不同使用场景选取最优的实现方案。

Lottie 重点来了o( ̄▽ ̄)ブ

Lottie一个适用于WebAndroidiOSReact NativeWindows 的移动库,它可以使用Bodymovin解析以json格式导出的Adobe After Effects动画,并在移动设备上进行本地渲染!

安装

关于lottie的用法,在网上可以查到很多,今天我们要说的是vue + lottie-web

npm install lottie-web

ps:如果是vue-cli3.x 或 4.x 可以直接通过 vue ui 通过搜索安装
(以下是个人认为比较优雅的使用方案)

<template>
    <div class="box">
        <div id="lottie_box"></div>
        <button @click="startFun">播放</button>   
        <button @click="suspendFun">暂停</button>   
    </div>
</template>

<script>
import lottie from 'lottie-web';

export default {
    name:'Lottie',
    data(){
        return{
            lottie:{},  
        }
    },
    methods:{
        suspendFun:function(){
            this.lottie.pause();
        },
        startFun:function(){
            this.lottie.play()
        }
    },
    mounted(){
        this.lottie = lottie.loadAnimation({
            container: document.getElementById('lottie_box'),
            renderer: 'svg',
            loop: true,
            path: 'https://labs.nearpod.com/bodymovin/demo/markus/halloween/markus.json'
        })
    }
}
</script>

<style>
    .box{
        width: 100%;
        height: 100%;
    }
    #bm{
        width: 100%;
        height:100%;
        margin: 0px auto;
    }
</style>

基本用法

const animation = lottie.loadAnimation({
    container: document.getElementById('box'),
    renderer: 'svg',        // 渲染方式:svg:支持交互、不会失帧、canvas、html:支持3D,支持交互
    loop: true,             // 循环播放,默认:true
    autoplay: true,         // 自动播放 ,默认true
    path: ''                // json 路径
})

常用方法

常用钩子

上一篇下一篇

猜你喜欢

热点阅读