【发布时间】:2019-12-14 05:47:08
【问题描述】:
我正在尝试用 CSS 制作卡片组件,我认为这很简单,但我在 CSS 网格属性方面遇到了困难。另外,在这种情况下,我不能使用 flexbox,原因不值得解释 :)
布局非常简单:左侧是图像,右侧是一些文本。
<div class="card">
<figure card="card__img">
<img src="https://via.placeholder.com/600" width="600" height="600">
</figure>
<p class="card__txt">Lorem ipsum tempus fugit.</p>
</div>
这里是棘手的部分:图片是可选的,并且当出现时,它的宽度不应超过 50%。
当我为图像设置最大宽度时,如果图像不存在,则文本不会扩展。
这是我目前拥有的:
.card {
display: grid;
column-gap: 1em;
grid-template-columns: minmax(0, 50%) 1fr;
}
我试图弄乱宽度grid-template-columns,但我对它还不够熟悉。
您可以在此 Codepen 上看到它的实际效果:https://codepen.io/tcharlss/pen/gVvOjY
这里是sn-p的代码:
/* Layout stuff I'm strugling width*/
.card {
display: grid;
column-gap: 1em;
grid-template-columns: minmax(0, 50%) 1fr;
}
/* Decoration & miscellaneous */
body { font-family: sans; }
.container {
display: grid;
column-gap: 1em;
grid-template-columns: repeat(auto-fill, 35em);
}
.container + .container {
margin-top: 2em;
}
.explication {
color: hsl(230, 100%, 45%);
font-family: monospace;
font-style: italic;
}
.card {
border: 1px solid hsl(230, 100%, 45%);
min-height: 18em;
}
.card__txt {
background-color: hsl(0, 0%, 90%);
margin: 0;
}
figure {
margin: 0;
}
img {
max-width: 100%;
height: auto;
}
<div class="container">
<div class="col">
<p class="explication">If an image is present, it can't be wider then 50%</p>
<div class="card">
<figure card="card__img">
<img src="https://via.placeholder.com/600" width="600" height="600">
</figure>
<p class="card__txt">Lorem ipsum tempus fugit. Aut rerum nostrum qui adipisci est aut. Est error omnis sit velit.</p>
</div>
</div>
<div class="col">
<p class="explication">Without image, the text should expand to fill all the available space</p>
<div class="card">
<p class="card__txt">Lorem ipsum tempus fugit. Aut rerum nostrum qui adipisci est aut. Est error omnis sit velit.</p>
</div>
</div>
</div>
【问题讨论】:
-
在您的代码中,在
figure元素中,修复属性名称。它不会解决问题,但也无济于事。