css - 不按所有列定义 Grid 的高度
问题描述
我创建了一个由 3 列和 4 行组成的网格。最后一列被图像完全覆盖(».box-image«,不是背景图像),因此该图像及其所在的列不应扩展其他列的高度。
.grid{
display: grid;
grid-template-columns: 25% 25% 1fr;
grid-template-rows: auto 1fr 1fr 50px;
}
.grid .box-image{
grid-column: 3;
grid-row: 1 / 5;
}
.grid .box-image img{
object-fit: cover;
width: 100%;
height: 100%;
}
如何确定 .box-image 不会增加网格的高度(1fr 1fr),并且只假设由其他内容确定的高度?
解决方案
您应该只需要max-height
在图像中添加一个。请参阅下面的 2 个示例,它们具有不同的行高。在这两种情况下,图像都会根据其他行的高度填充高度。
.grid{
display: grid;
grid-template-columns: repeat(2, 25%) 4fr;
grid-template-rows: auto 1fr 1fr 50px;
}
.grid > div {
background-color: lightgray;
border: 1px solid gray;
}
.grid .box-image {
grid-column: 3;
grid-row: 1 / 5;
}
.grid .box-image img {
object-fit: cover;
width: 100%;
max-height: 100%;
}
<div class="grid">
<div>1</div>
<div>2</div>
<div class="box-image">
<img src="https://via.placeholder.com/200">
</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
</div>
使用 1000x1000 像素的图像:
.grid{
display: grid;
grid-template-columns: repeat(2, 25%) 4fr;
grid-template-rows: auto 1fr 1fr 50px;
}
.grid > div {
background-color: lightgray;
border: 1px solid gray;
}
.grid .box-image {
grid-column: 3;
grid-row: 1 / 5;
}
.grid .box-image img {
object-fit: cover;
width: 100%;
max-height: 100%;
}
<div class="grid">
<div>1</div>
<div>2</div>
<div class="box-image">
<img src="https://via.placeholder.com/1000">
</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
</div>
没有图像:
.grid{
display: grid;
grid-template-columns: repeat(2, 25%) 4fr;
grid-template-rows: auto 1fr 1fr 50px;
}
.grid > div {
background-color: lightgray;
border: 1px solid gray;
}
.grid .box-image {
grid-column: 3;
grid-row: 1 / 5;
}
.grid .box-image img {
object-fit: cover;
width: 100%;
max-height: 100%;
}
<div class="grid">
<div>1</div>
<div>2</div>
<div class="box-image"></div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
</div>
推荐阅读
- python - 从 key == value 的列表生成字典的最快方法
- blockchain - 在 ropsten 网络中添加交易后有没有办法清理?
- c++ - SMPCIRC - 两个圆圈
- javascript - 如何从基于 javascript 的网站中提取动态数据?
- scala - 如何在 Spark 中聚合值?
- c# - 在其他页面调用单独的类?
- c# - 从数据库授权属性角色
- r - 刮痧
- 带有 Rvest 的元素
- android-studio - 如何使用 hdodenhof:circleimageview (Android studio) 创建一个圆圈
- javascript - 是否可以让 Flow 验证器在 reacts setState 中检查 immutability-helper 更新语法?