vant/packages/tab/demo/index.vue

218 lines
4.4 KiB
Vue

<template>
<demo-section>
<demo-block :title="$t('basicUsage')">
<van-tabs v-model="active">
<van-tab
:title="$t('tab') + index"
v-for="index in tabs"
:key="index"
>
{{ $t('content') }} {{ index }}
</van-tab>
</van-tabs>
</demo-block>
<demo-block :title="$t('title2')">
<van-tabs @scroll="onScroll">
<van-tab
v-for="index in 8"
:title="$t('tab') + index"
:key="index"
>
{{ $t('content') }} {{ index }}
</van-tab>
</van-tabs>
</demo-block>
<demo-block :title="$t('title3')">
<van-tabs @disabled="onClickDisabled">
<van-tab
v-for="index in 3"
:title="$t('tab') + index"
:disabled="index === 2"
:key="index"
>
{{ $t('content') }} {{ index }}
</van-tab>
</van-tabs>
</demo-block>
<demo-block :title="$t('title4')">
<van-tabs type="card">
<van-tab
v-for="index in 3"
:title="$t('tab') + index"
:key="index"
>
{{ $t('content') }} {{ index }}
</van-tab>
</van-tabs>
</demo-block>
<demo-block :title="$t('title5')">
<van-tabs @click="onClick">
<van-tab
v-for="index in 2"
:title="$t('tab') + index"
:key="index"
>
{{ $t('content') }} {{ index }}
</van-tab>
</van-tabs>
</demo-block>
<demo-block :title="$t('title6')">
<van-tabs
:active="active"
sticky
>
<van-tab
:title="$t('tab') + index"
v-for="index in tabs"
:key="index"
>
{{ $t('content') }} {{ index }}
</van-tab>
</van-tabs>
</demo-block>
<demo-block :title="$t('title7')">
<van-tabs :active="active">
<van-tab
v-for="index in 2"
:key="index"
>
<div slot="title">
<van-icon name="more-o" />{{ $t('tab') }}
</div>
{{ $t('content') }} {{ index }}
</van-tab>
</van-tabs>
</demo-block>
<demo-block :title="$t('title8')">
<van-tabs
animated
>
<van-tab
:title="$t('tab') + index"
v-for="index in tabs"
:key="index"
>
{{ $t('content') }} {{ index }}
</van-tab>
</van-tabs>
</demo-block>
<demo-block :title="$t('title9')">
<van-tabs
:active="active"
swipeable
>
<van-tab
:title="$t('tab') + index"
v-for="index in tabs"
:key="index"
>
{{ $t('content') }} {{ index }}
</van-tab>
</van-tabs>
</demo-block>
</demo-section>
</template>
<script>
export default {
i18n: {
'zh-CN': {
tab: '标签 ',
title2: '横向滚动',
title3: '禁用标签',
title4: '样式风格',
title5: '点击事件',
title6: '粘性布局',
title7: '自定义标签',
title8: '切换动画',
title9: '滑动切换',
disabled: ' 已被禁用'
},
'en-US': {
tab: 'Tab ',
content: 'content of tab',
title2: 'Swipe Tabs',
title3: 'Disabled Tab',
title4: 'Card Style',
title5: 'Click Event',
title6: 'Sticky',
title7: 'Custom Tab',
title8: 'Switch Animation',
title9: 'Swipeable',
disabled: ' is disabled'
}
},
data() {
return {
active: 2,
tabs: [1, 2, 3, 4]
};
},
methods: {
onClickDisabled(index, title) {
this.$toast(title + this.$t('disabled'));
},
onClick(index, title) {
this.$toast(title);
},
onScroll(e) {
console.log(e);
}
}
};
</script>
<style lang="less">
@import '../../style/var';
.demo-tab {
margin-bottom: 300px;
.van-tab .van-icon {
margin-right: 5px;
vertical-align: -2px;
}
.van-tab__pane {
background-color: @white;
padding: 20px;
}
.van-tabs--card .van-tab__pane {
background-color: transparent;
}
.custom-tabwrap .van-tab-active {
color: #20a0ff;
}
.custom-tabwrap .van-tabs-nav-bar {
background: #20a0ff;
}
.custom-pane {
text-align: center;
height: 50px;
line-height: 50px;
}
.van-doc-demo-block:last-child {
.van-tab__pane {
padding: 50px 20px;
}
}
}
</style>