1. 设置指定显示页面
<Tabs ref="tabs" :animated="false">
<Tab-pane label="标题1" name="MigrationList">
<MigrationList ref="migrationListRef"/>
</Tab-pane>
<Tab-pane label="标题2" name="AddMigrationList">
<AddMigrationList/>
</Tab-pane>
<Tab-pane label="标题3" name="ScheduleList">
<ScheduleList/>
<div v-show="exceptionList.length">
<br/>
<ExceptionList/>
</div>
</Tab-pane>
</Tabs>
this.$refs.tabs.activeKey = 'AddMigrationList'
2. 高度随内容撑开问题
当animated: true
时,高度不能随着内容的高度撑开,反而是由最高的tabPane决定的。
- 使用动画时
主要是通过translateX
来进行水平方向的移动,来保证显示与隐藏 - 不使用动画时
切换时,会通过display: none
使不该显示的tab项隐藏
可能是因为,使用动画的时候,不好控制display,从而导致高度被最高的那一个撑开了
3. 通过v-show打开动画效果,解决tab各自高度控制
<template>
<Tabs @on-click="clickTab" value="name1">
<TabPane label="标签一" name="name1" >
<div style="height: 100px; backgroundColor: blu;border: 1px solid black;" v-show="tabName === 'name1'">
标签一的内容
</div>
</TabPane>
<TabPane label="标签二" name="name2">
<div v-show="tabName === 'name2'" style="backgroundColor: blu;border: 1px solid black;">
标签二的内容
</div>
</TabPane>
<TabPane label="标签三" name="name3">
<div style="height: 100px; backgroundColor: blu;border: 1px solid black;" v-show="tabName === 'name3'">
标签三的内容
</div>
</TabPane>
</Tabs>
</template>
<script>
export default {
data () {
return {
tabName: 'name1'
}
},
methods: {
clickTab(name) {
this.tabName = name
}
}
}
</script>