display:block;width:auto;मेरे पाठ इनपुट पर div की तरह व्यवहार क्यों नहीं किया जाता है और कंटेनर की चौड़ाई को क्यों भरता है?
मैं इस धारणा के तहत था कि एक div बस चौड़ाई के साथ एक ब्लॉक तत्व है। निम्नलिखित कोड में div और इनपुट में समान आयाम नहीं होने चाहिए?
मुझे चौड़ाई भरने के लिए इनपुट कैसे मिलेगा? 100% चौड़ाई काम नहीं करेगी, क्योंकि इनपुट में पैडिंग और बॉर्डर होता है (1 पिक्सेल + 5 पिक्सेल + 100% + 5 पिक्सेल + 1 पिक्सेल की अंतिम चौड़ाई के कारण)। निश्चित चौड़ाई एक विकल्प नहीं है, और मैं कुछ अधिक लचीली तलाश कर रहा हूं।
मैं वर्कअराउंड का सीधा जवाब पसंद करूंगा। यह एक सीएसएस quirk की तरह लगता है और इसे समझना बाद में उपयोगी हो सकता है।
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>width:auto</title>
<style>
div, input {
border: 1px solid red;
height: 5px;
padding: 5px;
}
input, form {
display: block;
width: auto;
}
</style>
</head>
<body>
<div></div>
<form>
<input type="text" name="foo" />
</form>
</body>
</html>
मुझे इंगित करना चाहिए कि मैं पहले से ही आवरण वर्करॉइड के साथ ऐसा कर सकता हूं। इसके अलावा पृष्ठ शब्दार्थ और सीएसएस चयनकर्ता संबंधों के साथ पंगा लेना, मैं समस्या की प्रकृति को समझने की कोशिश कर रहा हूं और क्या इसे INPUT की प्रकृति को बदलकर दूर किया जा सकता है।
ठीक है, यह सच में अजीब है! मैंने पाया है कि समाधान केवल max-width:100%एक इनपुट के साथ जोड़ना है width:100%;padding:5px;। हालाँकि यह और भी प्रश्न उठाता है (जो मैं एक अलग प्रश्न में पूछूंगा), लेकिन ऐसा लगता है कि चौड़ाई सामान्य सीएसएस बॉक्स मॉडल का उपयोग करती है और अधिकतम चौड़ाई इंटरनेट एक्सप्लोरर बॉर्डर-बॉक्स मॉडल का उपयोग करती है। कितना अजीब है।
ठीक है, कि पिछले एक फ़ायरफ़ॉक्स 3 में एक बग प्रतीत होता है। इंटरनेट एक्सप्लोरर 8 और सफारी 4 अधिकतम-चौड़ाई को 100% + पैडिंग + बॉर्डर तक सीमित करता है जो कि ऐसा करने के लिए कहता है। अंत में, Internet Explorer को कुछ सही मिला।
हे भगवान, यह भयानक है! इस के साथ खेलने की प्रक्रिया में, और आदरणीय गुरु डीन एडवर्ड्स और एरिक आर्विडसन की बहुत मदद से , मैं एक अलग क्रॉस-ब्राउजर के साथ तीन अलग-अलग समाधान बनाने में कामयाब रहा, जिसमें मनमानी पैडिंग और सीमाओं के साथ तत्वों पर 100% चौड़ाई हो। नीचे उत्तर देखें। इस समाधान के लिए किसी अतिरिक्त HTML मार्कअप की आवश्यकता नहीं है, बस एक वर्ग (या चयनकर्ता) और लीगेसी इंटरनेट एक्सप्लोरर के लिए एक वैकल्पिक व्यवहार है।
inputतत्वों की समस्या से संबंधित है जो स्पष्ट रूप से CSS 2.1 विनिर्देश का पालन नहीं करता है, जबकि आपके द्वारा जुड़ा हुआ प्रश्न यह बताता है कि अतिप्रवाह वाले बक्से को कैसे रोका जाए जो कि रास्ते में CSS 2.1 युक्ति की सीमा में पूरी तरह से होता है। दोनों प्रश्न और उनके समाधान ओवरलैप करते हैं लेकिन उन्हें सटीक डुप्लिकेट कहते हैं बस गलत है।