मेरे पास एक मुख्य आवरण div है जो 100% चौड़ाई निर्धारित है। अंदर कि मैं दो divs करना चाहते हैं, एक है जो निश्चित चौड़ाई है और दूसरा जो बाकी जगह को भरता है। मैं बाकी हिस्सों को भरने के लिए दूसरी div कैसे तैरता हूं। किसी भी मदद के लिए धन्यवाद।
मेरे पास एक मुख्य आवरण div है जो 100% चौड़ाई निर्धारित है। अंदर कि मैं दो divs करना चाहते हैं, एक है जो निश्चित चौड़ाई है और दूसरा जो बाकी जगह को भरता है। मैं बाकी हिस्सों को भरने के लिए दूसरी div कैसे तैरता हूं। किसी भी मदद के लिए धन्यवाद।
जवाबों:
आपके द्वारा पूछे जाने वाले कार्य करने के कई तरीके हैं:
CSS float
संपत्ति का उपयोग करना :
<div style="width: 100%; overflow: hidden;">
<div style="width: 600px; float: left;"> Left </div>
<div style="margin-left: 620px;"> Right </div>
</div>
सीएसएस display
संपत्ति का उपयोग करना - जिसका उपयोग div
ए जैसे कार्य करने के लिए किया जा सकता है table
:
<div style="width: 100%; display: table;">
<div style="display: table-row">
<div style="width: 600px; display: table-cell;"> Left </div>
<div style="display: table-cell;"> Right </div>
</div>
</div>
अधिक विधियां हैं, लेकिन वे दो सबसे लोकप्रिय हैं।
CSS3 ने लचीले बक्से (उर्फ फ्लेक्स बॉक्स) पेश किए जो इस व्यवहार को भी प्राप्त कर सकते हैं।
बस पहली div की चौड़ाई को परिभाषित करें, और फिर दूसरे को एक flex-grow
मान 1
दें जिससे वह माता-पिता की शेष चौड़ाई को भर सके।
.container{
display: flex;
}
.fixed{
width: 200px;
}
.flex-item{
flex-grow: 1;
}
<div class="container">
<div class="fixed"></div>
<div class="flex-item"></div>
</div>
ध्यान दें कि फ्लेक्स बॉक्स पुराने ब्राउज़रों के साथ संगत नहीं हैं, लेकिन आधुनिक ब्राउज़रों को लक्षित करने के लिए एक बढ़िया विकल्प है ( Caniuse और MDN भी देखें )। फ्लेक्स बॉक्स का उपयोग करने के बारे में एक महान व्यापक मार्गदर्शिका सीएसएस ट्रिक्स पर उपलब्ध है ।
मुझे HTML और CSS डिजाइन रणनीतियों के बारे में अधिक जानकारी नहीं है, लेकिन यदि आप कुछ सरल खोज रहे हैं और वह स्क्रीन अपने आप फिट हो जाएगी (जैसा कि मैं हूं) मेरा मानना है कि सबसे सीधा फॉरवर्ड सॉल्यूशन है जिससे divs को शब्दों के रूप में व्यवहार करना है एक पैरा। निर्दिष्ट करने का प्रयास करेंdisplay: inline-block
<div style="display: inline-block">
Content in column A
</div>
<div style="display: inline-block">
Content in column B
</div>
आपको DIV की चौड़ाई निर्दिष्ट करने की आवश्यकता हो सकती है या नहीं भी हो सकती है
display:flex
सबसे अच्छा समाधान है, लेकिन मुझे लगता inline-block
है कि यह भी उत्कृष्ट है क्योंकि यह अधिक ब्राउज़रों पर काम करता है। वैसे, आपको <div style="white-space:nowrap">
आकार बदलने पर रोक लगाने के लिए दोनों डिव को लपेटने की आवश्यकता हो सकती है ।
inline-block
कोड।
इसे प्राप्त करने के लिए आप CSS ग्रिड का उपयोग कर सकते हैं, यह चित्रण के प्रयोजनों के लिए लंबे समय तक चलने वाला संस्करण है:
div.container {
display: grid;
grid-template-columns: 220px 20px auto;
grid-template-rows: auto;
}
div.left {
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: row1-start
grid-row-end: 3;
background-color: Aqua;
}
div.right {
grid-column-start: 3;
grid-column-end: 4;
grid-row-start: 1;
grid-row-end; 1;
background-color: Silver;
}
div.below {
grid-column-start: 1;
grid-column-end: 4;
grid-row-start: 2;
grid-row-end; 2;
}
<div class="container">
<div class="left">Left</div>
<div class="right">Right</div>
<div class="below">Below</div>
</div>
या फ्लोट और मार्जिन का उपयोग करके अधिक पारंपरिक विधि।
मैंने इस उदाहरण में एक पृष्ठभूमि रंग शामिल किया है, जहां यह दिखाने में मदद की जाती है कि चीजें कहां हैं - और यह भी कि फ्लोटेड-एरिया के नीचे की सामग्री का क्या करना है।
वास्तविक जीवन में अपनी शैलियों को इनलाइन न करें, उन्हें स्टाइल शीट में निकालें।
div.left {
width: 200px;
float: left;
background-color: Aqua;
}
div.right {
margin-left: 220px;
background-color: Silver;
}
div.clear {
clear: both;
}
<div class="left"> Left </div>
<div class="right"> Right </div>
<div class="clear">Below</div>
<div style="width: 200px; float: left; background-color: Aqua;"> Left </div>
<div style="margin-left: 220px; background-color: Silver;"> Right </div>
<div style="clear: both;">Below</div>
<div class="container" style="width: 100%;">
<div class="sidebar" style="width: 200px; float: left;">
Sidebar
</div>
<div class="content" style="margin-left: 202px;">
content
</div>
</div>
यह क्रॉस ब्राउज़र संगत होगा। यदि आप सामग्री अपने साइडबार की तुलना में लंबा है तो मार्जिन-लेफ्ट के बिना आप बाईं ओर सभी तरह से चलने वाली सामग्री के साथ मुद्दों पर चलेंगे।
यदि आप IE6 को टैग नहीं कर रहे हैं, तो दूसरा फ़्लोट करें <div>
और इसे पहले <div>
की निश्चित चौड़ाई के बराबर (या शायद थोड़ा बड़ा) के बराबर मार्जिन दें ।
HTML:
<div id="main-wrapper">
<div id="fixed-width"> lorem ipsum </div>
<div id="rest-of-space"> dolor sit amet </div>
</div>
सीएसएस:
#main-wrapper {
100%;
background:red;
}
#fixed-width {
width:100px;
float:left
}
#rest-of-space {
margin-left:101px;
/* May have to increase depending on borders and margin of the fixd width div*/
background:blue;
}
मार्जिन इस संभावना के लिए जिम्मेदार है कि 'रेस्ट-ऑफ-स्पेस' <div>
में 'निश्चित-चौड़ाई' की तुलना में अधिक सामग्री हो सकती है <div>
।
निश्चित चौड़ाई को पृष्ठभूमि न दें; अगर आपको इन्हें अलग-अलग 'कॉलम' के रूप में देखना है, तो फॉक्स कॉलम ट्रिक का उपयोग करें ।