我创建了一个由 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>
关于css - 不按所有列定义 Grid 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59766464/