html - CSS - 确保我的 CSS 网格的前两行等于屏幕的剩余高度(不包括标题)
问题描述
我想知道我的 CSS 网格的前两行是否可以等于不包括标题的屏幕高度。标题下方的内容容器已设置为溢出:自动,但我只希望网格的前两行等于内容容器的高度(不溢出)。我的网格共有 3 行,基本上,我希望前两行占据容器的整个高度而不会溢出,然后第三行对屏幕完全不可见,除非容器向下滚动。如果我的解释令人困惑,请告诉我,因为我是 CSS 网格的新手,并且不太确定我的解释是否足够。谢谢大家,期待你们的回复!
这是我的 HTML 布局示例
<div class='entire'>
<div class='header'>Header</div>
<div class='content'>
<div class='grid'>
item 1
item 2
item 3
</div>
</div>
</div>
CSS
.entire {
height: 100vh;
}
.content {
overflow: auto;
}
.grid {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: ___ ____ ____;
}
解决方案
的高度
.header
应该在 CSS 中定义。如果没有 - 它应该由 JS 获得。让我们同意 CSS 中的定义。考虑到您对第 1 行和第 2 行的最后评论应该都适合一个屏幕,第 1 行应该采用自动高度和第 2 行 - 所有其余高度,我没有看到任何证据表明将第 3 块包含
grid
在其中。把它搬走了。
html,
body {
margin: 0;
padding: 0;
height: 100%;
}
.entire {
height: 100vh;
}
.header {
background: cyan;
height: 20px;
}
.content {
overflow: auto;
}
.grid {
/* subtracting known height of .header */
height: calc(100vh - 20px);
display: grid;
grid-template-columns: 1fr;
/* this will make 1st row auto height and 2nd - all the rest */
grid-template-rows: auto 1fr;
}
.item1 {
background: #eee;
}
.item2 {
background: #ddd;
}
.item3 {
background: #ccc;
height: 100vh;
}
<div class="entire">
<div class="header">Header</div>
<div class="content">
<div class="grid">
<div class="item1">item 1</div>
<div class="item2">item 2</div>
</div>
<div class="item3">item 3</div>
</div>
</div>
推荐阅读
- sql-server - 基于集合的堆叠更新查询
- google-cloud-platform - 如何使用 terraform 创建 gcr 存储库?
- python - 自动无法单击 Webdriver 中的元素(python)
- floating-point - 浮点数的金属 SIMD 最小值和最大值操作失败
- php - PHP - Zend3、Jquery、Ajax(帖子)
- google-chrome - 用于跟踪搜索字符串的浏览器插件/扩展
- javascript - why is callback not working in nodejs with mysql?
- java - 从文本文件中读取信息以获取特定信息
- python - 使用 SQLAlchemy 和 Pyramid 计划的后台数据库更新
- rubygems - 如何在防火墙后面安装 Cocoapods