2011-10-08 14 views
7

Sto cercando un layout css 3 colonne, con 1 sezione fissa al centro e 2 barra laterale fluido intorno:Come creare un layout fluido fluido a 3 colonne?

http://www.uploadup.com/di-UEFI.png

mezzo ha 250px larghezza (per esempio) e le barre laterali hanno (al minimo) Larghezza 150 px. se la larghezza del browser era superiore a 550 px (250 + 300), le barre laterali dovrebbero avere una larghezza maggiore. (e il mezzo è sempre 250px)

Cosa può fare il CSS? con compatibilità in tutti i browser.

nota: Ho visto this page, ma non so come cambiare per il mio desiderio

+0

lo prendo "tutti i browser" comprende IE7. Include anche IE6? – thirtydot

+0

sì, ma posso usare un altro file css per ie6 – mrdaliri

+1

Raramente dico questo, ma dovresti proprio imparare CSS invece di chiedere alle persone di farlo per te. Il motivo è che non capirai come modificare il CSS quando necessario. I CSS sono qualcosa che ti ripaga se passi il tempo per impararlo. –

risposta

8

Si può provare a utilizzare inline-block s per esso. Sono usati piuttosto raramente, ma a volte sono abbastanza buoni per i layout.

Quindi, guardare a questo: http://jsfiddle.net/kizu/UUzE9/ - con inline-block s è possibile creare layout con qualsiasi numero di colonne fisse e fluide. L'algoritmo:

  1. In un primo momento, si aggiunge l'imbottitura pari alla somma di tutte le colonne fisse a l'involucro. Nel tuo caso - 250px.
  2. Quindi, si aggiunge min-width al wrapper uguale alla somma della larghezza minima di tutte le colonne fluide.
  3. Quindi, si aggiunge white-space: nowrap al wrapper, quindi le colonne non salteranno.
  4. E quindi basta aggiungere tutte le colonne di cui hai bisogno.

Se hai bisogno di supporto per IE7 e meno, ci sono alcune cose aggiuntive da sapere tranne che per comune inline-block correzione:

  1. è necessario tornare white-space: normal al bambino interiore di una colonna o le colonne vinti rimanere su una linea.
  2. In IE può apparire uno scorrimento fantasma, forse c'è un modo migliore per rimuoverlo, ma io uso solo overflow: hidden su qualche wrapper.

Enjoy :)

+0

20 minuti fa non pensavo che questo avrebbe funzionato in IE6, ma lo fa. Questo è perfetto se le colonne non devono essere all'altezza uguale. – thirtydot

+0

Sì, comunque è triste che tu abbia bisogno di wrapper e overflow extra: nascosto solo per IE. – kizu

+0

Ottengo bordi bianchi visualizzati tra i div. Come posso evitare questo? (può essere riprodotto usando TidyUp in fiddle ed Esegui nuovamente il codice) – purbsel

1

Se non si utilizza uno dei modelli pronti là fuori,
Si può iniziare con tre div galleggiava a sinistra, al centro con larghezza: 250px e quelle esterne con min-width: 150px
si potrebbe desiderare di sostituirlo con il tag <section>, basta dargli un display: block

+0

e come posizionarli accanto? larghezza galleggiante e margine? – mrdaliri

+0

da lì in poi, dipende da te. dipende dagli stili visivi che desideri applicare. –

+0

il mio problema è lì (mi dispiace per il cattivo inglese) non so come posso metterli. e quali stili dovrei usare. – mrdaliri

4

per rendere Thi s lavoro in IE6/7 senza JavaScript, il modo più semplice per farlo è con uno table.

Lo so, lo so. Non è che in questo caso il non è valido.

See:http://jsfiddle.net/thirtydot/Q2Qxz/

testato in IE6/7 + Chrome, e sarà solo di lavoro in tutti gli altri browser moderni.

HTML:

<table id="container" cellspacing="0" cellpadding="0"> 
    <tr> 
     <td id="left">fluid</td> 
     <td id="mid">fixed</td> 
     <td id="right">fluid</td> 
    </tr> 
</table> 

CSS:

html, body { 
    margin: 0; 
    padding: 0; 
    border: 0 
} 
#container { 
    border: 0; 
    table-layout: fixed; 
    width: 100% 
} 
#container td { 
    vertical-align: top 
} 
#mid { 
    width: 250px; 
    background: #ccc 
} 
#left { 
    background: #f0f 
} 
#right { 
    background: #f0f 
} 
+0

grazie; ma non è possibile con 'div'? – mrdaliri

+0

Posso pensare a un modo che funzioni in IE7, ma * non * funziona in IE6 che "usa' div's ". Vuoi che lo pubblichi? – thirtydot

+0

Oh, e un'altra domanda: le colonne devono essere all'altezza uguale? – thirtydot

Problemi correlati