2013-05-09 17 views
6

È abbastanza facile fare due div sovrapposizioni quando la dimensione del div contenitore è nota ma cosa succede se l'altezza div non può?Due div sovrapposti con altezza variabile = senza altezza sul contenitore

ho cercato di farlo senza manipolare Altezza contenitore: http://jsfiddle.net/AJfAV/ Ma #text2 andare oltre #text3 e non "spingere" esso. Come si può ridimensionare automaticamente il #container?

riesco a raggiungere il mio obiettivo utilizzando jQuery UI, ma sento che questo non è una soluzione elegante: http://jsfiddle.net/AJfAV/6/

+0

è un problema se #container ha una larghezza fissa ?? –

risposta

2

E 'questo quello che ti serve?

Updated fiddle:

che sto impostando height al default, auto, utilizzando jQuery, come questo:

$("#container").css("height", "auto"); 

È anche possibile impostare: height: auto; in CSS.

+0

Non funziona. Almeno il modo in cui mi aspettavo. – user1707414

+0

Ho aggiunto una soluzione per mostrare esattamente ciò che mi aspettavo, ma sono sorpreso che l'altezza del contenitore debba essere corretta http://jsfiddle.net/AJfAV/5/. Nella tua soluzione/violino, "testo3: questo dovrebbe apparire sotto il testo1 e il testo2" non appare sotto il testo1. – user1707414

0

Hai bisogno di posizione: assoluta? È possibile utilizzare il posizionamento assoluto se non si desidera eseguire alcuna disposizione, ma un posizionamento. Il posizionamento assoluto prende un elemento completamente fuori dal flusso di elementi. Non sanno nulla del suo esistente.

È possibile utilizzare i galleggianti e una tecnica per racchiudere i galleggianti. Sto usando chiaro:

.cl-left { 
    clear: left; 
    height: .1px; 
    font-size: 0; 
    line-height: 0; 
} 

Non dimenticare di aggiungere <div class="cl-left">&nbsp;</div>.

Inoltre, viene utilizzato un margine negativo. Pertanto, # text2 è inchiodato a destra.

http://jsfiddle.net/AJfAV/7/

+0

In effetti non ho bisogno di assoluto. Vorrei mantenere il flusso degli elementi così come sono, ma non sono in grado di trovare una soluzione senza posizione: assoluta. – user1707414

+0

Puoi usare float ma le tabelle css non funzioneranno perché la dissolvenza influisce sulla proprietà display. Inoltre, i margini non sono applicabili alle celle della tabella. – Salomonder

+0

Ho frainteso? – Salomonder

0

questo può essere risolto se ha rimosso posizionamento assoluto di #text1 e #text2.

e fare #text2 sovrapposizione #text1 facendo sia float:left e impostare margin-left:-30px per #text2.

ora diamo prova che: http://jsfiddle.net/RPe4H/

Il problema ora è che quando #text1 è attivata, #text2 galleggerà per alto a sinistra #container, che ciò accada perché JQuery impostato display:none sull'elemento quando non girevoli è fatto.

ora di risolvere questo, mettere # testo1 e testo2 # all'interno di contenitori con la stessa larghezza, in modo da #text non influisce il flusso quando è impostato su display:none, anche è necessario impostare min-height:1px sul contenitore di #text1.

ora funziona come previsto http://jsfiddle.net/MyyF6/1/

Problemi correlati