2010-07-15 14 views
7

ऐसा लगता है (कम से कम आईई 8 और फ़ायरफ़ॉक्स 3 में) < इनपुट > तत्वों की चौड़ाई सामग्री को संदर्भित करती है, लेकिन < > तत्वों की चौड़ाई सामग्री + सीमाओं को संदर्भित करती है। मैं स्पष्ट रूप से सीएसएस शैली में चौड़ाई निर्दिष्ट कर रहा हूँ।इनपुट और चयन अलग-अलग बॉक्स मॉडल का उपयोग क्यों करते हैं?

क्या सौदा है? मैंने सोचा होगा कि दोनों इनलाइन तत्वों को प्रतिस्थापित कर रहे हैं और समान व्यवहार करेंगे। क्या यह व्यवहार डब्ल्यू 3 सी मानकों के अनुरूप है? क्या यह सभी प्रमुख ब्राउज़रों में इस तरह से काम करता है?

उत्तर

0

ब्राउज़र W3C से पहले थे इसलिए उन्होंने अपने स्वयं के प्रतिपादन नियमों को परिभाषित किया। फॉर्म नियंत्रण स्टाइल के संबंध में ब्राउज़र कभी भी अनुरूप नहीं होंगे (निकट भविष्य में) क्योंकि डिफ़ॉल्ट ब्राउज़र शैलियों असंगत हैं और विभिन्न नियंत्रणों द्वारा फ़ॉर्म नियंत्रण प्रदान किए जाते हैं।

इस साइट में सूचियों डिफ़ॉल्ट ब्राउज़र शैलियों: http://www.iecss.com/ (आदानों की स्टाइल असंगत है)

+0

उत्तर के लिए धन्यवाद। लेकिन मैं वास्तव में डिफ़ॉल्ट शैलियों के बारे में नहीं पूछ रहा हूं, बल्कि इसके बारे में क्यों कि जब मैं स्पष्ट रूप से एक शैली निर्धारित करता हूं (उदा। 'चौड़ाई: 150 पीएक्स') यह बनाम और 150 पीएक्स बाहरी चौड़ाई (सीमा शामिल) के लिए 150 पीएक्स आंतरिक चौड़ाई वाला तत्व क्यों उत्पन्न करता है? और क्या यह अजीब तथ्य सभी प्रमुख ब्राउज़रों में सच है? –

+1

@ टिम: मुझे समस्या दिखाई देती है (मुझे लगता है कि मैंने पहले आपके प्रश्न के मूल उद्देश्य को गलत समझा)। "क्यों" के लिए ... मुझे संदेह है कि कोई वास्तव में जानता है। मुझे पता है कि आईई 8 और एफएफ 3 में, वे 'इनपुट' और' चयन' प्रस्तुत करने के लिए अंतर्निहित सिस्टम नियंत्रणों का उपयोग करते हैं। कुछ अन्य ब्राउज़र ऐसे नियंत्रणों की पूरी तरह से कस्टम प्रतिपादन करते हैं। ओएस के आधार पर, यह पूरी तरह से संभव है कि किसी भी ब्राउज़र जो इनपुट और चयन नियंत्रणों के लिए ओएस-निर्भर हैं, अलग-अलग व्यवहार करेंगे। यह एक कष्टप्रद quirk है, और एक है कि वास्तव में पिक्सेल-सही लेआउट की आधुनिक उम्र में मौजूद नहीं होना चाहिए ... लेकिन ... आप क्या कर सकते हैं? – jrista

+0

यह दिलचस्प है, धन्यवाद। –

2

विभिन्न बॉक्स आकार के कारण आकार बदलने से अलग आकार का चयन करें। इनपुट में बॉक्स-साइजिंग "कंटेंट-बॉक्स" पर सेट है जबकि चयन में बॉक्स-साइजिंग 'सीमा-बॉक्स' पर सेट है। इनपुट नीचे दिए गए उदाहरण में चयन से अधिक व्यापक हो जाएगा:

<input type="text" name="a" value="a" style="width:100px; border:5px solid red; padding: 10px;" /> 
<select name="b" style="width:100px; border:5px solid red; padding: 10px;" /><option value="b">b</option></select> 

ऐसा इसलिए है क्योंकि निवेश के लिए पूरी चौड़ाई चौड़ाई + गद्दी (बाएं सही +) + सीमा (बाएं + दाएं) और बस चौड़ाई के लिए चयन पूरी चौड़ाई हो जाएगा हो जाएगा (लेकिन आप जानते हैं कि)। दोनों तत्वों को समान तरीके से व्यवहार करने के लिए आपको बॉक्स आकार के मॉडल को बदलना होगा। इनपुट नीचे दिए गए उदाहरण में और चयन बिल्कुल एक ही चौड़ाई * होगा: फ़ायरफ़ॉक्स

के लिए

<input type="text" name="a" value="a" style="width:100px; border:5px solid red; padding: 10px;" /> 
<select name="b" style="box-sizing: content-box; width:100px; border:5px solid red; padding: 10px;" /><option value="b">b</option></select> 

* का उपयोग -moz बॉक्स-आकार के रूप में मुझे पता है इस व्यवहार (IE6 सहित) सभी आधुनिक ब्राउज़रों में संगत है लेकिन मुझे नहीं पता कि यह इस तरह क्यों काम करता है। किसी भी W3 spec को नहीं जानते जहां यह विशेष व्यवहार वर्णित है। note suggesting default styling है लेकिन इसमें केवल साधारण विशेषताओं को शामिल किया गया है - यही कारण है कि डिफ़ॉल्ट सीएसएस रीसेट करना इतना लोकप्रिय है।

2

मैं एक काम पूरी तरह से सीएसएस पर इस प्रयोग किया है:

input, select 
{ 
    -webkit-box-sizing: content-box; 
    -moz-box-sizing: content-box; 
    box-sizing: content-box; 
} 
इस के साथ

आप आदानों के व्यवहार के लिए मजबूर है और एक ही होने के लिए चयन करें।

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