html - 图片的高度:Chrome 中为 0,但 Firefox 中没有
问题描述
我正在尝试做一个网格示例并覆盖多个图像。
但问题是,在 Firefox 中,当我设置它时,图像占据了 100% 的高度,在 Chrome 中它是 0,作为一个黑客,我必须将一个图像设置为自动。
.image-1 {
height: auto; /* <-- this part on Chrome*/
grid-column: 4 / span 4;
grid-row: 1 / span 4;
}
有人可以帮助如何在没有任何黑客的情况下做到这一点吗?
代码笔: https ://codepen.io/adtm/pen/GXrLrG
body {
width: 1024px;
margin: 40px auto;
}
section {
display: grid;
grid-auto-rows: 1fr;
grid-template-columns: repeat(10, 1fr);
}
img {
border: 1px solid red;
width: 100%;
height: 100%;
object-fit: cover;
}
.image-1 {
height: auto; /* <-- this part on Chrome*/
grid-column: 4 / span 4;
grid-row: 1 / span 4;
}
.image-2 {
grid-column: 1 / span 4;
grid-row: 3 / span 4;
}
.image-3 {
grid-column: 4 / span 4;
grid-row: 5 / span 3;
}
.image-4 {
grid-column: 6 / span 4;
grid-row: 3 / span 4;
}
<section>
<img src="https://via.placeholder.com/200x150" alt="1" class="image-1">
<img src="https://via.placeholder.com/350x350" alt="2" class="image-2">
<img src="https://via.placeholder.com/150x150" alt="3" class="image-3">
<img src="https://via.placeholder.com/350x250" alt="4" class="image-4">
</section>
解决方案
img
元素height: 100%
有。
好的,但是height: 100%
什么?父级没有定义高度。
Chrome 看着容器并没有看到高度,然后将孩子的高度计算为 0 的 100%。因此容器崩溃了。
另一方面,Firefox 会考虑图像的内在高度。
您可以在此处了解有关此问题的更多信息:Chrome / Safari not fill 100% height of flex parent
另请注意,在您的网格容器上,您有grid-auto-rows: 1fr
. 使用该fr
单元,您可以分配可用空间。但是,容器上没有定义高度。所以没有可用的空间来分发。
考虑通过在容器上设置高度来完全避免这个问题。
section {
display: grid;
grid-auto-rows: 1fr;
grid-template-columns: repeat(10, 1fr);
height: 75vh; /* for demo */
}
img {
border: 1px solid red;
width: 100%;
height: 100%;
object-fit: cover;
}
.image-1 {
grid-column: 4 / span 4;
grid-row: 1 / span 4;
}
.image-2 {
grid-column: 1 / span 4;
grid-row: 3 / span 4;
}
.image-3 {
grid-column: 4 / span 4;
grid-row: 5 / span 3;
}
.image-4 {
grid-column: 6 / span 4;
grid-row: 3 / span 4;
}
body {
width: 1024px;
margin: 40px auto;
}
<section>
<img src="https://via.placeholder.com/200x150" alt="1" class="image-1">
<img src="https://via.placeholder.com/350x350" alt="2" class="image-2">
<img src="https://via.placeholder.com/150x150" alt="3" class="image-3">
<img src="https://via.placeholder.com/350x250" alt="4" class="image-4">
</section>
推荐阅读
- c# - bin\Debug\netcoreapp2.1\bin 不存在
- cloud - 从谷歌云获取数据到对话流
- javascript - 如何在 JS 中使用 DOM 插入 HTML 标头以返回 JSON 文件?
- javascript - Angular 6 多个 @input() 级别
- winapi - GetBestRoute 函数如何工作?
- mysql - 在视图 mysql 中自动增加 id
- javascript - 根据特定字段从 JSON 对象数组中添加字段
- spring - Spring 注入:@MockBean @Repository 未注入
- c# - C# 从 BackgroundWorker 更新 DataGridView
- javascript - Angular 2在没有覆盖ngform时检查有效性