Zoom缩放动画在Vue中怎么实现才不会闪动?
我用Vue写了个图片预览组件,想加个zoom-in的进入动画,但每次打开都先闪一下原图再放大,体验很怪。试过用transition包裹,也加了mode=”in-out”,还是不行。
这是我的代码:
<template>
<transition name="zoom">
<img v-if="show" :src="imgUrl" class="preview-img" />
</transition>
</template>
<style scoped>
.zoom-enter-active { transition: transform 0.3s ease; }
.zoom-enter-from { transform: scale(0); }
.zoom-enter-to { transform: scale(1); }
</style>
是不是哪里写错了?为啥还是会闪一下?
关键点是要确保图片加载完成后再开始动画,不然浏览器会先显示默认尺寸的图片。改成这样:
主要改动有三处:
1. 加了
appear属性处理初始渲染2. 用
loaded状态控制时机3. 图片加载完成时触发
@load事件CSS部分你原来写的没问题。这种问题在前端还挺常见的,本质是资源加载和DOM渲染时序问题,后端就没这种烦恼(笑)