ขนาดขององค์ประกอบเฟล็กซ์ตามแนวแกนหลัก

คุณสมบัติ width และ height กำหนด ความกว้างและความสูงขององค์ประกอบเฟล็กซ์โดยไม่ขึ้นกับ ทิศทางของแกน นั่นคือ หากแกนอยู่ในแนวนอน width จะกำหนดความกว้าง แต่ หากแกนอยู่ในแนวตั้ง width ก็ยังคง กำหนดความกว้างเหมือนเดิม บางครั้งพฤติกรรมเช่นนี้ ไม่สะดวก

ในโมเดลเฟล็กซ์มีคุณสมบัติพิเศษ flex-basis ซึ่งกำหนดขนาด ขององค์ประกอบตามแนวแกนหลัก นั่นหมายความว่า หากแกนหลักอยู่ในแนวนอน - คุณสมบัตินี้ จะกำหนดความกว้างขององค์ประกอบ และหากอยู่ในแนวตั้ง - ก็จะกำหนดความสูง คุณสมบัตินี้ต้องกำหนดให้ กับองค์ประกอบเฟล็กซ์เอง ไม่ใช่กับผู้ปกครองของมัน มาดู ตัวอย่างกัน

สมมติว่าแกนหลักอยู่ในแนวนอน และ flex-basis มีค่าเป็น 50px ในกรณีนี้ความกว้างขององค์ประกอบ จะเป็น 50px:

html<div class="parent">
  <div class="child">1</div>
  <div class="child">2</div>
  <div class="child">3</div>
</div>
css.parent {
  display: flex;
  flex-direction: row; /* แกนอยู่ในแนวนอน */
  width: 300px;
  height: 300px;
  border: 1px solid red;
}
.child {
  flex-basis: 50px;   /* ขนาดขององค์ประกอบ */
  border: 1px solid green;
}

Результат:

ทีนี้ลองเปลี่ยนทิศทางของแกนโดยไม่เปลี่ยนค่า ของคุณสมบัติ flex-basis ในกรณีนี้ ความสูงขององค์ประกอบจะกลายเป็น 50px:

html<div class="parent">
  <div class="child">1</div>
  <div class="child">2</div>
  <div class="child">3</div>
</div>
css.parent {
  display: flex;
  flex-direction: column; /* แกนอยู่ในแนวตั้ง */
  width: 300px;
  height: 300px;
  border: 1px solid red;
}
.child {
  flex-basis: 50px;
  border: 1px solid green;
}

Результат:

Задание 1

สร้างบล็อกเฟล็กซ์ 5 บล็อก กำหนดให้พวกมัน มีความกว้างตามแนวแกนหลักที่ 100px สังเกตพฤติกรรมของบล็อก ตามแนวแกนต่างๆ

Задание 2

หากแกนอยู่ในแนวนอนและบล็อกถูกกำหนดคุณสมบัติ flex-basis และคุณสมบัติ width พร้อมกัน flex-basis จะ มีความสำคัญมากกว่า ทดสอบดู

Задание 3

หากแกนอยู่ในแนวตั้งและบล็อกถูกกำหนดคุณสมบัติ flex-basis และคุณสมบัติ height พร้อมกัน flex-basis จะ มีความสำคัญมากกว่า ทดสอบดู