# collapse-view 伸缩视图
视图容器,定义收缩时的高度,可以滑动展开,常用于承载内容较多又不想占用全屏的场景。
# 使用指南
# 设置收缩状态最大高度
<tms-collapse-view collapse-height="790rpx">
<view class="content">
</view>
</tms-collapse-view>
# 设置最大展开高度
<tms-collapse-view collapse-height="790rpx" maxHeight="80vh">
<view class="content">
</view>
</tms-collapse-view>
# popup模式,从底部弹出
Component({
data: {
show: false,
},
methods: {
showOrHide() {
this.setData({
show: !this.data.show,
});
}
}
})
<button bindtap="showOrHide">显示、隐藏容器</button>
<tms-collapse-view collapse-height="790rpx" show="{{show}}" popup>
<view class="content">
</view>
</tms-collapse-view>
# 伸缩模式下手动控制伸缩
Component({
data: {
forceCollapse: false,
},
methods: {
collapseOrExtend() {
this.setData({
forceCollapse: !this.data.forceCollapse,
});
}
}
})
<button bindtap="collapseOrExtend">收缩或展开视图</button>
<tms-collapse-view collapse-height="790rpx" collapse="{{forceCollapse}}">
<view class="content">
</view>
</tms-collapse-view>
# 高度变化时更新组件
Component({
attached() {
this.selectComponent('#vCollapse').reSize()
}
})
<tms-collapse-view collapse-height="790rpx" id="vCollapse">
<!-- content的高度会发生变化 -->
<view class="content">
</view>
</tms-collapse-view>
# API
# tms-collapse-view组件上的api列表
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| collapse-height | 内容大于该高度 + threshold高度时开启伸缩模式。 | String | — | 45vh |
| collapse | 伸缩模式下,手动控制收缩或展开视图。 | Boolean | — | true |
| max-height | 最大高度 | String | — | 100vh |
| cover | 显示全局遮罩层。 | Boolean | — | false |
| animate-duration | 伸缩动画时常。 | Number | — | 300 |
| threshold | 超过收缩高度多少像素后开启伸缩模式,单位px | Number | — | 50 |
| enable-number | 滑动超过多少像素后,自动滚动到另一状态。 | Number | — | 40 |
| z-index | 根元素z-index。 | Number | — | 500 |
| lock-scroll | 蒙层阻止下层元素滑动,阻止事件穿透。 | Boolean | — | true |
| popup | popup模式,不占用文档流高度,从底部弹出。 | Boolean | — | false |
| control | popup模式下,点击蒙层不自动隐藏组件。 | Boolean | — | false |
| show | popup模式时生效,控制显示隐藏组件。 | Boolean | — | false |
| popup-duration | popup模式时生效,弹出动画耗时,单位毫秒。 | Number | — | 500 |
| popup-style | popup组件根元素样式。 | String | — |
# 实例方法
- reSize
当内容高度变化时,需要调用该方法重新排版。
常见场景:组件挂载时,内容高度不够,不会进入伸缩模式,异步获取数据后,内容高度变更了,需要调用reSize方法,才能进入伸缩模式。
this.selectComponent('#vCollapse').reSize()
# EVENTS
| 事件名 | 说明 | 参数 |
|---|---|---|
| bind:on-collapse | 视图收缩时触发 | — |
| bind:on-extend | 视图展开时触发 | — |
| bind:on-click-overlay | 点击遮罩层触发 | — |
# CSS变量
// 面板默认背景色
--collapse-view-background:#fff;
// 遮罩层颜色
--collapse-view-cover: rgba(0, 0, 0, .5);
