⊗mkSpFxGr 86 of 128 menu

ความละโมบขององค์ประกอบ Flex ใน CSS

สมมติว่าตอนนี้เรามีบล็อก flex สองบล็อก ที่จัดเรียงในแถว บล็อกเหล่านี้มีค่าความกว้าง ที่ 100px และสำหรับผู้ปกครอง - 300px:

<div class="parent"> <div class="child">1</div> <div class="child">2</div> </div> .parent { display: flex; width: 300px; height: 200px; border: 1px solid red; } .child { width: 100px; height: 100px; border: 1px solid green; }

:

ดังที่คุณเห็น ความกว้างรวมขององค์ประกอบของเรา น้อยกว่าความกว้างของคอนเทนเนอร์ผู้ปกครอง ดังนั้นจึงมีพื้นที่ว่างเหลืออยู่ทางด้านขวา

หากต้องการ พื้นที่ว่างนี้สามารถ แบ่งตามสัดส่วนระหว่างองค์ประกอบของเราได้ ทำได้โดยใช้คุณสมบัติ flex-grow ที่กำหนดให้กับองค์ประกอบ flex ค่าของ คุณสมบัตินี้คือตัวเลขที่ไม่มีหน่วย

ลองมาดูในทางปฏิบัติว่าคุณสมบัตินี้ทำงานอย่างไร

ตัวอย่าง

ตอนนี้เรามีบล็อก flex สองบล็อกที่มีความกว้าง 100px ความกว้างรวมขององค์ประกอบ 200px และความกว้างของคอนเทนเนอร์ผู้ปกครอง - 300px ปรากฏว่ามีพื้นที่ว่างเหลือ 100px

หากองค์ประกอบไม่มี flex-grow เราก็จะเห็นพื้นที่ว่างนี้ แต่หากกำหนดให้ พื้นที่ว่างขององค์ประกอบ จะมากกว่าที่กำหนด - พวกมันจะแบ่งพื้นที่ว่าง ระหว่างกันตามสัดส่วน และเพิ่มเข้าไปในความกว้างของตัวเอง

สมมติตัวอย่างเช่น องค์ประกอบแรกมี flex-grow เท่ากับ 1 และองค์ประกอบที่สอง - 3 มาลอง คำนวณดูว่าแต่ละองค์ประกอบจะได้พื้นที่ว่างส่วนเท่าไร

เริ่มต้นต้องหาจำนวนรวม ของหน่วย flex-grow ขององค์ประกอบทั้งหมดของเรา องค์ประกอบแรกมีค่า 1 และ องค์ประกอบที่สอง - 3 นั่นหมายความว่าโดยรวม มีค่า 4

ทีนี้ลองหารพื้นที่ว่าง 100px ด้วย 4 และจะได้ว่า 25px เป็น หนึ่งหน่วยของ flex-grow ปรากฏว่า องค์ประกอบแรกจะเพิ่มหนึ่งหน่วย ของ flex-grow นั่นคือ 25px และ องค์ประกอบที่สอง - สามหน่วย นั่น คือ 75px

ความกว้างขององค์ประกอบแรกจะได้ 125px และองค์ประกอบที่สอง - 175px:

<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> </div> .parent { display: flex; width: 300px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 3; }

:

ตัวอย่าง

สมมติว่าความกว้างของคอนเทนเนอร์ผู้ปกครองเท่ากับ 400px ความกว้างขององค์ประกอบแรก 200px และความกว้าง ขององค์ประกอบที่สอง - 100px ปรากฏว่า พื้นที่ว่างยังคง เท่ากับ 100px

ลองกำหนด flex-grow ให้กับแต่ละองค์ประกอบ เท่ากับ 1 โดยรวมจะได้ 2 นั่นคือ 100px ของพื้นที่ว่าง ต้องหารด้วย 2 ปรากฏว่า 50px เป็นของ หนึ่งหน่วยความละโมบ

เนื่องจากองค์ประกอบทั้งหมดมีค่า flex-grow เท่ากัน ทุกองค์ประกอบจะเพิ่ม ค่าเท่ากันคือ 50px นั่นหมายความว่า องค์ประกอบแรกจะกลายเป็น 250px และ องค์ประกอบที่สองจะกลายเป็น 150px:

<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> </div> .parent { display: flex; width: 400px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 200px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 1; }

:

ตัวอย่าง

สมมติว่าความกว้างของคอนเทนเนอร์ผู้ปกครองเท่ากับ 400px อีกครั้ง ความกว้างขององค์ประกอบแรก 200px และความกว้าง ขององค์ประกอบที่สอง - 100px

คราวนี้ลองกำหนดให้องค์ประกอบแรก flex-grow เป็นค่า 3 และองค์ประกอบที่สอง - เป็นค่า 1 ปรากฏว่าความละโมบ รวมเท่ากับ 4 ดังนั้นหนึ่งหน่วย ของความละโมบเท่ากับ 100px / 4 = 25px

องค์ประกอบแรกจะเพิ่ม 75px และกลายเป็น 275px และองค์ประกอบที่สอง - 25px มันจะกลายเป็น 125px:

<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> </div> .parent { display: flex; width: 400px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 200px; flex-grow: 3; } .elem2 { width: 100px; flex-grow: 1; }

:

งานฝึกปฏิบัติ

ในงานทั้งหมดด้านล่าง คุณจะได้รับ โค้ดบางส่วนที่มีองค์ประกอบ flex ที่มีความกว้างและ flex-grow จากโค้ดที่ให้มา ให้คำนวณว่าองค์ประกอบแต่ละอันจะมี ขนาดเท่าใด จากนั้นรันโค้ด และตรวจสอบการคำนวณของคุณโดยวัด ความกว้างจริงขององค์ประกอบ

<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> <div class="child elem3">3</div> </div> .parent { display: flex; width: 500px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 200px; flex-grow: 3; } .elem2 { width: 100px; flex-grow: 1; } .elem3 { width: 100px; flex-grow: 1; }
<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> <div class="child elem3">3</div> </div> .parent { display: flex; width: 700px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 2; } .elem3 { width: 200px; flex-grow: 3; }
<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> <div class="child elem3">3</div> </div> .parent { display: flex; width: 500px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 1; } .elem3 { width: 100px; flex-grow: 1; }
<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> <div class="child elem3">3</div> <div class="child elem4">4</div> </div> .parent { display: flex; width: 1000px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 200px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 2; } .elem3 { width: 100px; flex-grow: 4; } .elem4 { width: 100px; flex-grow: 3; }
ไทย
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣTürkmenTürkçeЎзбекOʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ