ปัญหา
ในเบราว์เซอร์บาง<button>องค์ประกอบไม่ยอมรับการเปลี่ยนแปลงของdisplayมูลค่าเกินกว่าการสลับระหว่างและblock inline-blockซึ่งหมายความว่า<button>องค์ประกอบไม่สามารถเป็นคอนเทนเนอร์แบบยืดหยุ่นหรือกริดหรือ a <table>ได้
นอกเหนือไปจาก<button>องค์ประกอบที่คุณอาจพบข้อ จำกัด นี้การนำไปใช้<fieldset>และ<legend>องค์ประกอบรวม
ดูรายงานข้อบกพร่องด้านล่างสำหรับรายละเอียดเพิ่มเติม
หมายเหตุ: แม้ว่าจะไม่สามารถเป็นคอนเทนเนอร์แบบยืดหยุ่นได้ แต่<button>องค์ประกอบสามารถเป็นรายการที่ยืดหยุ่นได้
การแก้ไขปัญหา
มีวิธีแก้ปัญหาข้ามเบราว์เซอร์ที่ง่ายและสะดวกสำหรับปัญหานี้:
ห่อเนื้อหาของbuttonใน a spanและทำspanภาชนะดิ้น
HTML ที่ปรับแล้ว (รวมbuttonเนื้อหาใน a span)
<div>
<button>
<span>
<span>Test</span>
<span>Test</span>
</span>
</button>
<p>
<span>Test</span>
<span>Test</span>
</p>
</div>
CSS ที่ปรับแล้ว (กำหนดเป้าหมายspan)
button > span, p {
display: flex;
flex-direction: row;
justify-content: center;
}
ปรับปรุงการสาธิต
การอ้างอิง / รายงานข้อบกพร่อง
Flexbox บน<button>บล็อกจะระบุเนื้อหา แต่ไม่ได้สร้างบริบทการจัดรูปแบบแบบยืดหยุ่น
ผู้ใช้ (Oriol Brufau): ลูก ๆ ของพวกเขา<button>ถูกปิดกั้นตามที่กำหนดข้อกำหนดของ flexbox อย่างไรก็ตาม<button>ดูเหมือนว่าจะสร้างบริบทการจัดรูปแบบบล็อกแทนที่จะเป็นแบบยืดหยุ่น
ผู้ใช้ (Daniel Holbert): นั่นคือสิ่งที่ข้อกำหนด HTML ต้องการอย่างมีประสิทธิภาพ องค์ประกอบคอนเทนเนอร์ HTML หลายรายการเป็น "พิเศษ" และไม่สนใจdisplayค่าCSS ใน Gecko [นอกเหนือจากว่าเป็นระดับอินไลน์กับระดับบล็อก] <button>เป็นหนึ่งในนี้ <fieldset>& <legend>เช่นกัน.
เพิ่มการสนับสนุนสำหรับการแสดงผล: flex / grid และ columnet layout ภายใน<button>องค์ประกอบ
ผู้ใช้ (Daniel Holbert):
<button>ไม่สามารถใช้งานได้ (โดยเบราว์เซอร์) ใน CSS ที่บริสุทธิ์ดังนั้นพวกเขาจึงเป็นกล่องดำเล็กน้อยจากมุมมองของ CSS ซึ่งหมายความว่าพวกเขาไม่จำเป็นต้องตอบสนองในลักษณะเดียวกับที่<div>
ต้องการ
สิ่งนี้ไม่เฉพาะเจาะจงสำหรับ flexbox - เช่นเราจะไม่แสดงแถบเลื่อนหากคุณใส่overflow:scrollปุ่มและเราจะไม่แสดงเป็นตารางหากคุณวางdisplay:tableไว้
<button>ก้าวกลับยิ่งขึ้นนี้ไม่ได้เฉพาะเจาะจงกับ พิจารณา<fieldset>และ<table>ที่ยังมีพฤติกรรมการแสดงผลพิเศษ
และองค์ประกอบ HTML แบบเก่า ๆ เช่น<button>และ<table>และ<fieldset>ไม่สนับสนุนdisplayค่าที่กำหนดเองนอกจากเพื่อวัตถุประสงค์ในการตอบคำถามระดับสูงของ "is this element block-level or inline-level" สำหรับการส่งต่อเนื้อหาอื่น ๆ รอบ ๆ องค์ประกอบ .
ดูเพิ่มเติมที่: