应用程序
<template>
<v-app id="inspire">
<v-navigation-drawer
v-model="drawer"
app
>
<v-list dense>
<v-list-item link>
<v-list-item-action>
<v-icon>mdi-home</v-icon>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>Home</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item link>
<v-list-item-action>
<v-icon>mdi-contact-mail</v-icon>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>Contact</v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list>
</v-navigation-drawer>
<v-app-bar
app
color="indigo"
dark
>
<v-app-bar-nav-icon @click.stop="drawer = !drawer"/>
<v-toolbar-title>Application</v-toolbar-title>
</v-app-bar>
<v-content>
<v-container fluid>
<router-view></router-view>
</v-container>
</v-content>
<v-footer
color="indigo"
app
>
<span class="white--text">© 2019</span>
</v-footer>
</v-app>
</template>
Run Code Online (Sandbox Code Playgroud)
主页.vue:
<template>
<v-layout fluid>
<template>
<v-data-table
height="100%"
:headers="headers"
:items="desserts"
:items-per-page="10"
class="elevation-1"
style="margin: 0px; padding: 0px; width: 100%; height: 100%"
></v-data-table>
</template>
</v-layout>
</template>
<script>
export default {
data () {
return {
headers: [
{
text: 'Dessert (100g serving)',
align: 'left',
sortable: false,
value: 'name',
},
{ text: 'Calories', value: 'calories' },
{ text: 'Fat (g)', value: 'fat' },
{ text: 'Carbs (g)', value: 'carbs' },
{ text: 'Protein (g)', value: 'protein' },
{ text: 'Iron (%)', value: 'iron' },
],
desserts: [
{
name: 'Frozen Yogurt',
calories: 159,
fat: 6.0,
carbs: 24,
protein: 4.0,
iron: '1%',
},
{
name: 'Ice cream sandwich',
calories: 237,
fat: 9.0,
carbs: 37,
protein: 4.3,
iron: '1%',
},
],
}
},
}
</script>
Run Code Online (Sandbox Code Playgroud)
我尝试设置桌子 (v-data-table或v-simple-table)的高度,使其顶部和底部齐平。该表具有正确的宽度,并且也正确固定在左上角。问题是,如果我有很多数据,表格只会不断向下扩展。固定标题没有用,因为它们只是向上消失。表格应始终与页眉和页脚之间的空间一样高。
如何设置表格的高度,使其始终适合页眉和页脚之间并且不会向下扩展。
dre*_*ker 11
2021 年 1 月 7 日更新:基于@Jack 的回答,我添加了技巧 0。我想,它应该比其他人更灵活。
技巧 0.您可以创建自己的页面模板并将其与v-resize指令结合使用。
带有Header、Title、Filter和Table块的示例页面:
<template>
<div v-resize="onResize">
<slot name="header" />
<slot name="toolbar" />
<slot name="filter" />
<div ref="resizableDiv">
<slot name="table" :table-height="tableHeight" />
</div>
</div>
</template>
<script>
export default {
name: "resizable-page",
data() {
return {
tableHeight: 0,
};
},
props: {
footerHeight: {
type: Number,
default: 59, //default v-data-table footer height
},
},
methods: {
onResize() {
this.tableHeight =
window.innerHeight -
this.$refs.resizableDiv.getBoundingClientRect().y -
this.footerHeight;
},
},
};
</script>
Run Code Online (Sandbox Code Playgroud)
旧答案:
我最近遇到了同样的问题,还没有找到简单的解决方案。
但是有两个技巧可能对您有所帮助。
技巧 1.在vh 中使用 v-data-table 属性高度。例子:
<v-data-table
height="70vh"
fixed-header
:headers="headers"
:items="desserts"
:items-per-page="10"
class="elevation-1"
style="width: 100%"
></v-data-table>
Run Code Online (Sandbox Code Playgroud)
使用这个技巧,您可以使表格根据浏览器窗口的高度缩小和增长。
一些优点:
一些缺点:
技巧 2.使用v-resize指令并重新计算表的高度。
您的模板示例:
<v-layout fluid v-resize="onResize">
<v-data-table
:height="windowSize.y - 64 - 24 - 59 - 36"
fixed-header
:headers="headers"
:items="desserts"
:items-per-page="10"
class="elevation-1"
style="width: 100%"
></v-data-table>
</v-layout>
...
<script>
export default {
data () {
return {
...
windowSize: {
x: 0,
y: 0,
},
}
},
...
methods: {
onResize () {
this.windowSize = { x: window.innerWidth, y: window.innerHeight };
},
}
};
</script>
Run Code Online (Sandbox Code Playgroud)
高度属性常量的注释:64是您的页眉高度,24 - 表格填充(顶部 12 + 底部 12),59 - 表格页脚高度,36 - 页脚高度。
一些优点:
一些缺点:
还要看一下,在这两种情况下,我都使用了固定标头属性。这个属性最初是在 Vuetify 2.0 中引入的,(根据文档)在 IE11 中不起作用。
| 归档时间: |
|
| 查看次数: |
8171 次 |
| 最近记录: |