界面组件 UI Components
折叠 Collapse
可以同时折叠/展开的内容区域,对复杂的细节信息进行分组和隐藏,保持页面的整洁高效。
与手风琴不同的是,多个折叠可以同时展开。
适用情况
- 内容较多,不需要将信息完全展示在页面的部分,且该项之后还有需要展示的内容。
不适用情况
- 内容里有影响用户下一步操作的重要信息。
- 内容篇幅过长,超出一整屏时,应考虑精简信息或者将多余信息放入下一层级。
- 当有多个折叠堆叠,每个折叠信息较多且用户没有对比不同折叠信息的需求。建议使用手风琴。
折叠
用于放置多个子项,使用时可根据业务需求决定收起状态时显示多少个子项。
<up-collapse v-model="open1" type="card" label-collapsed="展开" label-expended="收起" @onChange="onChange">
<div class="docs-collapse-card-cot">
<div class="has-text-section-title cot-title">标题名称</div>
</div>
<div slot="collapse-slot">
<div class="docs-collapse-card-desc">
<div class="docs-collapse-card-desc-item">
<div class="has-text-subtitle desc-title">门店地址</div>
<div class="has-text-small desc-text">浦东新区紫薇路 800 号</div>
</div>
<div class="docs-collapse-card-desc-item">
<div class="has-text-subtitle desc-title">营业时间</div>
<div class="has-text-small desc-text">工作日 8:00-21:00</div>
</div>
<div class="docs-collapse-card-desc-item">
<div class="has-text-subtitle desc-title">联系电话</div>
<div class="has-text-small desc-text">021-85129445</div>
</div>
<div class="docs-collapse-card-desc-item">
<div class="has-text-subtitle desc-title">当前优惠</div>
<div class="has-text-small desc-text">中信银行 每周五买一送一</div>
</div>
<div class="docs-collapse-card-desc-item">
<div class="has-text-subtitle desc-title">支付方式</div>
<div class="has-text-small desc-text">二维码支付、手机闪付、IC 卡支付</div>
</div>
</div>
</div>
</up-collapse>
<up-collapse v-model="open2" type="plain" label-collapsed="展开" label-expended="收起">
<div class="docs-collapse-card-cot">
<div class="has-text-section-title cot-title">标题名称</div>
<div class="docs-collapse-card-desc-item">
<div class="has-text-subtitle desc-title">门店地址</div>
<div class="has-text-small desc-text">浦东新区紫薇路 800 号</div>
</div>
</div>
<div slot="collapse-slot">
<div class="docs-collapse-card-desc">
<div class="docs-collapse-card-desc-item">
<div class="has-text-subtitle desc-title">营业时间</div>
<div class="has-text-small desc-text">工作日 8:00-21:00</div>
</div>
<div class="docs-collapse-card-desc-item">
<div class="has-text-subtitle desc-title">联系电话</div>
<div class="has-text-small desc-text">021-85129445</div>
</div>
<div class="docs-collapse-card-desc-item">
<div class="has-text-subtitle desc-title">当前优惠</div>
<div class="has-text-small desc-text">中信银行 每周五买一送一</div>
</div>
<div class="docs-collapse-card-desc-item">
<div class="has-text-subtitle desc-title">支付方式</div>
<div class="has-text-small desc-text">二维码支付、手机闪付、IC 卡支付</div>
</div>
</div>
</div>
</up-collapse>
<script>
export default {
data () {
return {
open1:true,
open2:true,
}
},
methods:{
onChange(ev){
//console.log(ev)
}
}
}
</script>
<ScrollView style={{flex:1}}>
<View style={{height:Theme.spaceM}}></View>
<CollapsableBox type='plain' visible={
<View>
<Label style={{paddingVertical:Theme.spaceXS}} type='sectionTitle' text='标题名称'/>
<View style={{flexDirection:'row', paddingVertical:Theme.spaceXS}}>
<Label type='smallTitle' text='门店地址' style={{marginRight:Theme.spaceM}}/>
<Label type='smallText' text='浦东新区紫薇路 800 号'/>
</View>
</View>
} collapsable={
<View>
<View style={{flexDirection:'row', paddingVertical:Theme.spaceXS}}>
<Label type='smallTitle' text='营业时间' style={{marginRight:Theme.spaceM}}/>
<Label type='smallText' text='工作日 8:00-21:00'/>
</View>
<View style={{flexDirection:'row', paddingVertical:Theme.spaceXS}}>
<Label type='smallTitle' text='联系电话' style={{marginRight:Theme.spaceM}}/>
<Label type='smallText' text='021-85129445'/>
</View>
<View style={{flexDirection:'row', paddingVertical:Theme.spaceXS}}>
<Label type='smallTitle' text='当前优惠' style={{marginRight:Theme.spaceM}}/>
<Label type='smallText' text='中信银行 每周五买一送一'/>
</View>
<View style={{flexDirection:'row', paddingVertical:Theme.spaceXS}}>
<Label type='smallTitle' text='支付方式' style={{marginRight:Theme.spaceM}}/>
<Label type='smallText' text='二维码支付、手机闪付、IC 卡支付'/>
</View>
</View>
} />
<View style={{height:Theme.spaceM}}></View>
<View style={{paddingHorizontal:Theme.spaceM}}>
<CollapsableBox type='card' visible={
<View>
<Label style={{paddingVertical:Theme.spaceXS}} type='sectionTitle' text='标题名称'/>
<View style={{flexDirection:'row', paddingVertical:Theme.spaceXS}}>
<Label type='smallTitle' text='门店地址' style={{marginRight:Theme.spaceM}}/>
<Label type='smallText' text='浦东新区紫薇路 800 号'/>
</View>
</View>
} collapsable={
<View>
<View style={{flexDirection:'row', paddingVertical:Theme.spaceXS}}>
<Label type='smallTitle' text='营业时间' style={{marginRight:Theme.spaceM}}/>
<Label type='smallText' text='工作日 8:00-21:00'/>
</View>
<View style={{flexDirection:'row', paddingVertical:Theme.spaceXS}}>
<Label type='smallTitle' text='联系电话' style={{marginRight:Theme.spaceM}}/>
<Label type='smallText' text='021-85129445'/>
</View>
<View style={{flexDirection:'row', paddingVertical:Theme.spaceXS}}>
<Label type='smallTitle' text='当前优惠' style={{marginRight:Theme.spaceM}}/>
<Label type='smallText' text='中信银行 每周五买一送一'/>
</View>
<View style={{flexDirection:'row', paddingVertical:Theme.spaceXS}}>
<Label type='smallTitle' text='支付方式' style={{marginRight:Theme.spaceM}}/>
<Label type='smallText' text='二维码支付、手机闪付、IC 卡支付'/>
</View>
</View>
} />
</View>
<View style={{height: Theme.screenInset.bottom}} />
</ScrollView>
文字折叠
用于放置大段文本,用户可以根据自己需求点击展开阅读或收起文本。
<up-collapse :collapsed-height="220" v-model="open3" type="text" label-collapsed="展示" label-expended="收起">
<div class="docs-collapse-text-cot">
<div class="has-text-section-title cot-title">使用规则</div>
<div class="has-text-small cot-desc">本券需先获取,限卡号 62 开头的中信卡可领取优惠券。领取后在指定门店显示优惠券,即可享手调咖啡买一赠一。每人每活动日限享 1 次本活动优惠。
本次活动对象为中国境内发行的银联信用卡(卡号以 62 开头)持卡人。每活动日限前 1500 只,单卡单日限购 1 杯。仅支持信用卡刷卡、插卡、挥卡支付方式<br><br>本券需先获取,限卡号 62 开头的中信卡可领取优惠券。领取后在指定门店显示优惠券,即可享手调咖啡买一赠一。每人每活动日限享 1 次本活动优惠。<br><br>
本次活动对象为中国境内发行的银联信用卡(卡号以 62 开头)持卡人。每活动日限前 1500 只,单卡单日限购 1 杯。仅支持信用卡刷卡、插卡、挥卡支付方式<br><br>本券需先获取,限卡号 62 开头的中信卡可领取优惠券。领取后在指定门店显示优惠券,即可享手调咖啡买一赠一。每人每活动日限享 1 次本活动优惠。<br><br>
本次活动对象为中国境内发行的银联信用卡(卡号以 62 开头)持卡人。每活动日限前 1500 只,单卡单日限购 1 杯。仅支持信用卡刷卡、插卡、挥卡支付方式</div>
</div>
</up-collapse>
<script>
export default {
data () {
return {
open3:false,
}
},
}
</script>
<CollapsableBoxText collapsedHeight={200}>
<Label type='title' text='使用规则' style={{marginBottom: Theme.spaceS}}/>
<Label type='smallText' numberOfLines={16} text='本券需先获取,限卡号 62 开头的中信卡可领取优惠券。领取后在指定门店显示优惠券,即可享手调咖啡买一赠一。每人每活动日限享 1 次本活动优惠。本次活动对象为中国境内发行的银联信用卡(卡号以 62 开头)持卡人。每活动日限前 1500 只,单卡单日限购 1 杯。仅支持信用卡刷卡、插卡、挥卡支付方式。本券需先获取,限卡号 62 开头的中信卡可领取优惠券。领取后在指定门店显示优惠券,即可享手调咖啡买一赠一。每人每活动日限享 1 次本活动优惠。本次活动对象为中国境内发行的银联信用卡(卡号以 62 开头)持卡人。每活动日限前 1500 只,单卡单日限购 1 杯。仅支持信用卡刷卡、插卡、挥卡支付方式。' style={{color: Theme.grayColor1, lineHeight: Theme.spaceM}} />
</CollapsableBoxText>
Vue.js Reference
属性 |
说明 |
类型 |
可选值 |
默认值 |
v-model |
控制展开收起状态 |
Boolean |
- |
false |
type |
折叠类型 |
String |
text 设定高度的折叠框类型, plain 为边到边的折叠框类型, card 为卡片折叠框类型 |
plain |
label-collapsed |
收起时的按钮文字 |
String |
- |
展开 |
label-expended |
展开时的按钮文字 |
String |
- |
收起 |
collapsed-height |
text 类型时,需要配置的折叠高度 |
Number |
- |
150 |
名字 |
说明 |
参数 |
默认插槽 |
text 类型时由高度控制,会被折叠, card 和plain 类型时,默认插槽不会被折叠 |
- |
collapse-slot |
card 和plain 类型,插入可折叠型内容 |
- |
事件 |
说明 |
参数 |
onChange |
折叠状态改变时触发 |
折叠状态 status:Boolean |
React Native Reference
在 RN 中使用两个对象来分别实现文字折叠和控件折叠。
- CollapsableBox - 折叠 - 通过设定可被折叠的控件实现
- CollapsableBoxText - 文字折叠 - 通过设定折叠起后的高度来实现
CollapsableBox
属性 |
说明 |
类型 |
可选值 |
默认值 |
type |
折叠框的外框类型 |
enum |
plain 为边到边的折叠框类型, card 为卡片折叠框类型 |
plain |
visible |
折叠后仍然可见的组件 |
PropTypes.element |
- |
|
collapsable |
可以被折叠收起,折叠后被隐藏的组件 |
PropTypes.element |
- |
|
labelCollapsed |
折叠后的按钮文字 |
string |
- |
‘展开’ |
labelExpended |
展开后的按钮文字 |
string |
- |
‘收起’ |
事件 |
说明 |
参数 |
onChange |
折叠状态改变时触发 |
折叠状态 status:Boolean 是否展开,为 true 时表示当前为展开状态 |
CollapsableBoxText
属性 |
说明 |
类型 |
可选值 |
默认值 |
collapsedHeight |
折叠后的高度 |
number |
- |
150 |
labelCollapsed |
折叠后的按钮文字 |
string |
- |
‘展开’ |
labelExpended |
展开后的按钮文字 |
string |
- |
‘收起’ |
事件 |
说明 |
参数 |
onChange |
折叠状态改变时触发 |
折叠状态 status:Boolean 是否展开,为 true 时表示当前为展开状态 |