204 of 313 menu

คุณสมบัติ flex-grow

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

ตัวอย่างเช่น หากบล็อก flex ทั้งหมดภายในคอนเทนเนอร์ flex มี flex-grow:1 พวกมันจะมีขนาด เท่ากัน หากหนึ่งในนั้นมี flex-grow:2 มันจะใหญ่เป็น 2 เท่า เมื่อเทียบกับ บล็อกอื่นทั้งหมด

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

ใช้กับ: บล็อก flex เฉพาะ

คุณสมบัตินี้รวมอยู่เป็นส่วนหนึ่งของคุณสมบัติแบบย่อ flex

ไวยากรณ์

selector { flex-grow: positive number; }

ค่าเริ่มต้น: 0

ตัวอย่าง

ตอนนี้เรามีบล็อก flex สองบล็อกที่มีความกว้าง 100px ความกว้างรวมขององค์ประกอบ 200px ส่วนความกว้างของ parent คือ 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; }

:

ตัวอย่าง

ให้ความกว้างของ parent เท่ากับ 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; }

:

ตัวอย่าง

ให้ความกว้างของ parent เท่ากับ 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-direction
    ซึ่งกำหนดทิศทางของแกนของบล็อก flex
  • คุณสมบัติ justify-content
    ซึ่งกำหนดการจัดตำแหน่งตามแกนหลัก
  • คุณสมบัติ align-items
    ซึ่งกำหนดการจัดตำแหน่งตามแกนขวาง
  • คุณสมบัติ flex-wrap
    ซึ่งกำหนดความหลายบรรทัดของบล็อก flex
  • คุณสมบัติ flex-flow
    คำสั่งย่อสำหรับ flex-direction และ flex-wrap
  • คุณสมบัติ order
    ซึ่งกำหนดลำดับของบล็อก flex
  • คุณสมบัติ align-self
    ซึ่งกำหนดการจัดตำแหน่งของบล็อกเดียว
  • คุณสมบัติ flex-basis
    ซึ่งกำหนดขนาดของบล็อก flex เฉพาะ
  • คุณสมบัติ flex-shrink
    ซึ่งกำหนดความหดตัวของบล็อก flex
  • คุณสมบัติ flex
    คำสั่งย่อสำหรับ flex-grow, flex-shrink และ flex-basis
ไทย
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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ