【发布时间】:2018-02-02 01:38:14
【问题描述】:
我正在使用 Angular 和 Material 设计元素为新 UI 创建模型,但是我在尝试让工具栏下方的区域占据页面剩余的垂直高度时遇到问题。
Here is a link to my code example
我用谷歌搜索了这个问题,我唯一看到的是设置的解决方案
html, body {
height: 100%;
}
但是我还没有发现这是一个解决方案。 我在想也许可以使用弹性盒子,但我不熟悉它们的使用方式。
任何帮助将不胜感激。
更新和解决方案 我选择不走 flexbox 路线,因为我想要一些快速的解决方案,而 flexbox 可能是我未来会更多关注的东西。
在决定我想要一个静态导航栏后,我开始使用 CSS 计算来利用 height: 100vh 并减去由此导致的悬垂。
mat-sidenav-container {
height: calc(100vg - 64px);
}
然而,我发现在缩小窗口大小时,材质元素的响应特性意味着工具栏的高度会有所降低。这会导致页面内容下方出现一个空白栏,因为在这种情况下要减去的数量需要更少。
解决此问题的方法是为触发收缩的特定页面宽度添加@media 更改。然后我最终留下了以下内容:
mat-sidenav-container {
height: calc(100vh - 64px);
}
@media (max-width: 600px) {
mat-sidenav-container {
height: calc(100vh - 56px)
}
}
这可能不是解决问题的最佳解决方案,但到目前为止,我发现这是一种可行的解决方案。
【问题讨论】:
-
I was thinking of perhaps using a flex box, but I am unfamiliar with how they are usedFlexbox 绝对可以做到这一点。但我们不会为您开发解决方案!你需要先试一试。 -
问题是您将一些 div 设置为
position:absolute。通过这样做,您可以将它们从它们的父容器中“分离”,该容器将折叠到 0 高度(或其他子容器的高度,如果有的话)。您将无法使用position:absolute中的元素实现结构化布局。
标签: html css angular flexbox angular-material2