我正在尝试使用整页Angular Material选项卡,其中包含全高度且具有居中消息的选项卡。我已创建this stakblitz,因为我无法让它工作。 fxFill似乎没有填充,我不确定这是Flexbox布局还是Angular Material的问题。我不想在每个标签内强制高度,因为这似乎打败了灵活布局的点。
我确定它很简单,但帮助一个习惯于Bootstrap网格的可怜的混淆开发人员:)
更新 将 height:calc(100vh - 100px); 添加到父div,然后添加到tall.component div使得工作正常但 肯定这是一个糟糕的解决方案
答案 0 :(得分:12)
为了填充页面,页面需要填充窗口:
<强> styles.css的强>
body, html{
height: 100%;
margin: 0;
}
app组件需要填充正文:
<强> app.component.css 强>
:host{
box-sizing: border-box;
display: block;
height: 100%;
}
默认情况下,标签内容的包装器不会填充标签的高度,因此我们将解决此问题:
<强> styles.css的强>
.mat-tab-body-wrapper{
flex-grow: 1;
}
我们还需要让mat-tab-group
填充高度,它的父级也需要填充高度,所以我们将为包装器和制表符组提供一个id。
<强> app.component.ts 强>
<div id="wrapper"> <!-- give it an id -->
<div fxLayout="row" fxLayoutGap="16px" fxFill>
<div fxFlex="20">
<p>Fun Sidebar</p>
</div>
<div fxFlex="80" fxFill>
<mat-tab-group id="tab-group"> <!-- give it an id -->
<mat-tab label="Summary">
<div fxFlex style="padding: 16px;">
<div class="mat-display-2">Hello</div>
<p>Lorem ipsulem</p>
</div>
</mat-tab>
<mat-tab label="Tall content">
<app-tall-component></app-tall-component>
</mat-tab>
</mat-tab-group>
</div>
</div>
</div>
<强> app.component.css 强>
#wrapper{
padding: 16px;
min-height: 100%;
height: 100%;
box-sizing: border-box;/*new*/
}
#tab-group{
height: 100%;
}
#tab-group mat-tab-body {
flex-grow: 1;
}
https://stackblitz.com/edit/angular-awamwn?file=src%2Fapp%2Fapp.component.html
答案 1 :(得分:2)
这对我来说可以为高度分配动态值。
:host ::ng-deep .mat-tab-body-wrapper {
height: 600px;
}
:host ::ng-deep .mat-tab-body.mat-tab-body-active {
height: 600px;
}
答案 2 :(得分:0)
将 dynamicHeight 输入设置为true [dynamicHeight]='true'
默认情况下,选项卡组的高度不会更改为当前活动选项卡的高度。要更改此设置,请将dynamicHeight输入设置为true。标签主体将根据活动标签的高度设置其高度的动画。