CSS 用于对齐图像和文本的网格或弹性框
CSS grid or flexbox for aligning image and text
我想确保列中的图像和文本与图像底部和文本顶部对齐。有谁知道如何在不明确将 .c-grid__content
的高度设置为 200px 的情况下实现这一点?
现在我正在使用 flexbox。也许 css-grid 是答案?
请看一下这个代码笔:https://codepen.io/simoncoudeville/pen/VMZmVa?editors=1100#0。
p {
margin-bottom: 10px;
font-family: sans-serif;
}
img {
max-width: 100%;
margin-bottom: 10px;
}
.c-grid {
padding: 40px 20px;
display: flex;
}
.c-grid__item {
flex-basis: 100%;
margin: 0 20px;
display: flex;
flex-wrap: wrap;
flex-direction: column;
justify-content: flex-end;
}
.c-grid__picture {
width: 100%;
}
.c-grid__content {
display: flex;
flex-direction: column;
}
<div class="c-grid">
<article class="c-grid__item">
<div class="c-grid__picture">
<img src="http://via.placeholder.com/400x200">
</div>
<div class="c-grid__content">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolore ratione commodi corrupti itaque sed architecto!</p>
</div>
</article>
<article class="c-grid__item">
<div class="c-grid__picture">
<img src="http://via.placeholder.com/400x600">
</div>
<div class="c-grid__content">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolore ratione commodi corrupti itaque sed architecto! Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
<article class="c-grid__item">
<div class="c-grid__picture">
<img src="http://via.placeholder.com/400x400">
</div>
<div class="c-grid__content">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolore ratione commodi corrupti itaque sed architecto! </p>
</div>
</article>
</div>
查看您的代码笔,这似乎不需要响应式设计。如果我的假设是正确的,为什么不使用 table 按行分隔图像和文本,垂直对齐底部的顶行和顶部的底行?
它会将重要的 CSS 限制为几行:
.c-grid__picture {
vertical-align: baseline;
}
.c-grid__content {
vertical-align: top;
}
这里有一个例子 JSFiddle
我能够将 .c-grid__content
的 flex-basis
设置为 0。
.c-grid__content {
...
flex-basis: 0;
}
https://codepen.io/antibland/pen/WZrXpw?editors=1100
在这种情况下,flexbox 容器上的 Align-items: baseline
似乎可以解决问题。在此处查看解决方案:https://codepen.io/simoncoudeville/pen/yzOvmN?editors=1100
我想确保列中的图像和文本与图像底部和文本顶部对齐。有谁知道如何在不明确将 .c-grid__content
的高度设置为 200px 的情况下实现这一点?
现在我正在使用 flexbox。也许 css-grid 是答案?
请看一下这个代码笔:https://codepen.io/simoncoudeville/pen/VMZmVa?editors=1100#0。
p {
margin-bottom: 10px;
font-family: sans-serif;
}
img {
max-width: 100%;
margin-bottom: 10px;
}
.c-grid {
padding: 40px 20px;
display: flex;
}
.c-grid__item {
flex-basis: 100%;
margin: 0 20px;
display: flex;
flex-wrap: wrap;
flex-direction: column;
justify-content: flex-end;
}
.c-grid__picture {
width: 100%;
}
.c-grid__content {
display: flex;
flex-direction: column;
}
<div class="c-grid">
<article class="c-grid__item">
<div class="c-grid__picture">
<img src="http://via.placeholder.com/400x200">
</div>
<div class="c-grid__content">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolore ratione commodi corrupti itaque sed architecto!</p>
</div>
</article>
<article class="c-grid__item">
<div class="c-grid__picture">
<img src="http://via.placeholder.com/400x600">
</div>
<div class="c-grid__content">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolore ratione commodi corrupti itaque sed architecto! Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
<article class="c-grid__item">
<div class="c-grid__picture">
<img src="http://via.placeholder.com/400x400">
</div>
<div class="c-grid__content">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolore ratione commodi corrupti itaque sed architecto! </p>
</div>
</article>
</div>
查看您的代码笔,这似乎不需要响应式设计。如果我的假设是正确的,为什么不使用 table 按行分隔图像和文本,垂直对齐底部的顶行和顶部的底行?
它会将重要的 CSS 限制为几行:
.c-grid__picture {
vertical-align: baseline;
}
.c-grid__content {
vertical-align: top;
}
这里有一个例子 JSFiddle
我能够将 .c-grid__content
的 flex-basis
设置为 0。
.c-grid__content {
...
flex-basis: 0;
}
https://codepen.io/antibland/pen/WZrXpw?editors=1100
Align-items: baseline
似乎可以解决问题。在此处查看解决方案:https://codepen.io/simoncoudeville/pen/yzOvmN?editors=1100