vue实现slidedown
Vue 实现 SlideDown 动画效果
在 Vue 中实现 SlideDown 效果可以通过多种方式完成,以下是几种常见方法:
使用 CSS Transition 和动态高度
通过动态绑定元素的 max-height 并结合 CSS 过渡效果实现:
<template>
<div>
<button @click="toggle">Toggle Slide</button>
<div class="slide-container" :style="{ maxHeight: isOpen ? '500px' : '0' }">
<div class="content">这里是需要滑动显示的内容</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
isOpen: false
}
},
methods: {
toggle() {
this.isOpen = !this.isOpen
}
}
}
</script>
<style>
.slide-container {
overflow: hidden;
transition: max-height 0.3s ease-out;
}
.content {
padding: 10px;
}
</style>
使用 Vue Transition 组件
Vue 内置的 <transition> 组件可以更方便地管理动画:
<template>
<div>
<button @click="show = !show">Toggle Slide</button>
<transition name="slide">
<div v-if="show" class="content">滑动内容区域</div>
</transition>
</div>
</template>
<script>
export default {
data() {
return {
show: false
}
}
}
</script>
<style>
.slide-enter-active, .slide-leave-active {
transition: max-height 0.3s ease;
overflow: hidden;
}
.slide-enter-from, .slide-leave-to {
max-height: 0;
}
.slide-enter-to, .slide-leave-from {
max-height: 500px;
}
.content {
padding: 10px;
}
</style>
使用第三方动画库
对于更复杂的动画需求,可以引入第三方动画库如 animate.css:
<template>
<div>
<button @click="show = !show">Toggle Slide</button>
<transition
enter-active-class="animate__animated animate__slideInDown"
leave-active-class="animate__animated animate__slideOutUp"
>
<div v-if="show" class="content">使用animate.css的滑动效果</div>
</transition>
</div>
</template>
<script>
import 'animate.css'
export default {
data() {
return {
show: false
}
}
}
</script>
<style>
.content {
padding: 10px;
}
</style>
使用 JavaScript 计算高度
对于需要精确控制高度的场景,可以通过 JavaScript 计算内容高度:
<template>
<div>
<button @click="toggleSlide">Toggle Slide</button>
<div ref="slideContent" class="slide-container" :style="{ height: currentHeight }">
<div class="content">动态计算高度的内容</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
isOpen: false,
contentHeight: 0,
currentHeight: '0px'
}
},
mounted() {
this.contentHeight = this.$refs.slideContent.scrollHeight
},
methods: {
toggleSlide() {
this.isOpen = !this.isOpen
this.currentHeight = this.isOpen ? `${this.contentHeight}px` : '0px'
}
}
}
</script>
<style>
.slide-container {
overflow: hidden;
transition: height 0.3s ease;
}
.content {
padding: 10px;
}
</style>
这些方法可以根据具体需求选择使用,CSS Transition 方法适合简单场景,Vue Transition 组件提供了更丰富的动画控制,而第三方库则能实现更专业的动画效果。







