Vue3的transition标签以及animate.css使用详解




<template>
  <div id="app">
    <button @click="show = !show">Toggle</button>
    <transition name="fade" @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter">
      <div v-if="show" class="box"></div>
    </transition>
  </div>
</template>
 
<script>
export default {
  data() {
    return {
      show: true
    }
  },
  methods: {
    beforeEnter(el) {
      el.style.opacity = 0;
      el.style.transition = 'opacity 0.5s';
    },
    enter(el, done) {
      setTimeout(() => {
        el.style.opacity = 1;
      }, 100);
      setTimeout(done, 500);
    },
    afterEnter(el) {
      this.animateCSS(el, 'animate__animated', 'animate__bounceIn');
    },
    animateCSS(element, animationName, animationType) {
      const node = document.createElement('div');
      node.classList.add(animationName);
      node.classList.add(animationType);
      node.classList.add('hide');
      element.appendChild(node);
 
      function handleAnimationEnd(event) {
        event.stopPropagation();
        node.classList.remove(animationType);
        node.classList.remove('hide');
        node.removeEventListener('animationend', handleAnimationEnd);
      }
      node.addEventListener('animationend', handleAnimationEnd);
    }
  }
}
</script>
 
<style>
.box {
  width: 100px;
  height: 100px;
  background-color: red;
}
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active for <2.1.8 */ {
  opacity: 0;
}
</style>

这个示例代码展示了如何在Vue 3中使用transition标签以及如何使用自定义的JavaScript动画函数来替代CSS动画库(如animate.css)的某些动画效果。这样做的好处是可以更灵活地控制动画的行为,并且不需要依赖外部的CSS文件。

VUE , css
最后修改于:2024年08月18日 23:04

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日