css - Css-Grid / Flexbox 放在一边,main 没有增长 100%
问题描述
我正在创建一个 css-grid / flexbox 模板,并且一切正常。
它有一个页眉,旁边,主要和页脚。
我只需要分配和主行来拉伸,因此它需要整个页面减去页眉和页脚高度。
我想这样做而不必使用“vh”
这是完整的当前代码:
* {
box-sizing: border-box;
padding: 0;
margin: 0;
}
body {
padding: 0;
margin: 0;
width: 100%;
height: 100%;
display: grid;
grid-template-columns: 30% auto;
grid-template-rows: auto 1fr auto;
grid-template-areas: "header header"
"sidebar main"
"footer footer"
}
header,
aside,
main,
footer {
padding: 16px;
text-align: center;
}
header {
background: purple;
grid-area: header;
}
aside {
background: blue;
grid-area: sidebar;
}
main {
background: green;
grid-area: main;
}
footer {
background: orange;
grid-area: footer;
}
如何获得自动拉伸的分配和主要功能?
解决方案
您可以使用:root{}
它并calc()
使用变量来计算高度。很抱歉重新编码您的尝试,但我认为最好从零开始向您展示一种新方法。
试试下面的代码片段
* {box-sizing: border-box;padding: 0;margin: 0}
:root{
--nav-height: 80px;
--footer-height: 80px;
}
.grid-container{
display: grid;
grid-template-columns: 30% 70%;
height:calc(100vh - var(--nav-height) - var(--footer-height));
}
.grid-item{
border:1px solid black;
padding:10px;
}
.nav{
width:100%;
height:var(--nav-height);
border:1px solid black;
padding:10px;
}
footer{
width:100%;
height:var(--footer-height);
border:1px solid black;
padding:10px;
}
<body>
<div class="nav">nav content</div>
<div class="grid-container">
<div class="grid-item">body content one</div>
<div class="grid-item">body content two</div>
</div>
<footer>footer content</footer>
</body>
推荐阅读
- ruby-on-rails - 是否可以使用 ActiveAdmin 以便管理员用户可以编辑邮件模板?
- elixir - 找不到 GET /media/image_test.png 的路由
- sql - 结果未过滤
- asp.net-core - 在不阻塞 UI 的情况下延迟 Blazor 中的任务
- python - 为什么不应用一个热编码器,知道运行文件时没有错误?
- java - 从输入访问符号前后的索引值
- azure - 在初始登录自定义策略上强制密码重置不起作用
- autodesk-forge - 2 锁定网络上的 Legged 授权失败
- php - 是否可以通过这种方式从相关表中获取值名称
- sql - 用于获取彼此最接近的前 100 个地址的 SQL 代码。旅行推销员问题?