我正在尝试使用css网格创建一个简单的布局(我认为),但是我找不到解决方法。
基本上,我想并排放置图像和文本。如果包含网格的宽度太小,则文本会移到图像下方,并且两者的宽度均为100%。
使用grid-template-columns: repeat(autofit, minmax(300px, 1fr))
:Import-Csv
问题是当图像和文本并排时,我希望文本的大小是原来的两倍。我可以使用grid-template-columns: minmax(200px, 1fr) minmax(400px, 2fr)
来做到这一点,但是文本永远不会在图像下方,而且我溢出了。
如果我在文字元素上使用grid-template-columns: repeat(autofit, minmax(200px, 1fr))
和grid-column: span 2
,我认为我可以做到,但是一旦文字出现,我就必须在图像上应用相同的span 2走到下面。
是否可以在CSS中定位网格行的最后一个元素?
我知道我可以使用媒体查询来更改grid-template-columns
,但是我会尽可能使用纯CSS。基本上,是否有可能在网格中明确定义列,并且如果没有合适的位置使这些列消失?
还是我错过的另一种方式?
答案 0 :(得分:1)
使用auto-fit
或auto-fill
,网格的所有列将始终具有相同的大小,因为浏览器将平均分配可用空间。使用网格,您将必须使用媒体查询来执行所需的操作,但有关此事……
我知道我可以使用媒体查询来更改grid-template-columns,但是我宁愿使用纯CSS。
...媒体查询是纯CSS,因此您不必担心。
有一个摘要:
.container {
display: grid;
grid-template-columns: minmax(300px, 1fr) 2fr;
grid-gap: 24px;
}
@media screen and (max-width: 768px) {
.container {
grid-template-columns: 1fr;
}
}
.img {
width: 100%;
}
<div class="container">
<img class="img" src="http://via.placeholder.com/350x150">
<div class="text">
Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum
</div>
</div>
答案 1 :(得分:0)
使用Flexbox代替Grid将解决您想要实现的目标。
使用flexbox可以通过定义flex-grow
来指定每个元素应如何占用空间。
裁判:Flexbox Comprehensive guide
我在这里创建了一个简单的示例:
.flex-me{
display: flex;
flex-flow: wrap;
}
.flex-me .thumb img{
width: 100%;
}
.flex-me p{
flex: 2;
}
这是什么:
flex: 2
的两倍空间flex-flow: wrap