menu

การทำงานกับ Flexbox ใน CSS

อย่างที่คุณทราบ มีคุณสมบัติ justify-content ที่จัดเรียงองค์ประกอบตามแกนหลัก

ยังมีคุณสมบัติ align-items ที่ จัดเรียงองค์ประกอบตามแกนตัด ลองมา เล่นกับมันสักหน่อย

สมมติว่าตอนนี้บล็อกเรียงเป็นแถว นั่นคือแกนตัดชี้ลง ด้วย align-items ให้ตั้งบล็อกเหล่านี้ ไว้ตรงกลาง:

<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; align-items: center; width: 300px; height: 300px; border: 1px solid red; } .child { box-sizing: border-box; width: 100px; height: 100px; border: 1px solid green; }

:

ตอนนี้ลองเพิ่มบล็อกมากขึ้น เพิ่ม ความสามารถในการขึ้นบรรทัดใหม่ด้วย flex-wrap เพิ่มความสูงขององค์ประกอบแม่จาก 300px เป็น 500px แล้วมาดูว่า align-items จะ ทำงานอย่างไรในกรณีที่มีหลายบรรทัดนี้:

<div class="parent"> <div class="child">1</div> <div class="child">2</div> <div class="child">3</div> <div class="child">4</div> <div class="child">5</div> <div class="child">6</div> <div class="child">7</div> <div class="child">8</div> <div class="child">9</div> </div> .parent { display: flex; flex-direction: row; align-items: center; flex-wrap: wrap; width: 300px; height: 500px; border: 1px solid red; } .child { box-sizing: border-box; width: 100px; height: 100px; border: 1px solid green; }

:

อย่างที่เราเห็น มีบางอย่างที่ไม่ค่อยอยู่กึ่งกลาง ดูเหมือนว่าแต่ละแถวจะอยู่กึ่งกลางเอง ตามพื้นที่ที่กำหนดให้ ลองทำให้ ทุกแถวเป็นเนื้อเดียวกันและอยู่ กึ่งกลางภายในองค์ประกอบแม่

สำหรับสิ่งนี้ควรใช้คุณสมบัติ align-content ซึ่งจำเป็นสำหรับข้อความหลายบรรทัด มาเขียนโค้ดของเราใหม่:

<div class="parent"> <div class="child">1</div> <div class="child">2</div> <div class="child">3</div> <div class="child">4</div> <div class="child">5</div> <div class="child">6</div> <div class="child">7</div> <div class="child">8</div> <div class="child">9</div> </div> .parent { display: flex; flex-direction: row; align-content: center; flex-wrap: wrap; width: 300px; height: 500px; border: 1px solid red; } .child { box-sizing: border-box; width: 100px; height: 100px; border: 1px solid green; }

:

คุณสมบัติ align-content รับค่า เช่นเดียวกับ align-items

ค่า space-between

ลองดูตัวอย่างค่า space-between กัน ตั้งค่าความสูง ให้องค์ประกอบแม่เป็น 320px เนื่องจากเรามีสาม แถว และมีสองระยะห่างระหว่าง แถว ดังนั้นระยะห่างเหล่านี้จะเท่ากันแต่ละอัน ที่ 10px:

<div class="parent"> <div class="child">1</div> <div class="child">2</div> <div class="child">3</div> <div class="child">4</div> <div class="child">5</div> <div class="child">6</div> <div class="child">7</div> <div class="child">8</div> <div class="child">9</div> </div> .parent { display: flex; flex-direction: row; align-content: space-between; flex-wrap: wrap; width: 300px; height: 320px; border: 1px solid red; } .child { box-sizing: border-box; width: 100px; height: 100px; border: 1px solid green; }

:

ค่า stretch

ลองทดสอบค่า stretch สำหรับสิ่งนี้ ให้ลบความสูงของลูกออก และตั้งค่า ความสูงขององค์ประกอบแม่เป็น 600px เพื่อ ให้เห็นผลชัดเจนขึ้น

<div class="parent"> <div class="child">1</div> <div class="child">2</div> <div class="child">3</div> <div class="child">4</div> <div class="child">5</div> <div class="child">6</div> <div class="child">7</div> <div class="child">8</div> <div class="child">9</div> </div> .parent { display: flex; flex-direction: row; align-content: stretch; flex-wrap: wrap; width: 300px; height: 600px; border: 1px solid red; } .child { box-sizing: border-box; width: 100px; border: 1px solid green; }

:

ค่า stretch สำหรับ align-content คือ ค่าเริ่มต้น ถ้าเราลบความสูง ของลูกออกทั้งหมด ลบคุณสมบัติ align-content แต่ปล่อยความสูงขององค์ประกอบแม่และ flex-wrap ไว้ - ทุกอย่างจะทำงานเหมือนเดิม:

<div class="parent"> <div class="child">1</div> <div class="child">2</div> <div class="child">3</div> <div class="child">4</div> <div class="child">5</div> <div class="child">6</div> <div class="child">7</div> <div class="child">8</div> <div class="child">9</div> </div> .parent { display: flex; flex-direction: row; flex-wrap: wrap; width: 300px; height: 600px; border: 1px solid red; } .child { box-sizing: border-box; width: 100px; border: 1px solid green; }

:

แต่ถ้าเอา flex-wrap ออกด้วย - ทุกอย่างจะกลายเป็นบรรทัดเดียว:

<div class="parent"> <div class="child">1</div> <div class="child">2</div> <div class="child">3</div> <div class="child">4</div> <div class="child">5</div> <div class="child">6</div> <div class="child">7</div> <div class="child">8</div> <div class="child">9</div> </div> .parent { display: flex; flex-direction: row; width: 300px; height: 600px; border: 1px solid red; } .child { box-sizing: border-box; width: 100px; border: 1px solid green; }

:

พลิกแกน

<div class="parent"> <div class="child">1</div> <div class="child">2</div> <div class="child">3</div> <div class="child">4</div> <div class="child">5</div> <div class="child">6</div> <div class="child">7</div> <div class="child">8</div> <div class="child">9</div> </div> .parent { display: flex; flex-direction: column; width: 300px; height: 500px; border: 1px solid red; } .child { box-sizing: border-box; width: 100px; height: 100px; border: 1px solid green; }

:

<div class="parent"> <div class="child">1</div> <div class="child">2</div> <div class="child">3</div> <div class="child">4</div> <div class="child">5</div> <div class="child">6</div> <div class="child">7</div> <div class="child">8</div> <div class="child">9</div> </div> .parent { display: flex; flex-direction: column; flex-wrap: wrap; width: 300px; height: 500px; border: 1px solid red; } .child { box-sizing: border-box; width: 100px; height: 100px; border: 1px solid green; }

:

<div class="parent"> <div class="child">1</div> <div class="child">2</div> <div class="child">3</div> <div class="child">4</div> <div class="child">5</div> <div class="child">6</div> <div class="child">7</div> <div class="child">8</div> <div class="child">9</div> </div> .parent { display: flex; flex-direction: column; align-content: center; flex-wrap: wrap; width: 300px; height: 500px; border: 1px solid red; } .child { box-sizing: border-box; width: 100px; height: 100px; border: 1px solid green; }

:

เงื่อนไขพิเศษ

หากไม่มี flex-wrap: wrap จะไม่มีอะไรทำงาน แม้ว่า เราจะมีหนึ่งบรรทัด:

<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; align-content: center; flex-wrap: wrap; width: 300px; height: 320px; border: 1px solid red; } .child { box-sizing: border-box; width: 100px; height: 100px; border: 1px solid green; }

:

เอา flex-wrap: wrap ออก - align-content: center จะหยุดทำงาน:

<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; align-content: center; width: 300px; height: 320px; border: 1px solid red; } .child { box-sizing: border-box; width: 100px; height: 100px; border: 1px solid green; }

:

ไทย
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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ