2012-04-17 14 views
5

dovrebbe essere una semplice soluzione a questo:CSS3: Floating primo div tra secondo e terzo

ho div nel seguente ordine:

<div id="middle"></div> 
<div id="right"></div> 
<div id="left"></div> 

devo avere loro in questo ordine. Usando i float, come faccio a ottenere il primo div ("middle") tra le seconde div.

Ogni div ha un'altezza impostata e una larghezza impostata (in px).

Ho provato a fare float:left; al centro:

[[centrale] a destra] [left]

e poi float:right; sul cluster superiore:

[ left [[middle] right]]

, ma si presenta come

[centrale] [left] [a destra]

Qualsiasi aiuto?

EDIT: questa è la fonte di corrente:

http://pastebin.com/sjiw9PLn

http://pastebin.com/NMsWk1nZ

+0

"Devo averli in questo ordine", quindi non sarà "facile". –

+2

Puoi aggiungere qualche altro div come wrapper? – kapa

+0

@DavidThomas - Ho pensato tanto: P – Qix

risposta

7

si può scrivere in questo modo:

div{ 
display:inline-block; 
} 
#left{ 
float:left; 
} 
#right{ 
float:right; 
} 

Scegli questa http://jsfiddle.net/8amez/

+0

No, non funziona. La colonna centrale è in alto. Se faccio '.left'. e '.right' per la seconda/terza classe, il div superiore rimane semplicemente sulla propria linea. – Qix

+0

Oh aspetta, l'ha fatto! Non avevo tolto il galleggiante sulla colonna centrale – Qix

0

Se vengono impostate le larghezze e altezze, utilizzare l'attributo css:

position:absolute; 

e giocare con:

left: 100px; /* width of the div on the left */ 
1

Se si è, infatti, in grado di aggiungere un elemento di involucro div, allora questo funziona (nella misura in cui il vostro semplice esempio) a JS Fiddle:

​#left { 
    float: left; 
} 

​#wrap { 
    width: 80%; 
    float: right; 
} 

​#wrap #middle { 
    float: left; 
} 

#wrap #right { 
    float: right; 
}​ 

Dato il seguente codice HTML:

<div id="wrap"> 
    <div id="middle">middle</div> 
    <div id="right">right</div> 
</div> 
<div id="left">left</div>​​​​​​​​​​​​​​​​​​ 

Tenere presente, tuttavia, che è probabile che sia abbastanza fragile; e sarebbe meglio raggiunto da ri-ordinare il mark-up, o, se ciò non può essere cambiata sul lato server, o in HTML, utilizzando Javascript per spostare le cose, ad esempio:

var middle = document.getElementById('middle'), 
    left = document.getElementById('left'); 

middle.parentNode.insertBefore(middle,left.nextSibling);​ 

JS Fiddle demo .

+0

+1 per il suggerimento 'insertBefore'! – Qix

-1

Presumendo che HAS sia in questo ordine per alcuni strumenti di scraping che afferrano il codice basandosi su di esso in questo modo, perché non aggiungete un po 'di JavaScript per mescolarli dopo che la pagina è stata caricata.

Problemi correlati