css - Angular(7)材质工具栏+Sidenav;台式机与移动设备的高度差异问题(包括 stackblitz 示例)
问题描述
我已经设置了一个页面以在应用程序中使用Angular Material
'smat-toolbar
和mat-sidenav
组件布局Angular 7
。在大多数情况下,它工作正常;但是我遇到了这个令人困惑的问题,mat-toolbar
因为它在移动视图和桌面视图中的高度不同。
随附的是一个 stackblitz 存储库,它完整地说明了我的问题。
堆栈闪电存储库
问题
工具栏应该64px
很高,在桌面上它是;但是在较小的屏幕上它会落到56px
我不知道为什么。
桌面
移动的
这很重要,因为容器设置的工作方式。整个区域都包裹在这个类中
#content-container {
position : absolute;
top : 64px;
bottom : 0;
left : 0;
right : 0;
.sidenav {
&.sitemap {
background : $pickled-bluewood;
}
&.usernav {
background : $ebony;
}
}
}
我知道我可以通过媒体查询来解决这个问题;只是为较小的视图设置一个断点来调整top
,但这对我来说感觉很hacky。我想了解发生了什么,看看是否有我忽略的更自然的解决方法。
我也知道我可以强制工具栏高度,但这最终在一个显示器或另一个显示器上看起来非常尴尬。
如果这真的是唯一优雅的解决方案,我将使用媒体查询,但这只是感觉应该是非常微不足道的事情,而且我没有看到更明显的解决方案让我感到困扰。
解决方案
在主题的预定义 css 中,mat-toolbar-single-row 的高度在不同屏幕高度的媒体查询中定义。
定义最大宽度为 599px 的屏幕
@media (max-width: 599px){
.mat-toolbar-row, .mat-toolbar-single-row {
height: 56px;
}
}
所有大于 599px 的屏幕的定义:
.mat-toolbar-row, .mat-toolbar-single-row {
height: 64px;
}
使用#content-container 的绝对位置,它被迫<body>
在浏览器顶部或顶部下方64px。在这种情况下,最好使用默认位置:静态
具有位置的元素:静态;没有以任何特殊方式定位;总是按照页面的正常流程定位
最简单的解决方案是删除位置并将#content-container的顶部元素设置为0:
#content-container {
top: 0;
bottom : 0;
left : 0;
right : 0;
...
}
推荐阅读
- c# - C# Async void 不执行所有行
- sql-server - 从所有表中查找所有布尔列
- c++ - 排序功能和容器的定制订单
- ruby-on-rails - 如何在 Vue js 中使用 axios 更新我的 rails api 数据库中的记录?
- powershell - 如何从批处理文件中打印 powershell 命令?
- android-studio - 如何停止在 Windows 中弹出多个 Android Studio 实例?
- c++ - OpenGL渲染封闭的透明物体?
- algorithm - 求k-ary递归函数的时间复杂度
- sql - 表示PostgreSQL中单列与多表关系的数据模式
- c - 尝试在 C 中分配内存时出现问题