前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >(三)纯 CSS 进场/离场动画的问题

(三)纯 CSS 进场/离场动画的问题

作者头像
老怪兽
发布2023-02-22 18:54:13
发布2023-02-22 18:54:13
1K00
代码可运行
举报
运行总次数:0
代码可运行

使用纯 css 实现进场/离场动画的问题

说明

  • 使用 css 虽然可以实现大部分的动画,但是很多复杂的动画还是需要使用 javasctipt 来实现
  • 对于使用 v-if 来控制的元素,添加动画会更加棘手
代码语言:javascript
代码运行次数:0
复制
<!-- 通过v-if 来控制 动画过度的问题 -->
 <template>
  <main>
    <div class="container">
      <button @click="show = !show">{{ show ? "隐藏" : "显示" }}</button>
      <div v-if="show" :class="animationClasses"></div>
    </div>
  </main>
</template>

<script setup>
import { ref, watchEffect } from "vue";
// 控制元素的显示与隐藏
const show = ref(false);

// 动态设置class
const animationClasses = ref(["box"]);

watchEffect(() => {
  if (show.value) {
    // 显示添加这个动画
    animationClasses.value = ["box", "box-enter"];
  } else {
    // 不显示添加这个动画
    animationClasses.value = ["box", "box-leave"];
  }
});
</script>

<style>
  .box-enter {
  animation: fade 0.5s;
}

.box-leave {
  animation: fade 0.5s reverse;
}

@keyframes fade {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
</style>
  • 发现 显示的时候,可以淡出有动画,但是隐藏的时候就没有动画了,这是因为 v-if 是直接就将 dom 元素移除了执行不了动画了,如果要执行离场的画的话,就需要通过 js 来控制当 dom 元素动画执行完毕了在移除
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年11月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用纯 css 实现进场/离场动画的问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档