2012-08-03 13 views
7

मेरे पास एक बटन और कुछ सीएसएस के साथ एक अजीब समस्या है, मैंने देखा कि यह व्यवहार कर रहा था जैसे कि यह पुराने आईई 5 बॉक्स मॉडल का पालन करता है, जहां ऊंचाई = ऊंचाई + पैडिंग।एचटीएमएल <buttons> क्यों सभी आधुनिक ब्राउज़रों में पुराने आईई 5 बॉक्स मॉडल का पालन करता है?

कुछ ब्राउज़िंग के बाद मैं this article पर आया जिसने मेरी धारणाओं की पुष्टि की लेकिन यह समझाया कि यह मामला क्यों है।

क्या कोई जानता है कि सभी आधुनिक ब्राउज़र (फ़ायरफ़ॉक्स, क्रोम, आईई 9) इस तरह के बटन तत्वों का इलाज क्यों करते हैं? और क्या किसी को बटन तत्वों को बॉक्स मॉडल का उपयोग करने के लिए कामकाज के बारे में पता है (जहां तक ​​मैं कह सकता हूं) उन ब्राउज़रों में कभी भी अन्य तत्व उपयोग करता है?

+1

यह आईई 5 बॉक्स मॉडल है, आईई 6 नहीं। आईई 6 में थोड़ा बग्गी है, मानक बॉक्स मॉडल का कार्यान्वयन, मानक मानकों में काम करता है, जबकि आईई 5 में बिल्कुल कोई नहीं है। – BoltClock

+0

क्या आप 'डॉक्टरेट' का उपयोग कर रहे हैं? – Oded

+0

Sean

उत्तर

3

मुझे यह भी एहसास नहीं हुआ कि बटन इस तरह से कार्य करते हैं, लेकिन मैं आमतौर पर इनपुट तत्वों का उपयोग नहीं करता हूं और फैशन div समकक्षों का चयन नहीं करता क्योंकि वे शैली के लिए बहुत आसान हैं और सभी ब्राउज़रों में समान दिखते हैं।

button, input[type=button], input[type=submit] 
{ 
    -webkit-box-sizing: content-box; 
    -moz-box-sizing: content-box; 
    box-sizing: content-box; 
} 

Here's an example on JSFiddle:

एक काम के आसपास बटन पैमाने div तत्वों, content-box को box-sizing विशेषता निर्धारित करने में जो divs के लिए डिफ़ॉल्ट मान है हो सकता है की तरह बनाने के लिए।

+1

'बॉक्स-साइजिंग: संदर्भ-बॉक्स' के साथ; यह आईई 9, क्रोम 20, ओपेरा 12 और सफारी 5 (पीसी) पर काम करता है। और '-मोज़-बॉक्स-आकार बदलकर: सामग्री-बॉक्स;' यह एफएफ 14 में भी काम करता है। – some

+0

उन सभी में काम करता है लेकिन आई 7! धन्यवाद :) – Sean

0

<button> को इनलाइन टैग के रूप में माना जाता है, तो यह स्वाभाविक रूप से डब्ल्यू 3 सी बॉक्स मॉडल का उपयोग नहीं करता है।

यह पूरी तरह तार्किक है, लेकिन मैं पूरी तरह से परेशान हूं, लेकिन मैं सहमत हूं। बिंदु अब है: इसे ब्लॉक टैग के रूप में क्यों नहीं माना जाता है?

button { 
 
    width: 100px; 
 
    padding: 0 30px; 
 
} 
 

 
#a { display: inline; } 
 
#b { display: block; } 
 
#c { display: inline; box-sizing: content-box; } 
 
#d { display: block; box-sizing: content-box; }
<button id="a">aaa</button> 
 
<button id="b">bbb</button> 
 
<button id="c">ccc</button> 
 
<button id="d">ddd</button>

+0

एक-दूसरे के बगल में बटन रखना बेहद आम डिजाइन अभ्यास है, इसलिए यह समझ में आता है कि वे 'इनलाइन' के लिए डिफ़ॉल्ट हैं।हां, 'इनलाइन-ब्लॉक' तत्व की इनलाइन प्रकृति को बनाए रखेगा जबकि इसे ब्लॉक-स्तर तत्व की तरह स्टाइल करने की इजाजत दी जाएगी, लेकिन मुझे नहीं लगता कि कोई तत्व 'इनलाइन-ब्लॉक' पर डिफ़ॉल्ट है। – jackwanders

+0

मुझे नहीं लगता कि इनलाइन के प्रदर्शन को प्रभावित है कि क्या बॉक्स मॉडल ऊंचाई = ऊंचाई या ऊंचाई = गद्दी + सीमा + ऊंचाई – Sean

+0

है तो फिर मैं वहाँ पूरी तरह से गलत हो सकता है, मैं बहुत यकीन है कि तुम लोग मुझे की तुलना में इस बारे में अधिक पता कर रहा हूँ है करें (इसलिए सवाल!) – Sean

2

इस समय इस सवाल पूछने के बारे में अजीब बात यह है कि जे एस/सीएसएस समुदाय में उच्च अंत लोगों के कई इस बॉक्स मॉडल की बहुत-संगत संस्करण का उपयोग शुरू कर दिया है है , उनके उत्पादन परियोजनाओं में।

box-sizing : border-box अधिकांश आधुनिक ब्राउज़र इनपुट की तरह व्यवहार करेंगे।
देखें: Paul Irish - Border-Box FTW

तत्काल लाभ, ऊपर सब कुछ लाइन बहुत तेजी से नकारात्मक हाशिए साथ खेलने के लिए बिना, जब तक आप वास्तव में गैर fixed/गैर absolute तैनात तत्वों का z- सूचकांक ओवरले करने के लिए करना चाहते हैं सक्षम किया जा रहा है ।

+0

में डिफ़ॉल्ट रूप से हाँ, मैं भी है कि करने के लिए कुछ इसी तरह सुना था, मैं हाल ही में पता चला है पुराने बॉक्स मॉडल अस्तित्व में (IE5)। और वह लेख निश्चित रूप से दिलचस्प लग रहा है, इसे बाद में पढ़ने के लिए दूर रखेगा! – Sean

संबंधित मुद्दे