底部表单
底部表单是一个修改后的v-dialog
,可以从屏幕底部滑动,类似于一个v-bottom-navigation
。底部导航组件用于按钮和特定应用程序级别操作,而底部表单可以包含任何内容。
用例
在这里,我们将显示一个示例操作列表,它可能出现在应用程序中。
API
从下面选择您想要的组件,并查看可用的属性、插槽、事件和函数。
示例
下面是一些简单到复杂的例子。
持久的
持久的底部表单无法通过在外部单击来关闭。
template script
<template>
<div class="text-center">
<v-bottom-sheet v-model="sheet" persistent>
<template v-slot:activator="{ on }">
<v-btn
color="green"
dark
v-on="on"
>
Open Persistent
</v-btn>
</template>
<v-sheet class="text-center" height="200px">
<v-btn
class="mt-6"
flat
color="error"
@click="sheet = !sheet"
>close</v-btn>
<div class="py-3">This is a bottom sheet using the persistent prop</div>
</v-sheet>
</v-bottom-sheet>
</div>
</template>
<script>
export default {
data: () => ({
sheet: false,
}),
}
</script>
v-model 控制
底部表单可以使用 v-model
来控制。如果你不能使用 activator
插槽,那么可以用它来控制开关。
template script
<template>
<div class="text-center">
<v-btn
color="blue"
dark
@click="sheet = !sheet"
>
Open v-model
</v-btn>
<v-bottom-sheet v-model="sheet">
<v-sheet class="text-center" height="200px">
<v-btn
class="mt-6"
text
color="red"
@click="sheet = !sheet"
>close</v-btn>
<div class="py-3">This is a bottom sheet using the controlled by v-model instead of activator</div>
</v-sheet>
</v-bottom-sheet>
</div>
</template>
<script>
export default {
data: () => ({
sheet: false,
tiles: [
{ img: 'keep.png', title: 'Keep' },
{ img: 'inbox.png', title: 'Inbox' },
{ img: 'hangouts.png', title: 'Hangouts' },
{ img: 'messenger.png', title: 'Messenger' },
{ img: 'google.png', title: 'Google+' },
],
}),
}
</script>
嵌入
底部表单可以嵌入,将其在桌面上的最大宽度减小到 70%。可以使用 width
属性手动减少。
template script
<template>
<div class="text-center">
<v-bottom-sheet v-model="sheet" inset>
<template v-slot:activator="{ on }">
<v-btn
color="orange"
dark
v-on="on"
>
Open Inset
</v-btn>
</template>
<v-sheet class="text-center" height="200px">
<v-btn
class="mt-6"
text
color="error"
@click="sheet = !sheet"
>close</v-btn>
<div class="my-3">This is a bottom sheet using the inset prop</div>
</v-sheet>
</v-bottom-sheet>
</div>
</template>
<script>
export default {
data: () => ({
sheet: false,
}),
}
</script>
Vue School
Learn Vue.js and modern and cutting-edge front-end technologies with our premium tutorials and video courses.
ads by Vuetify
](https://vueschool.io/?ref=vuetifyjs.com&friend=vuetify)
音乐播放器
使用嵌入式底部表单,您可以制作实用的组件,例如这个简单的音乐播放器。
template
<template>
<div class="text-center">
<v-bottom-sheet inset>
<template v-slot:activator="{ on }">
<v-btn
color="red"
dark
v-on="on"
>
Open Player
</v-btn>
</template>
<v-card tile>
<v-progress-linear
:value="50"
class="my-0"
height="3"
></v-progress-linear>
<v-list>
<v-list-item>
<v-list-item-content>
<v-list-item-title>The Walker</v-list-item-title>
<v-list-item-subtitle>Fitz & The Trantrums</v-list-item-subtitle>
</v-list-item-content>
<v-spacer></v-spacer>
<v-list-item-icon>
<v-btn icon>
<v-icon>mdi-rewind</v-icon>
</v-btn>
</v-list-item-icon>
<v-list-item-icon :class="{ 'mx-5': $vuetify.breakpoint.mdAndUp }">
<v-btn icon>
<v-icon>mdi-pause</v-icon>
</v-btn>
</v-list-item-icon>
<v-list-item-icon
class="ml-0"
:class="{ 'mr-3': $vuetify.breakpoint.mdAndUp }"
>
<v-btn icon>
<v-icon>mdi-fast-forward</v-icon>
</v-btn>
</v-list-item-icon>
</v-list-item>
</v-list>
</v-card>
</v-bottom-sheet>
</div>
</template>
打开列表
通过将功能列表合并到底部表单中,您可以创建一个简单的 ‘open in’ 组件。
template script
<template>
<div class="text-center">
<v-bottom-sheet v-model="sheet">
<template v-slot:activator="{ on }">
<v-btn
color="purple"
dark
v-on="on"
>
Open In
</v-btn>
</template>
<v-list>
<v-subheader>Open in</v-subheader>
<v-list-item
v-for="tile in tiles"
:key="tile.title"
@click="sheet = false"
>
<v-list-item-avatar>
<v-avatar size="32px" tile>
<img
:src="`https://cdn.vuetifyjs.com/images/bottom-sheets/${tile.img}`"
:alt="tile.title"
>
</v-avatar>
</v-list-item-avatar>
<v-list-item-title>{{ tile.title }}</v-list-item-title>
</v-list-item>
</v-list>
</v-bottom-sheet>
</div>
</template>
<script>
export default {
data: () => ({
sheet: false,
tiles: [
{ img: 'keep.png', title: 'Keep' },
{ img: 'inbox.png', title: 'Inbox' },
{ img: 'hangouts.png', title: 'Hangouts' },
{ img: 'messenger.png', title: 'Messenger' },
{ img: 'google.png', title: 'Google+' },
],
}),
}
</script>