Questo sito si vede molto meglio in un browser che supporta web standards, ma è comunque accessibile a qualsiasi browser o strumento di internet.
Il colore di sfondo per questa colonna è attualmente una immagine gif larga 200 pixel applicata all'elemento page Frame con un comando background-repeat: repeat-y.
Potete cancellare o cambiare il background nel file colors.css, con i colori background/foreground ed anche i colori di ogni altro elemento di questa pagina.
Nello scegliere i colori provate ad usare le varie tonalità di uno stesso colore. Fornisce una maggiore uniformità e pulizia estetica.
Un altro metodo consiste nello scegliere uno schema di colori che avete visto nella vostra vita e che pensate sia bello; a questo punto "rubate" questo schema di colori. Per esempio se vedete un poster che vi sembra proprio bello provate lo schema dei suoi colori in questo layout.
Font family (face type) e grandezza possono essere cambiati usando il foglio di stile theme.css. Questo foglio di stile viene letto da Netscape 4 per cui ci vuole un pò di attenzione con quello che mettiamo qui. Oppure potete mettere questo file col comando @import per cui sarà nascosto a Netscape 4.
Magari qualcuno vorrebbe diminuire la grandezza del font della colonna innerContentColumn (la zona in bianco qui a destra) o aumentare le misure del font usate nei menu orizzontale e verticale.
x x x x x questo serve per testare il bug con il corsivo di ie x x x x x
Inizia la traduzione:
Potete copiare tutto il contenuto, incluso i fogli di stile e l'Html di questa pagina. Questo lavoro è qui per chiunque lo voglia, gratis e senza restrizioni di copyrights o licenza. In altre parole prendetevi la mia pagina web, per favore.
Questa pagina include i links ai files di css che ho usato qui.
Avere un layout a due colonne che usa solo CSS (senza tavole), che ha un footer che allinea entrambe le colonne sotto senza guardare a quella che può essere la più lunga. Che supporti i grandi browsers e degradi bene nei browsers con poca o alcuna dimistichezza con i CSS. E questo include Netscape 4.
Riuscire a mostrare la separazione fra le due colonne in qualche maniera (bordo) usando solo CSS (quindi senza far uso di immagini, sfondo o altro). Includere un masthead (trivial) ed includere menu basati in liste non numerate. Avere colori di sfondo propri ad ogni colonna è possibile ma, attualmente, ho usato solo una immagine di sfondo (per la colonna di sinistra).
La colonna di sinistra ha una larghezza dichiarata (200px in questo caso) e galleggia (float) a sinistra. La colonna principale (contenitore) non ha una larghezza specificata ma si autodecide con il margine di sinistra. Il box del footer (box ai piedi della pagina) ha l'attributo del CSS "clear" settato a sinistra in modo che non importa quale delle due colonne (sinistra o contenitote) è più lunga: il footer sarà sempre a fondo pagina.
L'intero layout è incapsulato in un DIV di blocco chiamato pageFrame. Questo permette ad un margine di essere applicato all'intera pagina senza dovere editare le proprietà CSS dei vari elementi. Permette inoltre in maniera molto facile di mettere questo layout ad una larghezza fissa.
L'uso dei bordi è lealmente straight-forward. L'unico momento che le cose diventano tricky è con il bordo che separa la colonna di sinistra con quella del contenitore. Il problema qui è che se definiamo che il bordo appartiene alla colonna di sinistra, la linea che separa sarà alta come lo è la colonna di sinistra. Se invece la facciamo appartenere al contenitore allora se la colonna di sinistra è più lunga la linea si fermerà prima di arrivare al footer. Noi stiamo usando un layout fluido per cui non possiamo sapere che tipo di settaggi ha l'utente finale che ci legge. Per cui per rimediare ad entrambe le possibilità (la sinistra è più lunga del contenitore o il contenitore è più lungo della colonna di sinistra) entrambi i bordi sono definiti in modo da sovrapporsi.
Per sovrapporre i bordi dobbiamo ottenere pixel perfetti. Per questo motivo la colonna di sinistra è impostata a 200px di larghezza e il margine di sinistra della colonna contenitore è impostato a 199px. Tuttavia questo non funziona molto bene nei vecchi browser. Per questo ci sono alcuni CSS supplementari nel foglio di stile simple con larghezze e margini della colonna di sinistra che possono sembrare un pò inutili. IE 4 ha bisogno di un margine di -200px a destra sulla colonna di sinistra e Netscape 4 ha bisogno di un margine di 2px a sinistra sulla colonna di sinistra. Alla fin fine funziona ed è quello che ci interessa.
Guardando al sorgente di questa pagina si vedranno alcune istanze (3) dove c'è un DIV di blocco all'interno del quale è messo un DIV di blocco (leftCoumn contiene innerLeftColumn). Il motivo di tutto questo è che IE e Mozilla (insieme ad altri browser) hanno metodi diversi per misurare la larghezza e l'altezza dei boxes. IE includerà margine, padding e bordi all'interno di una larghezza specifica di layout. Mozilla, che si conforma agli standard del CSS, prende la larghezza definita di un box e poi aggiunge padding, bordi e margine sopra di questo. Questo diversa maniera di vedere i modelli di box ha creato problemi non piccoli agli sviluppatori del web che per anni hanno cercato di risolvere. La soluzione più comune è stata quella di usare il box model hack. Io ho fatto uso di una soluzione diversa.
Per risolvere il problema del box ogni box è messo all'interno di un altro. Il blocco esterno contiene gli attributi di dimensione della larghezza (e altezza) e solo quei due attributi che influiscono sulle dimensioni di un box. Il box interno è dove possono essere usati padding, bordo e margini. Usando questo metodo sia IE che Mozilla renderanno correttamente i boxes indipendentemente da quale modello di box si sta facendo uso. In questa maniera possiamo tenerci lontani dall'hack box model hack. Non è che box model hack sia non valido o che non si dovrebbe usare. E' soltanto un fatto di gusto personale di star lontani da quel particolare hack.
A me importa, perché c'è un punto più grande da esaminare. Volevo sapere di cosa si trattasse. Ha qualcosa a che fare con lo sforzo che si prova a venire incontro a tutti i vostri utenti e questo anche se avete, per esempio, una utenza di base con IE 6, l'esplorazione del supporto di altri browsers e l'apprendimento da questa esperienza ha un valore maggiore del tempo salvato ignorando il problema.
Ma questo è un punto di vista condiviso solo dagli sviluppatori duri a morire di CSS/web che sono pazzi abbastanza da godersela con questo tipo di esplorazione. Noi li chiamiamo masochisti.
La morale è che, sebbene avete coperto il 98 per cento degli utenti nel vostro progetto di layout, quel 2 per cento potrebbe essere quello più importante da supportare e quella mancanza di supporto potrebbe tornare indietro a mordervi nel posteriore.
Ci sono hacks usati in questo layout. Il motivo è dovuto al fatto che ci sono alcuni piccoli bugs all'interno di ogni singolo browser che possono distruggere il layout. L'uso di sovrapposizione dei bordi in questo layout richiede la perfezione in pixel che è il solo motivo del far uso di hacks di CSS. I fogli di stile usati contengono alcune spiegazioni di quali hacks di CSS sono stati usati e perché.
Sembra che IE5/Win non prenda in considerazione la larghezza di testo in corsivo quando calcola la larghezza di un box e dove auto-spostare il testo all'interno del box. Quando il testo è finalmente reso all'interno del box le posizioni di spostamento sono disinserite ed alcune linee sono più larghe del box. Il motore di rappresentazione di IE fa spazio aumentando la larghezza del box. Comunque tutti gli altri box, che sono stati già misurati, ora sono troppo larghi per adattarsi nello spazio disponibile. Ciò distrugge il layout mentre IE prova a riposizionare tutti gli elementi all'interno della pagina per soddisfare tutti i vincoli dello spazio (larghezza).
Nel caso di questo layout, abbiamo un box colonna di sinistra fatto galleggiare con una larghezza-fissa e un box contenitore a destra fatto galleggiare con una larghezza variabile. A causa di questo bug, il box contenitore è troppo largo per adattarsi nello spazio disponibile e viene spostato giù sotto la colonna galleggiante di sinistra. E questo non lo vogliamo.
Questo articolo spiega quello di cui sto parlando.
La soluzione suggerita è quella di regolare l'attributo di overflow (trabocco) in visibile. Questo non dovrebbe avere effetto su alcun altro browser perché con loro non ci sarà overflow e perché loro calcoleranno correttamente il layout. Tuttavia per questo layout regolare l'altezza della colonna(e) in questione al 100 per cento è anche richiesta.
Questa soluzione non funziona con IE 5.0. Una soluzione suggerita è quella di diminuire la larghezza del box dalla misura desiderata in modo che quando IE aumenta la larghezza c'è ancora spazio da riempire. Questo non funziona in questo layout visto che il bordo fra la colonna sinistra e il contenitore di destra è fatto dall'appropriato bordo definito in ognuno dei due box. Anche se abbiamo 1 solo pixel fuori il bordo si rompe.
L'altra soluzione suggerita è quella di nascondere l'overflow. IE 5.0 questo lo capisce e nel caso peggiore i bordi di una parola o due vengono tagliati ma questo non dovrebbe succedere molto spesso se non addirittura mai. Comunque questa soluzione non sembra funzionare con questo layout. Molto probabilmente per la natura dei box e di tutto l'altro CSS usato.
Dopo alcune prove-e-errori una soluzione che funziona con questo layout è stato trovato. Nascondendo l'overflow ed anche applicando una larghezza del 100 per cento ed una altezza in auto sembra funzionare. I IE float bug(s) sono risolti mettendo una altezza del 100 per cento. Comunque sembra che ci siamo liberati anche del bug-float di IE 5.0 applicando questa soluzione, meno male. Però, proprio per star sicuri, abbiamo usato un paio di hacks per vedere applicato il CSS in questione dal solo IE 5.0.
La completa soluzione può essere vista in complex.css.