ระวัง
ในบางเบราว์เซอร์:
flex:1;
ไม่เท่ากันflex:1 1 0;
flex:1;
= flex:1 1 0n;
(โดยที่nคือหน่วยความยาว)
- flex-grow: ตัวเลขที่ระบุว่าสินค้าจะเติบโตเท่าใดเมื่อเทียบกับส่วนที่เหลือของรายการที่ยืดหยุ่น
- ดิ้น - หด ตัวเลขที่ระบุว่าสินค้าจะหดตัวมากเพียงใดเมื่อเทียบกับส่วนที่เหลือของรายการที่ยืดหยุ่น
- ความยืดหยุ่นตาม ความยาวของรายการ ค่าทางกฎหมาย: "auto" "inherit" หรือตัวเลขตามด้วย "%" "px" "em" หรือหน่วยความยาวอื่น ๆ
ประเด็นสำคัญที่นี่คือฐานดิ้นต้องใช้หน่วยความยาวหน่วยความยาว
ใน Chrome เป็นต้นflex:1
และflex:1 1 0
ให้ผลลัพธ์ที่แตกต่างกัน ในสถานการณ์ส่วนใหญ่อาจปรากฏว่าflex:1 1 0;
ใช้งานได้ แต่ลองตรวจสอบสิ่งที่เกิดขึ้นจริง:
ตัวอย่าง
พื้นฐาน Flex ถูกละเว้นและใช้เฉพาะการเติบโตแบบยืดหยุ่นและการหดตัวเท่านั้น
flex:1 1 0;
= flex:1 1;
=flex:1;
สิ่งนี้อาจปรากฏขึ้นในแวบแรก แต่ถ้าหน่วยที่ใช้ของคอนเทนเนอร์ซ้อนกัน คาดหวังที่ไม่คาดคิด!
ลองดูตัวอย่างนี้ใน CHROME
.Wrap{
padding:10px;
background: #333;
}
.Flex110x, .Flex1, .Flex110, .Wrap {
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column;
flex-direction: column;
}
.Flex110 {
-webkit-flex: 1 1 0;
flex: 1 1 0;
}
.Flex1 {
-webkit-flex: 1;
flex: 1;
}
.Flex110x{
-webkit-flex: 1 1 0%;
flex: 1 1 0%;
}
FLEX 1 1 0
<div class="Wrap">
<div class="Flex110">
<input type="submit" name="test1" value="TEST 1">
</div>
</div>
FLEX 1
<div class="Wrap">
<div class="Flex1">
<input type="submit" name="test2" value="TEST 2">
</div>
</div>
FLEX 1 1 0%
<div class="Wrap">
<div class="Flex110x">
<input type="submit" name="test3" value="TEST 3">
</div>
</div>
ความเข้ากันได้
ควรสังเกตว่าสิ่งนี้ล้มเหลวเนื่องจากเบราว์เซอร์บางตัวไม่สามารถปฏิบัติตามข้อกำหนดข้อกำหนด
เบราว์เซอร์ที่ใช้ข้อกำหนด Flex แบบเต็ม:
- Firefox - ✓
- ขอบ - ✓ (รู้แล้วก็ตกใจเหมือนกัน)
- Chrome - x
- กล้าหาญ - x
- Opera - x
- IE - (ฮ่า ๆ มันใช้งานได้โดยไม่มีหน่วยความยาว แต่ใช้ไม่ได้)
อัปเดต 2019
Chrome เวอร์ชันล่าสุดดูเหมือนจะแก้ไขปัญหานี้ได้ในที่สุด แต่เบราว์เซอร์อื่น ๆ ยังไม่ได้แก้ไข
ทดสอบและทำงานใน Chrome Ver 74