समस्या
कुछ ब्राउज़रों में <button>
तत्व इसके display
मान में परिवर्तन स्वीकार नहीं करता है , के बीच स्विच करने से परे block
और inline-block
। इसका मतलब है कि एक <button>
तत्व फ्लेक्स या ग्रिड कंटेनर या ए नहीं हो सकता है <table>
।
<button>
तत्वों के अलावा , आप इस बाधा को <fieldset>
और <legend>
तत्वों पर भी लागू कर सकते हैं ।
अधिक विवरण के लिए नीचे दी गई बग रिपोर्ट देखें।
नोट: हालांकि वे फ्लेक्स कंटेनर नहीं हो सकते हैं, <button>
तत्व फ्लेक्स आइटम हो सकते हैं।
समाधान
इस समस्या का एक सरल और आसान क्रॉस-ब्राउज़र समाधान है:
की सामग्री लपेटें button
एक में span
, और span
फ्लेक्स कंटेनर।
समायोजित HTML (लपेटी गई button
सामग्री span
)
<div>
<button>
<span>
<span>Test</span>
<span>Test</span>
</span>
</button>
<p>
<span>Test</span>
<span>Test</span>
</p>
</div>
समायोजित सीएसएस (लक्षित span
)
button > span, p {
display: flex;
flex-direction: row;
justify-content: center;
}
संशोधित डेमो
संदर्भ / बग रिपोर्ट
Flexbox <button>
सामग्री को अवरुद्ध करता है, लेकिन एक फ्लेक्स स्वरूपण संदर्भ को स्थापित नहीं करता है
उपयोगकर्ता (Oriol Brufau): के बच्चों <button>
blockified कर रहे हैं, बातें के रूप में flexbox कल्पना। हालाँकि, यह <button>
फ्लेक्स एक के बजाय एक ब्लॉक स्वरूपण संदर्भ स्थापित करने के लिए लगता है।
उपयोगकर्ता (डैनियल होल्बर्ट): यह प्रभावी रूप से HTML कल्पना की आवश्यकता है। कई HTML कंटेनर-तत्व "विशेष" हैं और प्रभावी रूप display
से गेको में उनके सीएसएस मूल्य को अनदेखा करते हैं [एक तरफ चाहे वह इनलाइन-स्तर बनाम ब्लॉक-स्तर] हो। <button>
इनमें से एक है। <fieldset>
और भी <legend>
हैं।
प्रदर्शन के लिए समर्थन जोड़ें: <button>
तत्वों के अंदर फ्लेक्स / ग्रिड और कॉलमसेट लेआउट
उपयोगकर्ता (डैनियल होल्बर्ट):
<button>
शुद्ध सीएसएस में (ब्राउज़रों द्वारा) लागू करने योग्य नहीं है, इसलिए वे सीएसएस के दृष्टिकोण से एक ब्लैक बॉक्स के एक बिट हैं। इसका मतलब यह है कि वे आवश्यक रूप से उसी तरह से प्रतिक्रिया नहीं करते हैं जैसे कि एक <div>
।
यह फ्लेक्सबॉक्स के लिए विशिष्ट नहीं है - उदाहरण के लिए, यदि आप overflow:scroll
एक बटन पर रखते हैं तो हम स्क्रॉलबार को प्रस्तुत नहीं करते हैं , और यदि आप display:table
इसे डालते हैं तो हम इसे तालिका के रूप में प्रस्तुत नहीं करते हैं ।
आगे भी आगे बढ़ना, यह विशिष्ट नहीं है <button>
। विचार करें <fieldset>
और <table>
जो विशेष प्रतिपादन व्यवहार है।
और पुराने timey एचटीएमएल जैसे तत्वों <button>
और <table>
और <fieldset>
बस कस्टम का समर्थन नहीं करते display
मूल्यों, का बहुत ही उच्च स्तर सवाल का जवाब देने के प्रयोजनों के लिए अन्य की तुलना में "इस तत्व ब्लॉक स्तर या इनलाइन स्तर है", तत्व के चारों ओर अन्य सामग्री बहने के लिए ।
और देखें: