2011-11-18 14 views
44

Sono stato googling questo tutta la mattina e non riesco a farlo funzionare:CSS - relativa posizionato div genitore non si estende a figlio assoluta altezza div

ho un DIV genitore con posizionamento relativo e due colonna DIV setup bambino al suo interno, entrambi posizionati Assoluto. Ho bisogno dell'altezza del DIV del genitore per allungare con il contenuto dei DIV interni.

Ho provato a mettere un bit di tipo .clearfix prima dei tag di chiusura per #content ma non sto fluttuando nulla. Ho anche provato ad aggiungere un attributo float al div #content senza alcun risultato. Qualcuno può indicarmi la giusta direzione qui. Chiaramente mi manca qualcosa con il modo in cui i display annidati si influenzano a vicenda.

CSS:

#content { 
width: 780px; 
padding: 10px; 
position: relative; 
background: #8b847d; 
} 

#leftcol { 
width: 500px; 
position: absolute; 
} 

#rightcol { 
width: 270px; 
position: absolute; 
left: 500px; 
margin-left: 10px; 
text-align: center; 
} 

HTML:

<div id="content"> 

<div id="leftcol"> 
<p>Lorem Ipsum</p> 
</div><!-- /leftcol --> 

<div id="rightcol"> 
<img src="images/thumb1.jpg"> 
<img src="images/thumb2.jpg"> 
</div><!-- /rightcol --> 

<br style="clear:both;"> 

</div><!-- /content --> 
+5

È ora di scegliere una risposta? –

risposta

1

Non è necessario position: absolute per questo compito.

#content { 
    width: 780px; 
    padding: 10px; 
    position: relative; 
    background: #8b847d; 
} 

#leftcol { 
    width: 500px; 
    float: left; 
} 

#rightcol { 
    width: 270px; 
    position: relative; 
    margin-left: 510px; 
    text-align: center; 
} 
+0

Funziona ma non mi dà la possibilità di avere la colonna destra o sinistra per spingere l'altezza del div genitore, tuttavia apprezzo la tua risposta e ho imparato qualcosa dalla tua risposta. – user1054093

+1

L'altezza del div genitore dovrebbe crescere con l'altezza delle div child. devi lasciare l'elemento 'clear: both' come nel tuo hidml della domanda – DanielB

4

vostri div colonna non procurare la sua div contenente mentre hanno posizioni assolute come sono rimossi dal normale flusso pagina.

Invece, prova a farle fluttuare, poi hai un div chiaro: entrambi; dopo di loro.

+0

Quindi, la mia migliore scommessa per avere il div principale sempre al di sotto del contenuto sarebbe un fluttuare ogni colonna a destra e sinistra, rispettivamente? – user1054093

+0

Puoi fluttarli entrambi a sinistra, o farli fluttuare entrambi a destra, o fluttuare in un modo che non ha importanza. Se poi hai un div con clear: both; sotto di loro (sempre all'interno del div genitore) il tuo genitore div si estenderà fino al fondo delle tue due colonne. – Helen

6

clearing funziona ma Ive ha avuto risultati strani. poi ho trovato un post che lo rende molto più semplice e perfetto in tutti i browser.

Imposta le immersioni del tuo bambino in virgola mobile: sinistra/destra. Quindi metti "overflow: hidden" sul genitore. Perché non hai specificato un'altezza, si avvolgerà perfettamente con gli elementi figlio. Non ho usato la pulizia da anni ormai.

+7

questo non fa crescere l'altezza del div genitore con il bambino posizionato in assoluto! – Nielsm

+0

@Nielsm lo so, quindi perché ho detto "imposta le tue div al bambino a galleggiare" (piuttosto che posizionare in modo assoluto). prova a leggere tutte le risposte prima di commentare in futuro, ti fa risparmiare sciocchezze. – Lee

+0

Spiacente digitato il mio commento sbagliato. Ho effettivamente sostituito la posizione: assoluta con float: sinistra. Non fa il trucco nel mio caso. – Nielsm

101

Il lato oscuro della forza è un percorso per molte abilità che alcuni considerano essere innaturale.

$(document).ready(function() 
{ 
    var objHeight = 0; 
    $.each($('#content').children(), function(){ 
      objHeight += $(this).height(); 
    }); 
    $('#content').height(objHeight); 
});​ 
+4

Ho votato solo per la tua descrizione. – Beans

2

ho appena stato in lotta con quello per un po 'e ho trovato una vera soluzione è CSS solo per cambiare il posizionamento di div 'assoluti' a 'relative'. Funziona davvero !!!

Testato su un Mac, utilizzando Safari 5.1.5 e Chrome 21,0 ....

Spero che questo vi aiuterà a qualcun altro.

+8

Questo non risolve il problema se sono richiesti div assoluti –

Problemi correlati