html - 如何使用 CSS-Grid 实现响应式高度?
问题描述
所以我刚刚开始使用 CSS-grid 直到现在一直使用 Bootstrap(我知道的派对迟到了,但是嘿,我现在在这里!)而且我在网格行高度方面遇到了一些麻烦。
目标:
响应式地将整个网格的高度设置为 100% 视口高度。
问题:
在我的网格中,我正在使用 grid-gap 属性。这些对网格高度的小添加将我的 vh 单位扔掉了,因此网格的底部不再响应地撞击视口的底部。
我尝试过的(以及没有奏效的...):
使用 vh - 正如我所说,这是行不通的,因为(据我所知)网格间隙会导致将额外的高度添加到内容中,因此尽管我的 vh 计算结果都等于 100vh,内容实际上在视口底部运行。
使用 fr 单位来设置网格行高度 - 我也刚刚开始掌握这个新的(ish)单位,但是当我在这里尝试它时,它似乎是从内容总和而不是视口高度计算它的分数;所以因此内容太短了,在内容底部和视口底部之间留下了很大的间隙。
为网格容器设置最小和/或最大高度 - 这似乎与行高的显式设置冲突,因此我在屏幕上看到的内容完全没有变化。
在处理宽度时这一切都是如此简单,但高度又一次让我感到难过。有没有人有什么建议?
<body>
<main><!-- Grid Container -->
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
</main>
</body>
* {
margin: 0;
padding: 0;
}
main {
display: grid;
grid-template-rows: 10vh repeat(4, 20vh) 10vh;
grid-gap: 5px;
}
解决方案
从您的声明中:grid-template-rows: 10vh repeat(4, 20vh) 10vh;
- 看起来您想要 6 行,中间的四行是第一行和最后一行的两倍。所以:
1)grid-template-rows: 10vh repeat(4, 20vh) 10vh;
改为
grid-template-rows: 1fr repeat(4,2fr) 1fr;
2)向网格添加高度:height: 100vh;
* {
margin: 0;
padding: 0;
}
main {
display: grid;
grid-template-rows: 1fr repeat(4,2fr) 1fr;
grid-gap: 5px;
height: 100vh;
grid-gap: 5px;
}
<main><!-- Grid Container -->
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
</main>
推荐阅读
- android - strings.xml 资源可以有多大?
- python - 四个矩阵的切片数组
- php - 如何在 Symfony REST API 中处理括号字段数组
- python - 如何使用 OOP 使图像移动
- google-apps-script - 为什么在appsscript.json 中存在权限时表单给出必需权限错误?
- android - 我们可以在 Room 中从一个版本迁移到另一个版本时删除记录吗?
- sql - TSQL:根据条件连接表
- javascript - 在我的 Libary/Ethereum 文件夹中找不到文件
- reactjs - 在提交表单上,无法获得反应选择值
- python - 在一年中的每个季度进行迭代