Sorun
Bazı tarayıcılarda <button>
öğe, ve display
arasında geçiş yapmanın ötesinde değerindeki değişiklikleri kabul etmez . Bu, bir elemanın esnek veya ızgara kapsayıcı veya a olamayacağı anlamına gelir .block
inline-block
<button>
<table>
Öğelere ek olarak <button>
, bu kısıtlamanın <fieldset>
ve <legend>
öğelerine de uygulandığını görebilirsiniz .
Daha fazla ayrıntı için aşağıdaki hata raporlarına bakın.
Not: Esnek kaplar olmasalar da, <button>
öğeler esnek öğeler olabilir.
Çözüm
Bu sorunun tarayıcılar arası basit ve kolay bir çözümü vardır:
İçeriğini sarın button
bir de span
, ve yapmak span
esnek konteyner.
Düzenlenmiş HTML (bir içinde sarmalanmış button
içerik span
)
<div>
<button>
<span>
<span>Test</span>
<span>Test</span>
</span>
</button>
<p>
<span>Test</span>
<span>Test</span>
</p>
</div>
Düzeltilmiş CSS (hedeflenmiş span
)
button > span, p {
display: flex;
flex-direction: row;
justify-content: center;
}
Gözden Geçirilmiş Demo
Referanslar / Hata Raporları
Bir üzerindeki <button>
Flexbox içeriği bloke eder, ancak bir esnek biçimlendirme bağlamı oluşturmaz
Kullanıcı (Oriol Brufau): Çocukların <button>
blockified edilir, zorunluluk mahiyetinde FlexBox Spec. Bununla birlikte, <button>
esnek olan yerine bir blok biçimlendirme bağlamı oluşturuyor gibi görünüyor.
Kullanıcı (Daniel Holbert): Bu, HTML spesifikasyonunun gerektirdiği şeydir. Birkaç HTML kapsayıcı öğesi "özeldir" ve Gecko'daki CSS display
değerlerini etkin bir şekilde yok sayar [satır içi düzey ile blok düzeyi arasında olması dışında]. <button>
bunlardan biri. <fieldset>
ve <legend>
aynı zamanda.
Görüntü desteği ekleyin: <button>
elemanların içinde esnek / ızgara ve sütun kümesi düzeni
Kullanıcı (Daniel Holbert):
<button>
saf CSS'de uygulanamaz (tarayıcılar tarafından), bu yüzden CSS açısından biraz kara kutu gibidirler. Bu, örneğin a'nın yapacağı gibi tepki vermeleri gerekmediği anlamına gelir <div>
.
Bu flexbox'a özgü değildir - örneğin overflow:scroll
, bir düğme koyarsanız kaydırma çubuklarını oluşturmayız ve üzerine koyarsanız onu bir tablo olarak oluşturmayız display:table
.
Daha da geri adım atmak, buna özgü değil <button>
. Düşünün <fieldset>
ve <table>
hangilerinin özel oluşturma davranışına sahip olduğunu düşünün .
Gibi Ve eski parçaları HTML öğeleri <button>
ve <table>
ve <fieldset>
sadece özel desteklemeyen display
elemanı etrafında diğer içerikleri akan değerlerini, çok yüksek seviyeli soruya cevap amacıyla dışında "bu elemanları blok seviyesinden veya satır içi-seviyesidir", .
Ayrıca bkz: