当前位置:首页 > VUE

vue实现过度效果

2026-01-17 15:22:39VUE

Vue 过渡效果实现方法

Vue 提供了内置的 <transition><transition-group> 组件,用于在元素或组件进入/离开 DOM 时应用过渡效果。

基本过渡实现

使用 <transition> 包装需要过渡的元素,并定义 CSS 过渡类名:

<transition name="fade">
  <p v-if="show">This will fade in/out</p>
</transition>

对应的 CSS 样式:

.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}

自定义过渡类名

可以通过以下属性自定义过渡类名:

<transition
  enter-active-class="animated fadeIn"
  leave-active-class="animated fadeOut"
>
  <p v-if="show">Custom transition classes</p>
</transition>

JavaScript 钩子

可以使用 JavaScript 钩子实现更复杂的过渡效果:

<transition
  @before-enter="beforeEnter"
  @enter="enter"
  @after-enter="afterEnter"
  @enter-cancelled="enterCancelled"
  @before-leave="beforeLeave"
  @leave="leave"
  @after-leave="afterLeave"
  @leave-cancelled="leaveCancelled"
>
  <p v-if="show">JavaScript hooks</p>
</transition>

对应的 JavaScript 方法:

methods: {
  beforeEnter(el) {
    el.style.opacity = 0
  },
  enter(el, done) {
    Velocity(el, { opacity: 1 }, { duration: 500, complete: done })
  },
  leave(el, done) {
    Velocity(el, { opacity: 0 }, { duration: 500, complete: done })
  }
}

列表过渡

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

<transition-group name="list" tag="ul">
  <li v-for="item in items" :key="item.id">
    {{ item.text }}
  </li>
</transition-group>

对应的 CSS 样式:

.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>Initial render transition</p>
</transition>

过渡模式

设置 mode 属性控制进入/离开的时序:

<transition mode="out-in">
  <button v-if="isEditing" key="save">Save</button>
  <button v-else key="edit">Edit</button>
</transition>

动态过渡

通过绑定属性实现动态过渡效果:

<transition :name="transitionName">
  <p v-if="show">Dynamic transition</p>
</transition>

过渡效果优化建议

  • 使用 CSS 硬件加速属性(如 transformopacity)提升性能
  • 对于复杂动画,考虑使用第三方动画库如 Velocity.js 或 GSAP
  • 为列表项设置合适的 key 属性确保过渡效果正确应用
  • 避免同时使用 CSS 和 JavaScript 钩子,以免造成冲突

vue实现过度效果

标签: 效果vue
分享给朋友:

相关文章

vue怎么实现文件树

vue怎么实现文件树

Vue 实现文件树的方法 使用递归组件 递归组件是处理嵌套数据结构的理想方式。文件树通常包含文件夹和文件的嵌套结构,适合用递归组件实现。 <template> <ul>…

vue实现视窗

vue实现视窗

Vue 实现视窗功能 在 Vue 中实现视窗功能通常涉及监听浏览器窗口大小变化、响应式布局或创建自定义弹窗组件。以下是几种常见实现方式: 监听浏览器窗口大小变化 使用 Vue 的 mounted 和…

vue实现app

vue实现app

Vue 实现 App 的常见方法 使用 Vue 开发移动端 App 主要有两种主流方案:混合开发(Hybrid)和原生渲染。以下是具体实现方式和工具链: 混合开发方案(WebView 嵌入) 通过…

vue 实现级联

vue 实现级联

Vue 实现级联选择器 级联选择器(Cascader)常用于省市区选择、分类选择等场景。Vue 中可以通过 Element UI、Ant Design Vue 等 UI 库实现,也可以手动封装。…

vue实现jqueryui

vue实现jqueryui

Vue 实现 jQuery UI 功能 在 Vue 项目中实现类似 jQuery UI 的功能,可以通过原生 Vue 组件或第三方库来实现。以下是几种常见 jQuery UI 功能的 Vue 替代方案…

vue实现RTMP

vue实现RTMP

Vue 中实现 RTMP 流播放 RTMP(Real-Time Messaging Protocol)是一种用于实时音视频流传输的协议。在 Vue 中实现 RTMP 播放通常需要借助第三方库或播放器。…