uniapp语言写一个 折叠面板组件 要求折叠展示的时候 高度要有动画效果, 要求title和content都可以使用slot自定义
时间: 2024-03-19 18:45:44 浏览: 60
开发小程序折叠面板
好的,以下是一个可自定义title和content的折叠面板组件示例代码,使用了uni-app框架和Vue.js。在展开和收缩时,使用了Vue.js的过渡动画效果实现高度的动画变化。您可以根据自己的需要进行修改和定制:
```
<template>
<div class="panel">
<div class="panel-header" @click="toggle">
<slot name="title"></slot>
<i :class="iconClass"></i>
</div>
<transition name="panel-transition">
<div v-if="isOpen" class="panel-content">
<slot name="content"></slot>
</div>
</transition>
</div>
</template>
<script>
export default {
name: 'Panel',
data() {
return {
isOpen: false
}
},
computed: {
iconClass() {
return this.isOpen ? 'iconfont icon-arrow-up' : 'iconfont icon-arrow-down'
}
},
methods: {
toggle() {
this.isOpen = !this.isOpen
}
}
}
</script>
<style lang="scss" scoped>
.panel {
.panel-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px;
background-color: #f5f5f5;
cursor: pointer;
.iconfont {
font-size: 16px;
transition: transform 0.3s ease-in-out;
}
}
.panel-content {
padding: 10px;
background-color: #fff;
}
&.panel-transition-enter-active,
&.panel-transition-leave-active {
transition: height 0.3s ease-in-out;
}
&.panel-transition-enter,
&.panel-transition-leave-to {
height: 0;
overflow: hidden;
}
}
</style>
```
在上面的代码中,我们使用了Vue.js的slot组件来实现title和content的自定义。同时,我们使用了Vue.js的transition组件来实现动画效果。在折叠面板展开和收缩时,我们使用了height属性来控制高度的变化,并使用了transition属性和panel-transition类名来定义动画效果。您可以根据自己的需求对CSS样式进行修改。
希望这个示例代码可以帮助到您!
阅读全文