ขนาดขององค์ประกอบเฟล็กซ์ตามแนวแกนหลัก
คุณสมบัติ width และ height กำหนด
ความกว้างและความสูงขององค์ประกอบเฟล็กซ์โดยไม่ขึ้นกับ
ทิศทางของแกน นั่นคือ หากแกนอยู่ในแนวนอน
width จะกำหนดความกว้าง แต่
หากแกนอยู่ในแนวตั้ง width ก็ยังคง
กำหนดความกว้างเหมือนเดิม บางครั้งพฤติกรรมเช่นนี้
ไม่สะดวก
ในโมเดลเฟล็กซ์มีคุณสมบัติพิเศษ
flex-basis ซึ่งกำหนดขนาด
ขององค์ประกอบตามแนวแกนหลัก นั่นหมายความว่า
หากแกนหลักอยู่ในแนวนอน - คุณสมบัตินี้
จะกำหนดความกว้างขององค์ประกอบ และหากอยู่ในแนวตั้ง
- ก็จะกำหนดความสูง คุณสมบัตินี้ต้องกำหนดให้
กับองค์ประกอบเฟล็กซ์เอง ไม่ใช่กับผู้ปกครองของมัน มาดู
ตัวอย่างกัน
สมมติว่าแกนหลักอยู่ในแนวนอน และ
flex-basis มีค่าเป็น 50px
ในกรณีนี้ความกว้างขององค์ประกอบ
จะเป็น 50px:
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
</div>
.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:
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
</div>
.parent {
display: flex;
flex-direction: column; /* แกนอยู่ในแนวตั้ง */
width: 300px;
height: 300px;
border: 1px solid red;
}
.child {
flex-basis: 50px;
border: 1px solid green;
}
:
สร้างบล็อกเฟล็กซ์ 5 บล็อก กำหนดให้พวกมัน
มีความกว้างตามแนวแกนหลักที่ 100px
สังเกตพฤติกรรมของบล็อก
ตามแนวแกนต่างๆ
หากแกนอยู่ในแนวนอนและบล็อกถูกกำหนดคุณสมบัติ
flex-basis และคุณสมบัติ
width พร้อมกัน flex-basis จะ
มีความสำคัญมากกว่า ทดสอบดู
หากแกนอยู่ในแนวตั้งและบล็อกถูกกำหนดคุณสมบัติ
flex-basis และคุณสมบัติ
height พร้อมกัน flex-basis จะ
มีความสำคัญมากกว่า ทดสอบดู