【发布时间】:2020-10-01 12:40:32
【问题描述】:
我正在尝试创建一个 3 列布局,其中:
- 左右列的宽度相等
- 左列为空
- 右栏包含图片标题(任意长度的文本)
- 中间列包含一张图片。图片的高度应为 100%(垂直填充视口)。
- 加载图片时不会发生布局变化(我在图片中添加了
width和height属性)。 - 我打算将它与
srcset和<picture>一起使用(也提供正确的图像尺寸和jpeg/webp)。我没有在演示中包含这个。
这是我的尝试:
body, figure {
padding: 0;
margin: 0;
}
figure {
max-width: 100vw;
max-height: 100vh;
display: grid;
grid-template-columns: 1fr min-content 1fr;
grid-template-rows: 1fr;
grid-gap: 1rem;
border: 2px solid red;
}
figure::before {
content: 'abc';
}
img {
height: 100%;
width: auto;
}
<figure>
<img src="http://placekitten.com/g/400/600" width="400" height="600" alt="cat">
<figcaption>This is a cat</figcaption>
</figure>
这就是它的样子(屏幕截图显示来自 Firefox 开发工具的网格轨迹):
问题是我用红笔画的这个空间。它使图像的网格单元太宽。我希望它看起来像这样:
这里的网格单元只有它需要的宽度才能适合图像(保持纵横比)。因此,图像水平居中。
我该怎么做?
【问题讨论】:
-
你会惊讶地看到 chrome 上的输出
-
哈哈,是的。好吧,我想我会看看我是否得到正确的答案,以及它在 Chrome 中是否看起来不错。为指出这一点而欢呼!
标签: html css responsive-design css-grid