我创建了一个由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
。请参阅下面的两个示例,它们具有不同的行高。在这两种情况下,图像都会根据其他行的高度填充高度。
.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>
.grid{
display: grid;
grid-template-columns: repeat(2, 25%) 4fr;
grid-template-rows: auto 1fr 1fr 250px;
}
.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>