ปัญหา
ในเบราว์เซอร์บาง<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" สำหรับการส่งต่อเนื้อหาอื่น ๆ รอบ ๆ องค์ประกอบ .
ดูเพิ่มเติมที่: