效果示例
当前active样式,已加载样式,未加载样式均不相同。
实现思路切入点:监听tab组件的before-leave事件。
跳转后为对应选项卡添加样式
/* * activeName 当前选项卡名称 * oldActiveName 跳转前选项卡名称 */ Function(activeName, oldActiveName)
// 获取tab导航栏label插槽
getTabLabel (index) {
if (this.$refs.tabs.panes[index]) {
return this.$refs.tabs.panes[index].$slots.label[0].elm
}
},
// 切换tab样式添加
beforeTableLeave (activeName, oldActiveName) {
console.log(this.$refs.tabs)
let index = oldActiveName === 'activityInfo' ? 0 : oldActiveName === 'activityConditions' ? 1 : 2
this.getTabLabel(index) && this.getTabLabel(index).classList.add('has-loaded')
if (index === 0) {
let borderRadius = '28px 0px 0px 28px'
this.getTabLabel(index).style.borderRadius = borderRadius
this.getTabLabel(index + 1).style.backgroundColor = '#E7EEFF'
if (!this.$refs.tabs.panes[index + 1].loaded) {
this.getTabLabel(index + 1).style.borderRadius = '0px 28px 28px 0px'
}
this.$refs.tabs.panes[index].loaded = false
} else if (index === 1) {
if (activeName === 'appyInfo') {
let borderRadius = '0px'
this.getTabLabel(index).style.borderRadius = borderRadius
this.getTabLabel(index + 1).style.backgroundColor = '#E7EEFF'
this.getTabLabel(index + 1).style.borderRadius = '0px 28px 28px 0px'
this.$refs.tabs.panes[index].loaded = false
}
}
},