用代码实现一个el-tabs 平滑的页面切换
时间: 2024-01-10 10:49:45 浏览: 92
好的,以下是一个基于Vue.js实现的el-tabs平滑页面切换的代码示例:
HTML模板:
```
<template>
<el-tabs v-model="activeTab" type="border-card" @tab-click="handleTabClick">
<el-tab-pane label="Tab 1" name="tab1">
<transition :name="transitionName" mode="out-in">
<div v-show="activeTab === 'tab1'" class="tab-content">
<p>Tab 1 Content</p>
</div>
</transition>
</el-tab-pane>
<el-tab-pane label="Tab 2" name="tab2">
<transition :name="transitionName" mode="out-in">
<div v-show="activeTab === 'tab2'" class="tab-content">
<p>Tab 2 Content</p>
</div>
</transition>
</el-tab-pane>
<el-tab-pane label="Tab 3" name="tab3">
<transition :name="transitionName" mode="out-in">
<div v-show="activeTab === 'tab3'" class="tab-content">
<p>Tab 3 Content</p>
</div>
</transition>
</el-tab-pane>
</el-tabs>
</template>
```
JavaScript代码:
```
<script>
export default {
data() {
return {
activeTab: 'tab1',
transitionName: 'slide-left'
}
},
methods: {
handleTabClick(tab) {
if (tab.index < this.activeTab) {
this.transitionName = 'slide-right'
} else {
this.transitionName = 'slide-left'
}
this.activeTab = tab.index
}
}
}
</script>
```
CSS样式:
```
<style>
.tab-content {
height: 200px;
padding: 20px;
background-color: #f2f2f2;
border-radius: 5px;
}
.slide-left-enter,
.slide-right-leave-to {
opacity: 0;
transform: translateX(-100%);
}
.slide-left-leave-to,
.slide-right-enter {
opacity: 0;
transform: translateX(100%);
}
.slide-left-enter-active,
.slide-right-leave-active,
.slide-left-leave-active,
.slide-right-enter-active {
transition: all .5s ease;
}
</style>
```
基本原理是利用Vue的过渡动画效果实现平滑的页面切换。当点击Tab的时候,根据当前Tab和点击的Tab的位置关系,设置不同的过渡动画效果。在CSS中定义不同的过渡效果,包括初始状态、结束状态和过渡过程中的样式。
阅读全文