अपने बच्चों की ऊंचाई के लिए एक माता-पिता <div> का विस्तार करना


308

मेरे पास इसके समान एक पृष्ठ संरचना है:

<body>
  <div id="parent">
    <div id="childRightCol">
      /*Content*/
    </div>
    <div id="childLeftCol">
      /*Content*/
    </div>
  </div>
</body>

मैं माता-पिता के लिए चाहते हैं divमें विस्तार करने के लिए heightजब भीतरी div's heightबढ़ जाती है।

संपादित करें:
एक समस्या यह है कि अगर widthबच्चे की सामग्री widthब्राउज़र विंडो के पिछले हिस्से में फैल जाती है, तो मेरा वर्तमान सीएसएस पेरेंट पर एक क्षैतिज स्क्रॉलबार डालता है div। मैं स्क्रॉलबार को पृष्ठ स्तर पर रखना चाहूंगा। वर्तमान में मेरा पैरेंट डिव सेट हैoverflow: auto;

क्या आप इसके लिए CSS के साथ मेरी मदद कर सकते हैं?


6
क्या आप भीतर के विभाग को तैर ​​रहे हैं? क्या आप वर्तमान CSS पोस्ट कर सकते हैं?
एरिक

2
@ एरिक - यह मेरी समस्या भी थी - मेरा बच्चा डिव (ओं) फ्लोट कर चुका था: बाएं, जब मैंने इसे हटा दिया तो 'माता-पिता' को स्वचालित रूप से पहचाना गया और पूरी ऊंचाई तक बढ़ाया गया!
माइकल गोल्टमैन

जवाबों:


539

माता-पिता के लिए यह कोशिश करो, यह मेरे लिए काम किया।

overflow:auto; 

अपडेट करें:

एक और समाधान जो काम किया:

जनक :

display: table;

बच्चा :

display: table-row;

67
overflow:autoइसका मतलब है कि ब्राउज़र को यह तय करना चाहिए कि किस मूल्य को लागू करना है। क्या वास्तव में करता है चाल है overflow: overlay
अल्बा मेंडेज़

14
@jmendeth "ओवरले" नामक एक अतिप्रवाह-मूल्य मौजूद नहीं है। चाइल्ड डिव मंगाई जाती हैं तो क्या काम कर रहा है overflow:hidden
क्रिस्टोफ

16
Waaaait। आराम करें। एक बात का दावा overlayहै कि वेबकिट के बाहर समर्थित नहीं है। एक और पूरी तरह से अलग यह कहना है कि यह बिल्कुल भी मौजूद नहीं है। कृपया, पहले आरटीएफएम । ;)
अल्बा मेंडेज़

6
यदि यह केवल वेबकिट पर है तो यह केवल 20% मौजूद है: लिंक के लिए पी चीयर्स, इस वेबसाइट को पहले कभी नहीं देखा था। क्या यह अच्छी तरह से बनाए रखा और अद्यतन किया गया है? क्या आप इसकी कसम खाते हैं?
पिलाऊ

20
एक वैकल्पिक उत्तर है stackoverflow.com/questions/450903/… और यह सेट करने का प्रस्ताव करता है display:inline-block। जिसने मेरे लिए बहुत काम किया।
जेन्स

26

एक जोड़ने clear:both। यह मानते हुए कि आपके कॉलम तैर रहे हैं। इस बात पर निर्भर करता है कि आपकी ऊंचाई निर्दिष्ट माता-पिता के लिए आपको एक अतिप्रवाह की आवश्यकता हो सकती है: ऑटो;

<body>
<div id="parent">
    <div id="childRightCol">
    <div>
    <div id="childLeftCol">
    <div>
    <div id="clear" style="clear:both;"></div>
</div>
</body>

ऐसा करने से मुझे मूल विंडो पर सामग्री विंडो ब्राउज़र की तुलना में व्यापक होने पर एक क्षैतिज स्क्रॉलबार मिलता है। मैं चाहता हूं कि पूरे पृष्ठ पर क्षैतिज स्क्रॉल हो।
स्टीव हॉर्न

1
आपको अतिप्रवाह की आवश्यकता क्यों है: ऑटो ;? मेरे परीक्षण में स्पष्ट: दोनों; पर्याप्त।
पाओलो बरगिनिनो

3
यह भी मानते हुए कि माता-पिता के पास कोई ऊँचाई नहीं है।
बेंडवेई

यह दृष्टिकोण फ़ायरफ़ॉक्स में ठीक काम करता है, लेकिन IE 6 में काम नहीं करता है। कोई वर्कअराउंड?
स्टीव हॉर्न

16

जैसा कि जेन्स ने टिप्पणी में कहा है

एक वैकल्पिक उत्तर यह है कि कैसे div को अपनी सामग्री से बड़ा नहीं बनाया जाए? ... और यह प्रदर्शन सेट करने का प्रस्ताव करता है: इनलाइन-ब्लॉक। जिसने मेरे लिए बहुत काम किया। - जेंस 2 को 5:41 बजे

यह सभी ब्राउज़रों में मेरे लिए बेहतर काम करता है।


13

max-contentमाता-पिता की ऊंचाई के लिए देने की कोशिश करें ।

.parent{
   height: max-content;
}

https://jsfiddle.net/FreeS/so4L83wu/5/


वह संपत्ति अन्य ब्राउज़रों के साथ कैसे व्यवहार करती है? MDN पर: developer.mozilla.org/en-US/docs/Web/CSS/…
रॉबर्ट मोलिना

यह केवल एक चीज लग रही थी जिसने सफारी 12 में समस्या को ठीक किया
बेन व्हीलर

इस तरह के एक भयानक सीएसएस मूल्य! एज में असमर्थित ¯_ (ツ) _ / Sam
समीर मुराद

4

उन लोगों के लिए जो इस उत्तर के निर्देशों में यह पता नहीं लगा सकते हैं :

सेट की कोशिश करो गद्दी मूल्य अधिक तो 0 , अगर बच्चे divs मार्जिन टॉप या margin-bottom है आप गद्दी के साथ यह जगह ले सकता है

उदाहरण के लिए यदि आपके पास है

#childRightCol
{
    margin-top: 30px;
}
#childLeftCol
{
    margin-bottom: 20px;
}

इसके साथ इसे प्रतिस्थापित करना बेहतर होगा:

#parent
{
    padding: 30px 0px 20px 0px;
}

4

आत्म समाशोधन की तरह कुछ का उपयोग करते हुए divकी तरह एक स्थिति के लिए एकदम सही है यह । तब आप सिर्फ अभिभावक पर एक कक्षा का उपयोग करेंगे ... जैसे:

<div id="parent" class="clearfix">

3

जोड़ना

clear:both; 

पैरेंट डिव के सीएसएस में, या स्पष्ट करने वाले पैरेंट डिव के तल पर एक डिव जोड़ें;

यह सही उत्तर है, क्योंकि अतिप्रवाह: ऑटो; साधारण वेब लेआउट के लिए काम कर सकते हैं, लेकिन उन तत्वों के साथ गड़बड़ करेंगे जो नकारात्मक मार्जिन जैसी चीजों का उपयोग करना शुरू करते हैं, आदि


2

क्या यह वही है जो आप चाहते हैं?

.childRightCol, .childLeftCol
{
    display: inline-block;
    width: 50%;
    margin: 0;
    padding: 0;
    vertical-align: top;
}


1

मैंने एक चाइल्ड डिव की सामग्री के चारों ओर एक पैरेंट डिविज़न का विस्तार किया, जिसमें बच्चे को एक ही कॉलम के रूप में प्रदर्शित किया गया, जिसमें कोई भी पोजिशनिंग विशेषता नहीं है जैसे कि पूर्ण निर्दिष्ट।

उदाहरण:

#wrap {width:400px;padding:10px 200px 10px 200px;position:relative;margin:0px auto;}
#maincolumn {width:400px;}

Maincolumn div के आधार पर #wrap का सबसे गहरा चाइल्ड div होना यह #wrap div की गहराई को परिभाषित करता है और दोनों तरफ 200px padding आपके लिए दो बड़े खाली कॉलम बनाता है ताकि आप अपनी इच्छानुसार पूरी तरह से divs को स्थान पर रख सकें। आप शीर्ष लेख और पाद लेख विभिन्‍न स्‍थितियों का उपयोग करके पैडिंग के ऊपर और नीचे भी बदल सकते हैं: निरपेक्ष।


0

आपको पैरेंट कंटेनर पर क्लीयरफिक्स सॉल्यूशन लगाना होगा। यहाँ एक अच्छा लेख है जो फिक्स लिंक को समझा रहा है


0

यदि #childRightCol और #childRightCol के अंदर आपकी सामग्री बाएँ या दाएँ फ़्लोट की जाती है, तो इसे केवल cc: में जोड़ें

#childRightCol:before { display: table; content: " "; }
#childRightCol:after { display: table; content: " "; clear: both; }
#childLeftCol:before { display: table; content: " "; }
#childLeftCol:after { display: table; content: " "; clear: both; }

0

यह कल्पना के अनुसार कार्य कर रहा है - यहाँ कई उत्तर मान्य हैं, और निम्नलिखित के अनुरूप हैं:

यदि इसमें ब्लॉक-स्तर के बच्चे हैं, तो ऊंचाई शीर्ष ब्लॉक-स्तरीय चाइल्ड बॉक्स के शीर्ष बॉर्डर-एज के बीच की दूरी है, जिसमें हाशिये इसके माध्यम से नहीं गिरे हैं और बॉटमॉस्ट ब्लॉक-लेवल चाइल्ड बॉक्स के निचले बॉर्डर-किनारे इसके माध्यम से हाशिये का पतन नहीं हुआ है। हालाँकि, यदि तत्व में नॉनज़रो टॉप पैडिंग और / या टॉप बॉर्डर है, या रूट एलिमेंट है, तो कंटेंट सबसे ऊपरी बच्चे के शीर्ष मार्जिन किनारे से शुरू होता है। (पहला मामला इस तथ्य को व्यक्त करता है कि तत्व के शीर्ष और नीचे के मार्जिन सबसे ऊपर और बॉटमॉस्ट बच्चों के साथ गिर जाते हैं, जबकि दूसरे मामले में पैडिंग / बॉर्डर की उपस्थिति शीर्ष मार्जिन को गिरने से रोकती है।) इसी तरह, यदि एलिमेंट में नॉनज़ेरो बॉटम पैडिंग और / या बॉटम बॉर्डर होता है, फिर कंटेंट बॉटलमॉस्ट बच्चे के निचले मार्जिन किनारे पर खत्म होता है।

यहाँ से: https://www.w3.org/TR/css3-box/#blockwidth


0

नीचे कोड मेरे लिए काम किया।

सीएसएस

.parent{
    overflow: auto;
} 

एचटीएमएल

<div class="parent">
    <div class="child1">
    </div>
    <div class="child2">
    </div>
    <div id="clear" style="clear:both;"></div>
</div>


0

हम कहाँ से शुरू कर रहे हैं

यहाँ कुछ बॉयलरप्लेट HTML और CSS है। हमारे उदाहरण में, हमारे पास दो अस्थायी बाल तत्वों के साथ एक मूल तत्व है।

/* The CSS you're starting with may look similar to this.
 * This doesn't solve our problem yet, but we'll get there shortly.
 */

.containing-div {
  background-color: #d2b48c;
  display: block;
  height: auto;
}

.floating-div {
  float: left;
  width: 50%;
}

.floating-div ul {
  display: inline-block;
  height: auto;
}
<!-- The HTML you're starting with might look similar to this -->
<div class="containing-div">
  <div class="floating-div">
    <ul>
      <li>List Item One</li>
      <li>List Item Two</li>
      <li>List Item Three</li>
      <li>List Item Four</li>
    </ul>
  </div>
  <div class="floating-div">
    <ul>
      <li>List Item Five</li>
      <li>List Item Six</li>
      <li>List Item Seven</li>
      <li>List Item Eight</li>
    </ul>
  </div>
</div>

समाधान # 1: अतिप्रवाह: ऑटो

एक समाधान जो सभी आधुनिक ब्राउज़रों में और इंटरनेट एक्सप्लोरर में IE8 में वापस काम करता overflow: autoहै, मूल तत्व को जोड़ना है। यह IE7 में भी काम करता है, स्क्रॉलबार्स के साथ।

/* Our Modified CSS.
 * This is one way we can solve our problem.
 */

.containing-div {
  background-color: #d2b48c;
  display: block;
  height: auto;
  overflow: auto;
  /*This is what we added!*/
}

.floating-div {
  float: left;
  width: 50%;
}

.floating-div ul {
  display: inline-block;
  height: auto;
}

समाधान # 2: फ्लोट पैरेंट कंटेनर

एक अन्य समाधान जो सभी आधुनिक ब्राउज़रों में काम करता है और IE7 में वापस मूल कंटेनर को फ्लोट करना है।

यह हमेशा व्यावहारिक नहीं हो सकता है, क्योंकि आपके पैरेंट डिव को फ्लोट करने से आपके पेज लेआउट के अन्य हिस्से प्रभावित हो सकते हैं।

/* Modified CSS #2.
 * Floating parent div.
 */

.containing-div {
  background-color: #d2b48c;
  display: block;
  float: left;
  /*Added*/
  height: auto;
  width: 100%;
  /*Added*/
}

.floating-div {
  float: left;
  width: 50%;
}

.floating-div ul {
  display: inline-block;
  height: auto;
}

विधि # 3: फ़्लोटिंग तत्वों के नीचे समाशोधन div जोड़ें

/* 
 * CSS to Solution #3.
 */

.containing-div {
  background-color: #d2b48c;
  display: block;
  height: auto;
}

.floating-div {
  float: left;
  width: 50%;
}

.floating-div ul {
  display: inline-block;
  height: auto;
}


/*Added*/

.clear {
  clear: both;
}
<!-- Solution 3, Add a clearing div to bottom of parent element -->
<div class="containing-div">
  <div class="floating-div">
    <ul>
      <li>List Item One</li>
      <li>List Item Two</li>
      <li>List Item Three</li>
      <li>List Item Four</li>
    </ul>
  </div>
  <div class="floating-div">
    <ul>
      <li>List Item Five</li>
      <li>List Item Six</li>
      <li>List Item Seven</li>
      <li>List Item Eight</li>
    </ul>
  </div>
  <div class="clear"></div>
</div>

विधि # 4: मूल तत्व में समाशोधन div जोड़ें यह समाधान पुराने ब्राउज़रों और नए ब्राउज़रों के लिए समान रूप से बुलेटप्रूफ है।

/* 
 * CSS to Solution #4.
 */

.containing-div {
  background-color: #d2b48c;
  display: block;
  height: auto;
}

.floating-div {
  float: left;
  width: 50%;
}

.floating-div ul {
  display: inline-block;
  height: auto;
}


/*Added*/

.clearfix {
  clear: both;
}

.clearfix:after {
  clear: both;
  content: "";
  display: table;
}
<!-- Solution 4, make parent element self-clearing -->
<div class="containing-div clearfix">
  <div class="floating-div">
    <ul>
      <li>List Item One</li>
      <li>List Item Two</li>
      <li>List Item Three</li>
      <li>List Item Four</li>
    </ul>
  </div>
  <div class="floating-div">
    <ul>
      <li>List Item Five</li>
      <li>List Item Six</li>
      <li>List Item Seven</li>
      <li>List Item Eight</li>
    </ul>
  </div>
</div>

से https://www.lockedownseo.com/parent-div-100-height-child-floated-elements/


-1

मैं पेरेंट को इस सीएसएस का उपयोग करता हूं और यह काम करता है:

min-height:350px;
background:url(../images/inner/details_middle.gif) repeat-y 0 0 ;
padding:5px 10px;   
text-align:right;
overflow: hidden;
position: relative;
width: 100%;

2
आप मिनट-ऊँचाई का उपयोग करते हैं, इसलिए गिनती नहीं होती है;)
पिलाउ

-1

#parent{
  background-color:green;
  height:auto;
  width:300px;
  overflow:hidden;
}

#childRightCol{
  color:gray;
  background-color:yellow;
  margin:10px;
  padding:10px;
}
<div id="parent">
    <div id="childRightCol">
        <p>
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vulputate sit amet neque ac consequat.
        </p>
    </div>
  </div>

आप overflow:hidden;सीएसएस में संपत्ति का उपयोग करके प्रबंधित कर रहे हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.