我需要显示一个方形图像的简单网格.我惊讶地发现,当图像是网格的直接子级时,它不能正常工作.图像变得太大,相互重叠.

.grid {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
}

img {
  aspect-ratio: 1 / 1;
  background-color: orange;
  object-fit: contain;
}
<div class="grid">
  <img src="https://placehold.co/1920x1080">
  <img src="https://placehold.co/1920x1080">
  <img src="https://placehold.co/1920x1080">
  <img src="https://placehold.co/1920x1080">
  <img src="https://placehold.co/1920x1080">
  <img src="https://placehold.co/1920x1080">
  <img src="https://placehold.co/1920x1080">
  <img src="https://placehold.co/1920x1080">
</div>

如果我应用width: 100%height: 100%img,它可以正常工作,但我试图理解为什么.

有没有其他方法来处理网格内部的图像大小?为什么他们需要明确的尺寸,而网格已经向他们提供了这样的指导?

推荐答案

为什么他们需要明确的尺寸,而网格已经向他们提供了这样的指导?

网格在哪里提供这些指令?这是不可能的.

你的规则grid-template-columns: repeat(auto-fit, minmax(400px, 1fr))设置了栏目.它不适用于这些列中的内容.

在不将width: 100%加到图像的情况下,它们计算出它们的固有大小,在本例中是1920x1080.

在HTML/CSS中的一般做法是,添加img { width: 100%; height: auto }以防止图像溢出其容器.

Html相关问答推荐

如何将grid—template—column应用于元素中的子元素

为什么使用Google字体的SVG徽标内的文本不能在网页上正确呈现?

Tumblr博客:如何修复提交页面和询问页面框列计数问题?

HTML表行悬停仅适用于偶数行

SVG动画只有在打开S开发工具的浏览器时才开始播放

带下划线的文本应该有延长的下划线,以使其图像悬停

`table>;的消失;tbody:nth子级(1)`HTML

CSS 伪类 Select 器未按预期工作

Swift WKUserContentController 和 WKScriptMessageHandler 设置不正确

将现有内容拆分为三列或部分

为什么我的 div 元素没有形成一个圆形时钟?

如何将 HTML DateTime 转换为 Golang Time 对象

CSS 随着内容宽度的增加而减少填充

如何制作一个空的网格模板行来填充剩余空间?

父背景仅在子元素中可见

悬停一个 div 时更改所有其他 div 上的字体 colored颜色

打开 Bootstrap 模式时无法获得模糊的背景

如何使具有两个元素的 div 行在移动设备中响应

沿文本对齐双引号

两个按钮范围滑块的 CSS