当前位置:首页 > VUE

vue过渡怎么实现

2026-02-19 16:39:25VUE

Vue过渡的实现方法

Vue提供了<transition><transition-group>组件来实现元素的过渡效果。这些组件可以与CSS过渡/动画或JavaScript钩子结合使用。

使用CSS过渡

通过Vue的<transition>组件包裹需要过渡的元素,并定义相应的CSS类名来实现过渡效果。

<transition name="fade">
  <p v-if="show">这是一段会淡入淡出的文字</p>
</transition>
.fade-enter-active, .fade-leave-active {
  transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}

使用CSS动画

与CSS过渡类似,但使用@keyframes定义动画。

vue过渡怎么实现

<transition name="bounce">
  <p v-if="show">这是一段会弹跳的文字</p>
</transition>
.bounce-enter-active {
  animation: bounce-in .5s;
}
.bounce-leave-active {
  animation: bounce-in .5s reverse;
}
@keyframes bounce-in {
  0% {
    transform: scale(0);
  }
  50% {
    transform: scale(1.5);
  }
  100% {
    transform: scale(1);
  }
}

使用JavaScript钩子

通过<transition>组件的JavaScript钩子函数实现更复杂的过渡效果。

<transition
  @before-enter="beforeEnter"
  @enter="enter"
  @leave="leave"
  :css="false"
>
  <p v-if="show">使用JavaScript实现的过渡</p>
</transition>
methods: {
  beforeEnter(el) {
    el.style.opacity = 0;
    el.style.transformOrigin = 'left';
  },
  enter(el, done) {
    Velocity(el, { opacity: 1, fontSize: '1.4em' }, { duration: 300 });
    Velocity(el, { fontSize: '1em' }, { complete: done });
  },
  leave(el, done) {
    Velocity(el, { opacity: 0 }, { duration: 600 });
    Velocity(el, { translateX: '15px', rotateZ: '50deg' }, { complete: done });
  }
}

列表过渡

使用<transition-group>组件实现列表项的过渡效果。

vue过渡怎么实现

<transition-group name="list" tag="ul">
  <li v-for="item in items" :key="item.id">
    {{ item.text }}
  </li>
</transition-group>
.list-enter-active, .list-leave-active {
  transition: all 1s;
}
.list-enter, .list-leave-to {
  opacity: 0;
  transform: translateY(30px);
}

初始渲染过渡

通过appear属性使元素在初始渲染时也有过渡效果。

<transition
  appear
  appear-class="custom-appear-class"
  appear-to-class="custom-appear-to-class"
  appear-active-class="custom-appear-active-class"
>
  <p>初始渲染时也会有过渡效果</p>
</transition>

过渡模式

使用mode属性控制进入和离开过渡的顺序。

<transition name="fade" mode="out-in">
  <button v-if="isEditing" key="save">保存</button>
  <button v-else key="edit">编辑</button>
</transition>

以上方法涵盖了Vue过渡的主要实现方式,可以根据具体需求选择合适的方法或组合使用。

标签: vue
分享给朋友:

相关文章

vue实现单点

vue实现单点

Vue 实现单点登录(SSO)方案 单点登录(SSO)允许用户在多个相关但独立的系统中使用同一组凭证登录。以下是基于 Vue 的实现方案: 基于 OAuth2/OpenID Connect 的实现…

vue实现语音

vue实现语音

Vue 实现语音功能的方法 使用 Web Speech API Vue 可以结合 Web Speech API 实现语音识别和合成功能。Web Speech API 包含 SpeechRecognit…

vue router 实现

vue router 实现

Vue Router 的实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的核心实现方式。 安装 Vue Router 通过…

vue compile 实现

vue compile 实现

Vue 编译实现原理 Vue 的编译过程将模板字符串转换为渲染函数,主要分为解析、优化和代码生成三个阶段。 解析阶段(Parse) 将模板字符串转换为抽象语法树(AST)。Vue 使用正则表达式和…

vue 实现拖动

vue 实现拖动

Vue 实现拖动的几种方法 在Vue中实现拖动功能可以通过多种方式,包括原生HTML5的拖放API、第三方库如vuedraggable等。以下是几种常见的实现方法: 使用HTML5拖放API HT…

vue实现popup

vue实现popup

Vue 实现 Popup 弹窗 使用 Vue 原生组件 创建一个基本的 Vue 组件作为弹窗,通过 v-if 或 v-show 控制显示隐藏。 <template> <div&…