2011-04-13 15 views
46

मैं डीआईवी का उपयोग करके दो कॉलम लेआउट बनाना चाहता हूं, जहां सही कॉलम में 200px की निश्चित चौड़ाई होगी और बायां एक शेष स्थान ले जाएगा।द्रव बाएं और निश्चित दाएं कॉलम के साथ दो कॉलम डिव लेआउट

यह काफी आसान है अगर आप तालिकाओं का उपयोग:

<table width="100%"> 
    <tr> 
    <td>Column 1</td> 
    <td width="200">Column 2 (always 200px)</td> 
    </tr> 
</table> 

लेकिन यह कैसे DIVs के बारे में? क्या यह पूरा करना संभव है? यदि हां, तो कैसे?

+2

लघु जवाब? [हां] (http://www.snook.ca/archives/html_and_css/getting_your_di) – Khez

उत्तर

86

निम्नलिखित उदाहरण स्रोत ऑर्डर किए गए हैं यानी कॉलम 1 HTML स्रोत में कॉलम 2 से पहले प्रकट होता है।एक स्तंभ पर दिखाई देता है चाहे बाएं या दाएं सीएसएस द्वारा नियंत्रित किया जाता:

फिक्स्ड सही

#wrapper { 
 
    margin-right: 200px; 
 
} 
 
#content { 
 
    float: left; 
 
    width: 100%; 
 
    background-color: #CCF; 
 
} 
 
#sidebar { 
 
    float: right; 
 
    width: 200px; 
 
    margin-right: -200px; 
 
    background-color: #FFA; 
 
} 
 
#cleared { 
 
    clear: both; 
 
}
<div id="wrapper"> 
 
    <div id="content">Column 1 (fluid)</div> 
 
    <div id="sidebar">Column 2 (fixed)</div> 
 
    <div id="cleared"></div> 
 
</div>

फिक्स्ड वाम

#wrapper { 
 
    margin-left: 200px; 
 
} 
 
#content { 
 
    float: right; 
 
    width: 100%; 
 
    background-color: #CCF; 
 
} 
 
#sidebar { 
 
    float: left; 
 
    width: 200px; 
 
    margin-left: -200px; 
 
    background-color: #FFA; 
 
} 
 
#cleared { 
 
    clear: both; 
 
}
<div id="wrapper"> 
 
    <div id="content">Column 1 (fluid)</div> 
 
    <div id="sidebar">Column 2 (fixed)</div> 
 
    <div id="cleared"></div> 
 
</div>

वैकल्पिक समाधान display: table-cell का उपयोग करना है; जिसके परिणामस्वरूप समान ऊंचाई कॉलम होते हैं।

+0

एक और अच्छा, हालांकि आपको समाशोधन div की आवश्यकता नहीं है, क्योंकि रैपर फ़्लोट किया गया है, यह पहले से ही साफ़ हो जाता है (फ्लोट किए गए कॉलम को पहले से हटाता है); – clairesuzy

+0

हां, ऐसा इसलिए है क्योंकि मेरे पास स्पष्ट जोड़ने की आदत है जब भी मैं फ्लोट का उपयोग करता हूं :) –

+0

@clairesuzy: अब मैं देखता हूं कि मुझे क्लीयरिंग div की आवश्यकता क्यों है ... जब कॉलम ऊंचाई बराबर नहीं होती है, तो समाशोधन div निम्नलिखित मदों को सुनिश्चित करता है (उदाहरण के लिए पाद लेख, या पहेली में आश्चर्यचकित बटन) कॉलम में हस्तक्षेप न करें। –

6

सीएसएस Solutuion

#left{ 
    float:right; 
    width:200px; 
    height:500px; 
    background:red; 
} 

#right{ 
    margin-right: 200px; 
    height:500px; 
    background:blue; 
} 

चेक काम कर उदाहरण http://jsfiddle.net/NP4vb/3/

jQuery समाधान

var parentw = $('#parent').width(); 
var rightw = $('#right').width(); 
$('#left').width(parentw - rightw); 

चेक काम कर उदाहरण पर http://jsfiddle.net/NP4vb/

+0

यह अकेले सीएसएस के साथ किया जा सकता है। लेकिन jQuery के लिए +1! – Khez

+3

सवाल एचटीएमएल, सीएसएस, लेआउट और div-layouts टैग किया गया था। jQuery काम करता है लेकिन आवश्यक नहीं है। –

+1

आपको जावास्क्रिप्ट का उपयोग करने के लिए ** ** की आवश्यकता नहीं है, इसे अकेले सीएसएस के साथ किया जा सकता है और जब आप JQuery समाधान प्रदान करने के लिए अच्छा लगा, तो यह सब कुछ का जवाब नहीं है;) और बीड जो सवाल नहीं थे – clairesuzy

1

मुझे हाल ही में सीएसएस का उपयोग कर तरल लेआउट के लिए इस वेबसाइट को दिखाया गया था। http://matthewjamestaylor.com/blog/perfect-multi-column-liquid-layouts (नीचे दिए गए लिंक में डेमो पृष्ठों पर नज़र डालें)।

लेखक अब निश्चित चौड़ाई लेआउट के लिए एक उदाहरण प्रदान करता है। चेक आउट; http://matthewjamestaylor.com/blog/how-to-convert-a-liquid-layout-to-fixed-width

यह निम्नलिखित उदाहरण (रों) प्रदान करता है, http://matthewjamestaylor.com/blog/ultimate-2-column-left-menu-pixels.htm (दो कॉलम लेआउट की तरह आप के बाद मुझे लगता है कि कर रहे हैं के लिए)

http://matthewjamestaylor.com/blog/fixed-width-or-liquid-layout.htm (तीन कॉलम लेआउट के लिए)।

इस लड़के साइट के इतने सारे लिंक के लिए खेद है, लेकिन मुझे लगता है कि यह एक अद्भुत संसाधन है।

+0

यही वह है जिसे मैं ढूंढ रहा हूं: http://matthewjamestaylor.com/blog/ultimate-3-column-blog-style-pixels.htm लेकिन मैं कोड कैसे देखूं ?? :) –

+0

राइट क्लिक करें और स्रोत देखें। प्रत्येक पृष्ठ में उस पृष्ठ पर दिखाई देने वाले परिणाम को प्राप्त करने के लिए आवश्यक मार्कअप और सीएसएस में बहुत अधिक शामिल है। किसी दिए गए पृष्ठ के लिए ब्राउज़र को आकार देने का प्रयास करें यह देखने के लिए कि यह पृष्ठ को कैसे प्रभावित करता है। –

+1

@ सिल्वर लाइट मैंने उपयोग किए जाने वाले अधिकांश आधुनिक ब्राउज़रों को स्रोत देखने के लिए Ctrl + U का उपयोग करने की अनुमति दी है। – leetNightshade

11

यहाँ एक समाधान है (और यह कुछ quirks है, लेकिन मुझे पता है अगर आप उन्हें नोटिस देना और वे एक चिंता का विषय रहे हैं कि):

<div> 
    <div style="width:200px;float:left;display:inline-block;"> 
     Hello world 
    </div> 
    <div style="margin-left:200px;"> 
     Hello world 
    </div> 
</div> 
+0

इनलाइन-ब्लॉक आईई 6 और आईई 7 – Hussein

+1

में काम नहीं करेगा @ हुसैन 'इनलाइन-ब्लॉक' आईई 6 और 7 में काम करता है, इसे सिर्फ कुछ मदद की ज़रूरत है, लेकिन यह जरूरी नहीं है कि मैं फ्लोट जीत रहा हूं, और फ्लोट के दौरान एक डिस्प्ले प्रॉपर्टी को नजरअंदाज कर दिया जाता है प्रयोग किया जाता है .. हालांकि मैं जांच करूंगा कि – clairesuzy

+0

@clairesuzy हाँ अच्छी पकड़ है। और मैंने थोड़ी देर में सीएसएस और एचटीएमएल सामान नहीं किए हैं, मैं अगली बार कम मैला और थोड़ी बेहतर होने की कोशिश करूंगा। >< – leetNightshade

6

सीएसएस:

#sidebar {float: right; width: 200px; background: #eee;} 
#content {overflow: hidden; background: #dad;} 

HTML:

<div id="sidebar">I'm 200px wide</div> 
<div id="content"> I take up the remaining space <br> and I don't wrap under the right column</div> 

उपर्युक्त काम करना चाहिए, तो आप उस कोड को रैपर में डाल सकते हैं यदि आप इसे चौड़ाई देना चाहते हैं और इसे भी केंद्र में रखते हैं, overflow:hidden चौड़ाई बिना स्तंभ पर, यह नियंत्रित करने के लिए हो रही है, खड़ी की कुंजी है के रूप में (सही छोड़ा जा सकता है या) भी पक्ष स्तंभों के आसपास लपेट नहीं

IE6 हो सकता है जरूरत zoom:1 #content div पर सेट अगर आपको इसकी सहायता की आवश्यकता है

+0

** फ्लोट: दाएं ** या ** फ्लोट: ** ** ओवरफ्लो के साथ बाएं **: छुपा ** सबसे अच्छा समाधान है क्योंकि * गैर-फ्लोट तत्व * पर गणना की आवश्यकता नहीं है और समर्थन ** प्रदर्शन: स्लाइडर बनाने के लिए कोई नहीं **! इसके अलावा * गैर-फ्लोट तत्व * अपनी चौड़ाई को सभी खाली स्थान पर फैलाएं! +1 +1 +1 – gavenkoa

1

मुझे लगता है कि यह एक साधारण जवाब है, यह माता-पिता की चौड़ाई के आधार पर 50% प्रत्येक बच्चे को विभाजित करेगा।

<div style="width: 100%"> 
     <div style="width: 50%; float: left; display: inline-block;"> 
      Hello world 
     </div> 
     <div style="width: 50%; display: inline-block;"> 
      Hello world 
     </div> 
    </div> 
0

#wrapper { 
 
    margin-right: 50%; 
 
} 
 
#content { 
 
    float: left; 
 
    width: 50%; 
 
    background-color: #CCF; 
 
} 
 
#sidebar { 
 
    float: right; 
 
    width: 200px; 
 
    margin-right: -200px; 
 
    background-color: #FFA; 
 
} 
 
#cleared { 
 
    clear: both; 
 
}
<div id="wrapper"> 
 
    <div id="content">Column 1 (fluid)</div> 
 
    <div id="sidebar">Column 2 (fixed)</div> 
 
    <div id="cleared"></div> 
 
</div>

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