FlexBox เป็นคอนเทนเนอร์ที่จัดวางรายการในทิศทางเดียว โดยสามารถปรับขนาด ตัดข้อความ จัดแนว และกระจายพื้นที่ระหว่างรายการต่างๆ เพื่อเติมพื้นที่ว่างที่มีอยู่ให้เหมาะสมที่สุด เลย์เอาต์นี้มีประโยชน์สำหรับรายการที่มีขนาดแตกต่างกันและสำหรับการปรับขนาดรายการเมื่อพื้นที่ว่างมีการเปลี่ยนแปลง
FlexBox ช่วยให้คุณทำสิ่งต่อไปนี้ได้
- ควบคุมวิธีที่รายการขยายและหดเพื่อเติมพื้นที่ว่างที่มีอยู่
- ตัดรายการไปยังแถวหรือคอลัมน์ใหม่เมื่อมีพื้นที่ไม่เพียงพอ
- กระจายพื้นที่ว่างระหว่างรายการโดยใช้ค่าที่กำหนดล่วงหน้าที่สะดวก
กรณีที่ควรใช้ FlexBox
โดยปกติแล้ว FlexBox จะใช้เพื่อแสดงรายการจำนวนเล็กน้อยภายในเลย์เอาต์หน้าจอโดยรวม สำหรับเลย์เอาต์หน้าจอโดยรวม Grid มักจะเป็นตัวเลือกที่ดีกว่า FlexBox ไม่รองรับการโหลดแบบ Lazy Loading ของรายการ หากต้องการแสดงรายการจำนวนมาก ให้ใช้รายการและตารางกริดแบบ Lazy หากต้องการรวมรายการ ให้ใช้ FlexBox แทน FlowRow และ FlowColumn
คำศัพท์และแนวคิด
FlexBox จะจัดวางรายการในบรรทัดแนวนอนหรือแนวตั้ง ทิศทางของเส้นเหล่านี้จะสร้างแกนหลัก ส่วนแกนที่ตั้งฉาก 90 องศากับแกนหลักคือแกนไขว้ ความยาวของ FlexBox ตามแกนหลักเรียกว่าขนาดหลัก ความยาวแกนไขว้ที่สอดคล้องกันเรียกว่าขนาดไขว้ ขนาดและแกนเหล่านี้เป็นพื้นฐานของลักษณะการทำงานของ FlexBox
FlexBox เป็น Row
FlexBox เป็น Columnใช้พร็อพเพอร์ตี้
คุณใช้พร็อพเพอร์ตี้ FlexBox ได้ 2 วิธีดังนี้
- ไปยังคอนเทนเนอร์
FlexBoxโดยใช้FlexBox(config) - ไปยังรายการภายใน
FlexBoxโดยใช้Modifier.flex
พร็อพเพอร์ตี้คอนเทนเนอร์ ( |
ลักษณะของรายการ ( |
|---|---|
ดูข้อมูลเพิ่มเติมเกี่ยวกับพร็อพเพอร์ตี้เหล่านี้ได้ที่ตั้งค่าลักษณะการทำงานของคอนเทนเนอร์ |
ดูข้อมูลเพิ่มเติมเกี่ยวกับพร็อพเพอร์ตี้เหล่านี้ได้ที่ตั้งค่าลักษณะการทำงานของรายการ |
ทำความเข้าใจอัลกอริทึมเลย์เอาต์ของ FlexBox
หนึ่งในฟีเจอร์อันทรงประสิทธิภาพของ FlexBox ก็คือ ความสามารถในการปรับขนาดองค์ประกอบย่อยให้พอดีกับพื้นที่ที่มีอยู่มากที่สุด การทำความเข้าใจวิธีที่ FlexBox ทำเช่นนี้จะช่วยให้คุณตั้งค่าพร็อพเพอร์ตี้ FlexBox เพื่อเพิ่มประสิทธิภาพ UI สำหรับขนาดที่เป็นไปได้ทั้งหมด
อัลกอริทึมเลย์เอาต์ของ FlexBox ทำงานดังนี้
คำนวณขนาดฐานขององค์ประกอบย่อย: ใช้ค่า
basisขององค์ประกอบย่อยเพื่อคำนวณขนาดเริ่มต้นตามแกนหลักก่อนที่จะกระจายพื้นที่เพิ่มเติมจัดเรียงรายการย่อย: จัดเรียงรายการย่อยตามค่า
orderหากมีสร้างบรรทัด: สำหรับองค์ประกอบย่อยแต่ละรายการ ให้ตรวจสอบว่าขนาดเริ่มต้นบวกกับ
gapจะพอดีกับพื้นที่ที่เหลือในบรรทัดปัจจุบันหรือไม่ หากมี ให้วางเด็กคนนี้ไว้ในแถว หากไม่ ให้วางรายการไว้ในบรรทัดใหม่หากเปิดใช้การตัดข้อความ หรือวางรายการไว้ในบรรทัดปัจจุบันซึ่งจะล้น (ขอบของคอนเทนเนอร์จะบดบังรายการบางส่วน)จัดแนวหรือปรับขนาดรายการในแกนหลัก: สำหรับแต่ละบรรทัด ให้กระจายพื้นที่ว่างไปยังหรือระหว่างรายการต่างๆ โดยปรับขนาดหรือจัดแนวรายการเหล่านั้น
จัดแนวหรือปรับขนาดรายการในแกนขวาง: สำหรับแต่ละบรรทัด ให้กระจายพื้นที่ว่างเพิ่มเติมไปยังหรือระหว่างรายการและบรรทัดโดยยืดหรือจัดแนว
เมื่อคุณคุ้นเคยกับแนวคิดของ FlexBox แล้ว โปรดดูหัวข้อเริ่มต้นใช้งานเพื่อสร้าง FlexBox พื้นฐาน