FlexBox เป็นคอนเทนเนอร์ที่จัดวางรายการในทิศทางเดียว โดยสามารถปรับขนาด ห่อหุ้ม จัดแนว และกระจายพื้นที่ระหว่างรายการเพื่อเติมพื้นที่ว่างที่มีอยู่ให้ได้ประสิทธิภาพสูงสุด ซึ่งเป็นเลย์เอาต์ที่มีประโยชน์สำหรับรายการที่มีขนาดแตกต่างกันและสำหรับการปรับขนาดรายการเมื่อพื้นที่ว่างที่มีอยู่เปลี่ยนแปลง
ด้วย FlexBox คุณจะทำสิ่งต่อไปนี้ได้
- ควบคุมวิธีที่รายการขยายและย่อเพื่อเติมพื้นที่ว่างที่มีอยู่
- ห่อหุ้มรายการลงในแถวหรือคอลัมน์ใหม่เมื่อมีพื้นที่ไม่เพียงพอสำหรับรายการ
- กระจายพื้นที่ว่างเพิ่มเติมระหว่างรายการโดยใช้ค่าที่ตั้งไว้ล่วงหน้าที่สะดวก
กรณีที่ควรใช้ FlexBox
โดยปกติแล้ว FlexBox จะใช้เพื่อแสดงรายการจำนวนเล็กน้อย ภายใน เลย์เอาต์หน้าจอโดยรวม สำหรับเลย์เอาต์หน้าจอโดยรวม Grid มักจะเป็นตัวเลือกที่ดีกว่า FlexBox ไม่รองรับการโหลดรายการแบบ Lazy Loading หากต้องการแสดงรายการจำนวนมาก ให้ใช้ Lazy List และ Grid หากต้องการรวมรายการ ให้ใช้ 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 พื้นฐาน