Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110

    layout a tre colonne css

    ho un layout a tre colonne... la prima a sx contiene il menu quella centrale il contenuto e a destra notizie extra... la colon sx ha un colore arancione ed ho inserito un menu... il problema e che nn riesco ad estendere la colonna per quanto è lungo il sito perciò mi resta buona parte della stessa bianca perche la colonna di dx è più lunga, come faccio a rendere alta la col sx tnt qnt quella di dx con il css? qst è lo script:

    #left {
    float: left;
    width: 170px;
    margin: 0px;
    padding: 0px;
    background-color:#ffeecc;
    }

    #right {
    float: right;
    width:210px;
    margin: auto;
    padding: auto;
    background-color:#FFFFFF;
    }

  2. #2
    A differenza delle tabelle, che abituano a considerare le celle di una riga sempre della stessa altezza, i box sono indipendenti. Quindi non avranno mai (a meno che non l'abbiano i loro contenuti) un'altezza uguale tra di loro.
    Quello che i CSS permettono è dare l'"illusione" che le colonne siano alte uguali. Per farlo è necessario inserire un box "ad hoc" che racchiuda tutti i box che generano le colonne.

    codice:
    <div id="corpo">
    
    <div id="left">...</div>
    <div id="content">...</div>
    <div id="right">...</div>
    
    </div>
    Suppongo che il box "content" sia l'unico non flottante (e quindi statico) che ha i margini destro e sinistro uguali alle larghezze delle due colonne laterali. Se è così, e quindi il box "corpo" non contiene solo box flottanti, l'altezza di tale box (da non impostare nel CSS) sarà uguale all'altezza del box più alto che esso contiene (presumo "content").
    Se le colonne hanno larghezza fissa, la cosa è molto semplice: imposti via CSS il background del box "corpo" con un'immagine larga esattamente come questo box, alta 1px e ripetuta verticalmente.
    L'immagine dovrà essere divisa in 3 "aree", ognuna di colore diverso, larghe quanto le tre colonne.

    codice:
    #corpo {
    width: LARGHEZZApx;
    background-image: url(IMMAGINE_SFONDO);
    background-repeat: repeat-y;
    }
    LARGHEZZA è ovviamente la larghezza del box "corpo" tale da contenere esattamente i 3 box delle colonne.

    Se però le tue colonne sono a larghezza variabile o sono tutte flottanti, il codice qui sopra va modificato per poter funzionare.
    Ovviamente con questo codice ottieni che tutte e tre le colonne diano l'illusione di essere alte uguali (compresa quella dei contenuti).
    Se volessi dare l'illusione che solo le 2 colonne flottanti siano alte uguali, è un'altra cosa, e più complessa.
    Al limite, facci sapere...

  3. #3
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110
    quindi se io ho capito bene mi consigli di fare cosi:

    1)creare un contenitore "container"
    2)creare i contenitori "left" di 200px, "Content"di 500,"right" e di 200
    3) a container associo un immagine di bg composta da tre colonne di colore diverso di cui la prima ad esempio blu e di 200px la seconda bianca di 400 e la blu terza di 200

    penso che vada bene siccome ho le misure fisse di larghezza provo subito.

  4. #4
    Esatto. Questo però col presupposto che sia sempre il box centrale ("content") il più alto, perché è l'unico box posizionato in modo statico. Se uno dei box flottanti delle colonne dovesse superare "content" in altezza, quel box "uscirebbe" dal box contenitore "container" . Per correggere il codice dovresti dichiarare flottante anche il box "content" e ripristinare il flusso del documento prima di chiudere il contenitore con un tag vuoto (tipo
    ) a cui associ una classe apposita che fa il clear.

  5. #5
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110
    mi capita una cosa strana...
    me ne sono accorto ora... ie mi fa vedere la pagina esattamente come la voglio io, la col sx con il colore giusto e lunga fino in fondo, il tutto però molto più lungo del voluto ... ff invece mi taglia la col sx ma le misure son giuste... ma che casino qst css!

  6. #6
    Beh, non sono poi così incasinati i CSS...basta capirli a fondo (specie le assurdità che combina IE!). Guardando il codice CSS che hai postato nel primo messaggio, ti consiglierei di impostare il margin del box "right" come "0 auto" (auto ti interessa per i soli margini orizzontali). Il padding dello stesso box è auto anch'esso, ma sinceramente non credo funzioni come il margin...prova a impostarlo a 0. Poi, se hai differenze tra IE e FF, al 99% è IE che sbaglia. La colonna centrale com'è posizionata? Puoi postare il suo codice CSS? Ah, dopo il box della colonna destra non deve esserci niente, neanche un box che simuli un footer prima di chiudere il box "corpo". Dimenticavo: il box dei contenuti ha impostati i margini orizzontali, vero?

    Ricorda anche che IE ha un bug che raddoppia il margine di un box flottante dichiarato sullo stesso lato del float (margin-left con float: left e margin-right con float: right).

  7. #7
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110
    mi sembra che vada tutto bene... un'altra cosa... se io volessi avere una misura minima per l'altezza, nel senso vorrei che ad esempio la col sx sia almeno di 500 px in modo che se c'è poco contenuto il sito nn sembri troppo piccolo... si può fare giusto?

  8. #8
    Si può fare...ovviamente con un buon hack per il caro IE (che non interpreta min-height)!

    codice:
    #left {
    min-height: 500px;
    height: auto !important;
    height: 500px;
    }
    La cosa più "ridicola" di questo hack è che sfrutta 2 bug di IE per correggerne un altro...Microsoft, nell'indecente realizzazione di IE, è pure riuscita a metterci dentro bug "ad hoc" che si correggono a vicenda! :maLOL:

    Ah, una cosa...se dopo aver chiuso il contenitore delle 3 colonne hai un altro box (tipo un footer), usalo per "pulire" i posizionamenti flottanti delle colonne destra e sinistra con un clear: both nella sua regola di stile.

  9. #9
    Originariamente inviato da seed_squall_it

    La cosa più "ridicola" di questo hack è che sfrutta 2 bug di IE per correggerne un altro...Microsoft, nell'indecente realizzazione di IE, è pure riuscita a metterci dentro bug "ad hoc" che si correggono a vicenda! :maLOL:
    già :rollo:
    purtroppo la correzione del min-width è invece molto più complessa

  10. #10
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110
    ok! un'altra cosa, per centrare il contenuto della colonna di dx, mettere al centro sia testo che foto come si fà? (intanto 1000 grazie per l'aiuto e la pazienza)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.