ปัญหาการจัดเรียงแบบกริดด้วย Flexbox ใน CSS

ปัญหาที่หนึ่งของการจัดเรียงแบบกริดนั้นค่อนข้างชัดเจนตั้งแต่แรก - นั่นคือการที่ผู้ปกครอง (parent) ต้องกำหนดความสูงอย่างชัดเจนนั้นไม่สะดวกเลย เพราะอาจมีกรณีที่จำนวนบล็อกเปลี่ยนแปลงแบบไดนามิก จำนวนของบล็อกอาจน้อยกว่าหรือมากกว่า 9

ส่วนปัญหาที่สองจะเกิดขึ้น หากจำนวนบล็อกทำให้แถวสุดท้ายมีบล็อกไม่ครบ ในกรณีนี้แถวสุดท้ายจะดูแย่มาก:

html<div class="parent">
  <div class="child">1</div>
  <div class="child">2</div>
  <div class="child">3</div>
  <div class="child">4</div>
  <div class="child">5</div>
  <div class="child">6</div>
  <div class="child">7</div>
  <div class="child">8</div>
</div>
css.parent {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  flex-wrap: wrap;
  width: 320px;
  border: 1px solid red;
}
.child {
  box-sizing: border-box;
  width: 100px;
  height: 100px;
  border: 1px solid green;
}

Результат:

ปรากฎว่าแม้แต่ในแนวนอน ค่า space-between ก็ทำงานได้ไม่ดีในกรณีของเรา

สรุป: หากจำนวนของเอลิเมนต์ลูก (descendants) ของคุณ คงที่เสมอและจัดเรียงในผู้ปกครองได้พอดี การจัดเรียงแบบกริดด้วย space-between ก็เป็นสิ่งที่ค่อนข้างสะดวก แต่ในกรณีอื่น ๆ คุณจะต้องหาวิธีอื่น

Задание 1

มี 12 เอลิเมนต์ ให้สร้างการจัดเรียงแบบกริด แถวละ 4 เอลิเมนต์ โดยแต่ละเอลิเมนต์กว้าง 100px และมีระยะห่างระหว่างเอลิเมนต์ 20px

Задание 2

มี 12 เอลิเมนต์ ให้สร้างการจัดเรียงแบบกริด แถวละ 3 เอลิเมนต์ โดยแต่ละเอลิเมนต์กว้าง 150px และมีระยะห่างระหว่างเอลิเมนต์ 10px