欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

问题:在vue项目中table列表要怎么展示svga格式动画图标效果?

程序员文章站 2022-05-03 09:47:41
...

遇到的问题:

最近在做项目的时候,需要在项目中table列表要怎么展示svga格式动画图标效果。第一次接触那么要怎么处理呢?

解决思路:

一、先了解一下svga是什么?

SVGA 是一种跨平台的开源动画格式,同时兼容 iOS / Android / Web。SVGA 除了使用简单,性能卓越,同时让动画开发分工明确,各自专注各自的领域,大大减少动画交互的沟通成本,提升开发效率。动画设计师专注动画设计,通过工具输出 svga 动画文件,提供给开发工程师在集成 svga player 之后直接使用。动画开发从未如此简单!

SVGA 除了使用简单,性能卓越,同时让动画开发分工明确,各自专注各自的领域,大大减少动画交互的沟通成本,提升开发效率。

动画设计师专注动画设计,通过工具输出 svga 动画文件,提供给开发工程师在集成 SVGAPlayer 之后直接使用。

SVGA 是一种同时兼容 iOS / Android / Flutter / Web 多个平台的动画格式。Svga.io官网是如此介绍的。官网链接https://svga.io

二、Vue项目如何使用

1.安装

npm install svgaplayerweb —save

或者使用的yarn进行包管理,所以命令是:

yarn add svgaplayerweb

2.引入

import SVGA from 'svgaplayerweb'

3.实例化对象

html部分使用了Element UI的table表格

<el-table-column  label="特效展示" >
    <template slot-scope="scope">
        <div :id='"Img"+scope.row.id' style="width: 100px;height: 100px;"></div>
    </template>
</el-table-column>

Script部分

getData(data){
    this.dataGroup = data;  //获取数据
    if(this.dataGroup !=""){
        this.getSvga(this.dataGroup);
    }
},
//获取Svga图标
getSvga(data){
    var url = "";
    //一定要使用$nextTick,等到页面加载完成再处理数据,否则会找不到页面元素,报Undefind的错误
    this.$nextTick(()=>{
        data.map((v,i)=>{
            var player = new SVGA.Player('#Img'+v.id); // 多个svga文件同时加载
            var parser = new SVGA.Parser('#Img'+v.id); // 多个svga文件同时加载
            //若是单个文件,则直接获取其Id即可
            url = "/api/file/fileId="+v.fileId; //这里动态加载dataGroup返回的数据
            parser.load(url,function(item){
                player.setVideoItem(item);
                player.startAnimation();
            })
        })
    })
}

 

相关标签: Vue