Masalah
Di beberapa browser, <button>elemen tidak menerima perubahan pada displaynilainya, selain beralih antara blockdan inline-block. Ini berarti bahwa <button>elemen tidak bisa menjadi wadah flex atau grid, atau <table>keduanya.
Selain <button>unsur-unsur, Anda mungkin menemukan kendala ini berlaku untuk <fieldset>dan <legend>elemen, juga.
Lihat laporan bug di bawah untuk lebih jelasnya.
Catatan: Meskipun tidak bisa menjadi wadah fleksibel, <button>elemen bisa menjadi item fleksibel.
Solusinya
Ada solusi lintas-browser yang sederhana dan mudah untuk masalah ini:
Bungkus isi buttondalam a span, dan buat spanwadah fleksibel.
HTML yang disesuaikan (dibungkus buttonkonten dalam a span)
<div>
<button>
<span>
<span>Test</span>
<span>Test</span>
</span>
</button>
<p>
<span>Test</span>
<span>Test</span>
</p>
</div>
CSS yang disesuaikan (bertarget span)
button > span, p {
display: flex;
flex-direction: row;
justify-content: center;
}
Demo Revisi
Referensi / Laporan Bug
Flexbox pada suatu <button>memblokir konten tetapi tidak membuat konteks pemformatan fleksibel
Pengguna (Oriol Brufau): Anak-anak dari <button>diblokir, seperti yang ditentukan oleh spesifikasi flexbox. Namun, <button>tampaknya membuat konteks pemformatan blok daripada yang fleksibel.
Pengguna (Daniel Holbert): Itulah yang dibutuhkan spesifikasi HTML. Beberapa elemen penampung HTML bersifat "khusus" dan secara efektif mengabaikan displaynilai CSS-nya di Gecko [selain dari apakah itu tingkat sebaris vs. tingkat blok]. <button>adalah salah satunya. <fieldset>& <legend>juga.
Tambahkan dukungan untuk tampilan: flex / grid dan tata letak kolom di dalam <button>elemen
Pengguna (Daniel Holbert):
<button>tidak dapat diimplementasikan (oleh browser) dalam CSS murni, jadi itu adalah kotak hitam, dari perspektif CSS. Ini berarti bahwa mereka tidak selalu bereaksi dengan cara yang sama seperti misalnya keinginan <div>
.
Ini tidak spesifik untuk flexbox - misalnya kami tidak membuat scrollbar jika Anda meletakkan overflow:scrolltombol, dan kami tidak membuatnya sebagai tabel jika Anda meletakkannya display:table.
Melangkah mundur lebih jauh, ini tidak spesifik <button>. Pertimbangkan <fieldset>dan <table>yang juga memiliki perilaku rendering khusus.
Dan elemen HTML lama seperti <button>dan <table>dan <fieldset>tidak mendukung displaynilai khusus , selain untuk menjawab pertanyaan tingkat tinggi "apakah elemen ini tingkat blok atau tingkat sebaris", untuk mengalirkan konten lain di sekitar elemen .
Lihat juga: