vue 项目中使用svga格式动画图标效果 incorrect header check解决办法

1. 什么是SVGA

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

2. 效果图

在这里插入图片描述

3. 安装依赖
npm install svgaplayerweb --save
4. svga.vue
<template>
    <div class="container">
        <div id="demoCanvas" class="svga" ref="canvas"></div>
    </div>
</template>
<script>
import SVGA from "svgaplayerweb";

export default {
    data() {
        return {};
    },
    created() {},
    mounted() {
        var player = new SVGA.Player("#demoCanvas");
        var parser = new SVGA.Parser("#demoCanvas");
        parser.load("/svga/01.svga", function(videoItem) {
            player.setVideoItem(videoItem);
            player.startAnimation();
        });
    }
};
</script>
<style>
.svga {
    width: 200px;
    height: 200px;
    margin: 100px auto;
}
</style>
5. incorrect header check解决办法

之前有同学问我这个,确实开发中也遇到了,这里补充下怎么解决的。
在这里插入图片描述
因为是之前这里写的是直接引入本地文件,默认是访问不到会出现 incorrect header check 报错问题
在这里插入图片描述
之前我做的时候也遇到了这个问题,是跟后端沟通,把文件放在服务器上,然后本地去做访问。
在这里插入图片描述

那我们可以通过后端给的地址,通过服务器地址访问试下。
在这里插入图片描述
好家伙,又出现了跨域,因为本地项目地址和服务器的域名地址不一致所以会出现跨越。
在这里插入图片描述
那我们可以在通过 vue.config.js 里面做代理处理(因为我是把文件直接放在 svga 文件夹下的,所以可以通过 /svga 去匹配到这个地址)
在这里插入图片描述
注意的是,这里改了,页面引入就要改成 /svga/01.svga 才能匹配到代码地址

parser.load("/svga/01.svga", function(videoItem) {
  	player.setVideoItem(videoItem);
   player.startAnimation();
});

不用担心发布后能不能访问,发布打包后项目会处于同一域名,不会出现跨越问题。

Vue项目使用requestAnimationFrame实现动画效果的步骤如下: 1. 在Vue组件,创建一个方法来处理动画效果。例如,我们可以创建一个名为`animate`的方法。 2. 在`animate`方法使用`requestAnimationFrame`函数来循环执行动画效果。在每一帧,你可以更新组件的数据或者操作DOM元素来实现动画效果。 3. 在`animate`方法使用`this.$refs`来获取需要操作的DOM元素。例如,如果你想旋转一个3D模型,你可以使用`this.$refs`来获取模型的引用。 4. 在`animate`方法使用`this.$nextTick`来确保DOM元素已经更新完毕。这样可以避免在更新DOM元素之前执行动画效果。 5. 在`animate`方法使用`this.$refs`来更新DOM元素的样式或属性。例如,你可以使用`this.$refs.element.style.transform`来旋转一个元素。 6. 在`animate`方法使用`requestAnimationFrame`函数来递归调用`animate`方法,以实现动画的连续播放。 下面是一个示例代码,演示了如何在Vue项目使用requestAnimationFrame实现动画效果: ```javascript <template> <div ref="element" class="box"></div> </template> <script> export default { mounted() { this.animate(); }, methods: { animate() { // 更新动画效果 // this.$refs.element.style.transform = 'rotate(45deg)'; // 更新数据 // this.data = 'new data'; // 执行其他操作 // 确保DOM元素已经更新完毕 this.$nextTick(() => { // 更新DOM元素的样式或属性 // this.$refs.element.style.transform = 'rotate(90deg)'; // 执行其他操作 // 递归调用animate方法,实现动画的连续播放 requestAnimationFrame(this.animate); }); } } } </script> <style> .box { width: 100px; height: 100px; background-color: red; } </style> ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q_Q 忙里偷闲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值