ประเด็นหลักที่แสดงที่นี่คือการใช้ justify-content: space-between
ซึ่งจะวางองค์ประกอบย่อยรายการแรกและสุดท้ายไว้ที่ขอบของช่องที่ล้อมรอบด้วยพื้นที่ที่เหลือจะกระจายให้องค์ประกอบต่างๆ อย่างเท่าๆ กัน สำหรับการ์ดเหล่านี้ จะมีการวางในโหมดการแสดงผล Flexbox โดยตั้งทิศทางเป็นคอลัมน์โดยใช้ flex-direction: column
ซึ่งจะวางชื่อ คำอธิบาย และบล็อกรูปภาพไว้ในคอลัมน์แนวตั้งภายในการ์ดหลัก จากนั้นใช้ justify-content: space-between
เพื่อตรึงองค์ประกอบแรก (ชื่อ) และสุดท้าย (บล็อกรูปภาพ) ที่ขอบของคอนเทนเนอร์ Flex และข้อความอธิบายที่คั่นระหว่างองค์ประกอบเหล่านั้นจะวางโดยมีระยะห่างเท่ากันกับปลายทางแต่ละจุด
.container {
display: flex;
flex-direction: column;
justify-content: space-between;
}
<div class="container">
<div class="card">
<h3>Title - Card 1</h3>
<p contenteditable>Medium length description with a few more words here.</p>
<div class="visual"></div>
</div>
<div class="card">
<h3>Title - Card 2</h3>
<p contenteditable>Long Description. Lorem ipsum dolor sit, amet consectetur adipisicing elit.</p>
<div class="visual"></div>
</div>
<div class="card">
<h3>Title - Card 3</h3>
<p contenteditable>Short Description.</p>
<div class="visual"></div>
</div>
</div>
.container {
display: grid;
grid-gap: 1rem;
grid-template-columns: repeat(3, 1fr);
}
.visual {
height: 100px;
width: 100%;
}
.card {
display: flex;
flex-direction: column;
padding: 1rem;
justify-content: space-between;
}
h3 {
margin: 0
}