ขนาดขั้นต่ำอัตโนมัติของรายการยืดหยุ่น
คุณกำลังเผชิญหน้ากับการตั้งค่าเริ่มต้นของ flexbox
ไอเท็มเฟล็กต์ต้องไม่เล็กกว่าขนาดเนื้อหาตามแกนหลัก
ค่าเริ่มต้นคือ ...
min-width: auto
min-height: auto
... สำหรับรายการยืดหยุ่นในทิศทางแถวและทิศทางคอลัมน์ตามลำดับ
คุณสามารถแทนที่ค่าเริ่มต้นเหล่านี้ได้โดยการตั้งค่าไอเท็มแบบยืดหยุ่นเป็น
min-width: 0
min-height: 0
overflow: hidden
(หรือค่าอื่น ๆ ยกเว้นvisible
)
ข้อกำหนดของ Flexbox
4.5 ขนาดขั้นต่ำอัตโนมัติของรายการที่ยืดหยุ่น
เพื่อให้ขนาดขั้นต่ำเริ่มต้นที่สมเหตุสมผลมากขึ้นสำหรับรายการ flex ข้อมูลจำเพาะนี้จะแนะนำauto
ค่าใหม่เป็นค่าเริ่มต้นของmin-width
และmin-height
คุณสมบัติที่กำหนดใน CSS 2.1
เกี่ยวกับauto
คุณค่า ...
ในรายการเฟล็กซ์ซึ่งoverflow
เป็นvisible
ในแกนหลักเมื่อระบุไว้ในคุณสมบัติหลักแกนนาทีขนาดรายการดิ้นของระบุขนาดต่ำสุดอัตโนมัติ 0
มันเป็นอย่างอื่นในการคำนวณ
ในคำอื่น ๆ :
min-width: auto
และmin-height: auto
ค่าเริ่มต้นใช้เฉพาะเมื่อเป็นoverflow
visible
- ถ้า
overflow
ค่าไม่ได้visible
, 0
มูลค่าของทรัพย์สินนาทีขนาดคือ
- จึง
overflow: hidden
สามารถทดแทนหาและmin-width: 0
min-height: 0
และ...
- อัลกอริธึมการปรับขนาดต่ำสุดใช้เฉพาะในแกนหลักเท่านั้น
- ตัวอย่างเช่นรายการ flex ในคอนเทนเนอร์ทิศทางแถวจะไม่ได้รับ
min-height: auto
ตามค่าเริ่มต้น
- สำหรับคำอธิบายโดยละเอียดเพิ่มเติมดูโพสต์นี้:
คุณได้ใช้ความกว้างขั้นต่ำ: 0 และรายการยังไม่ย่อ
กล่องบรรจุ Flex แบบซ้อน
หากคุณกำลังจัดการกับไอเท็มแบบยืดหยุ่นในโครงสร้าง HTML หลายระดับคุณอาจจำเป็นต้องแทนที่ค่าเริ่มต้นmin-width: auto
/ min-height: auto
รายการที่ระดับสูงกว่า
โดยทั่วไประดับที่สูงขึ้นรายการดิ้นกับสามารถป้องกันการหดตัวในรายการซ้อนกันด้านล่างด้วยmin-width: auto
min-width: 0
ตัวอย่าง:
เบราว์เซอร์บันทึกการแสดงผล
Chrome vs. Firefox / Edge
อย่างน้อยตั้งแต่ปี 2017 ปรากฏว่า Chrome เป็น (1) ย้อนกลับไปที่min-width: 0
/ min-height: 0
ค่าเริ่มต้นหรือ (2) ใช้0
ค่าเริ่มต้นในสถานการณ์ที่ขึ้นอยู่กับอัลกอริทึมลึกลับโดยอัตโนมัติ (นี่อาจเป็นสิ่งที่พวกเขาเรียกว่าการแทรกแซง ) ด้วยเหตุนี้หลายคนเห็นรูปแบบ (โดยเฉพาะแถบเลื่อนที่ต้องการ) ทำงานได้ตามที่คาดหวังใน Chrome แต่ไม่ใช่ใน Firefox / Edge ปัญหานี้ได้รับการกล่าวถึงในรายละเอียดเพิ่มเติมที่นี่: ความคลาดเคลื่อนที่ยืดหยุ่นระหว่าง Firefox และ Chrome
IE11
ตามที่ระบุไว้ในข้อมูลจำเพาะauto
ค่าสำหรับmin-width
และmin-height
คุณสมบัติคือ "ใหม่" ซึ่งหมายความว่าเบราว์เซอร์บางส่วนยังคงอาจทำให้0
ค่าตามค่าเริ่มต้นเพราะพวกเขาดำเนินการรูปแบบดิ้นก่อนค่าที่ได้รับการปรับปรุงและเนื่องจาก0
เป็นค่าเริ่มต้นสำหรับmin-width
และmin-height
ในCSS 2.1 เบราว์เซอร์หนึ่งตัวนั้นคือ IE11 เบราว์เซอร์อื่น ๆ ได้รับการปรับปรุงใหม่auto
มูลค่าตามที่กำหนดไว้ในข้อมูลจำเพาะ flexbox
ปรับปรุงการสาธิต
.container {
display: flex;
}
.col {
min-height: 200px;
padding: 30px;
word-break: break-word
}
.col1 {
flex: 1;
background: orange;
font-size: 80px;
min-width: 0; /* NEW */
}
.col2 {
flex: 3;
background: yellow
}
.col3 {
flex: 4;
background: skyblue
}
.col4 {
flex: 4;
background: red
}
<div class="container">
<div class="col col1">Lorem ipsum dolor</div>
<div class="col col2">Lorem ipsum dolor</div>
<div class="col col3">Lorem ipsum dolor</div>
<div class="col col4">Lorem ipsum dolor</div>
</div>
jsFiddle