vue 实现jqslidedown
Vue 实现 jQuery slideDown 效果
在 Vue 中实现类似 jQuery 的 slideDown 动画效果,可以通过 Vue 的过渡系统或 CSS 动画来实现。以下是几种常见的方法:
使用 Vue Transition 组件
Vue 提供了 <transition> 组件,可以方便地实现元素的显示和隐藏动画。
<template>
<div>
<button @click="toggle">Toggle</button>
<transition name="slide">
<div v-if="isVisible" class="content">
This content will slide down and up.
</div>
</transition>
</div>
</template>
<script>
export default {
data() {
return {
isVisible: false
};
},
methods: {
toggle() {
this.isVisible = !this.isVisible;
}
}
};
</script>
<style>
.slide-enter-active, .slide-leave-active {
transition: max-height 0.5s ease;
overflow: hidden;
}
.slide-enter, .slide-leave-to {
max-height: 0;
}
.slide-enter-to, .slide-leave {
max-height: 1000px; /* 设置一个足够大的值 */
}
.content {
background: #f0f0f0;
padding: 10px;
margin-top: 10px;
}
</style>
使用 CSS Animation
通过 CSS 的 @keyframes 也可以实现类似的滑动效果。
<template>
<div>
<button @click="toggle">Toggle</button>
<div v-if="isVisible" class="slide-down">
This content will slide down.
</div>
</div>
</template>
<script>
export default {
data() {
return {
isVisible: false
};
},
methods: {
toggle() {
this.isVisible = !this.isVisible;
}
}
};
</script>
<style>
.slide-down {
animation: slideDown 0.5s ease forwards;
overflow: hidden;
}
@keyframes slideDown {
from {
max-height: 0;
opacity: 0;
}
to {
max-height: 1000px;
opacity: 1;
}
}
</style>
使用第三方库
如果需要更复杂的动画效果,可以考虑使用第三方动画库,如 animate.css 或 vue-animate。
-
安装
animate.css:npm install animate.css -
在 Vue 中使用:

<template> <div> <button @click="toggle">Toggle</button> <transition enter-active-class="animate__animated animate__slideInDown" leave-active-class="animate__animated animate__slideOutUp" > <div v-if="isVisible" class="content"> This content will slide down with animate.css. </div> </transition> </div> </template> <script> import 'animate.css'; export default { data() { return { isVisible: false }; }, methods: { toggle() { this.isVisible = !this.isVisible; } } }; </script> <style> .content { background: #f0f0f0; padding: 10px; margin-top: 10px; } </style>
注意事项
- 使用
max-height时,需要设置一个足够大的值以确保内容完全展开。 - 动画的平滑度可以通过调整
transition或animation的时间函数(如ease、ease-in-out)来优化。 - 如果需要更精确的控制,可以考虑使用 JavaScript 钩子(如
@enter、@leave)结合requestAnimationFrame实现自定义动画逻辑。






