Nella home il div centrale bianco adatta la sua altezza al contenuto...vorrei che le due colonne verdi a lato avessero la stessa altezza del div centrale bianco, come si può fare?
Nella home il div centrale bianco adatta la sua altezza al contenuto...vorrei che le due colonne verdi a lato avessero la stessa altezza del div centrale bianco, come si può fare?
Purtroppo non c'è (attualmente) un modo elegante per ottenere questo risultato. Potresti usare i valori table della proprietà display, altrimenti per farlo con i float leggi questo articolo: http://matthewjamestaylor.com/blog/e...r-css-no-hacks.
Ho seguito il link che mi hai dato e ho riscritto la pagina da zero.
Sono arrivato fino al capitoletto "Adding extra nested containers", perchè da quello in poi non ho più capito bene.
Cosa mi manca affinchè le colonne si allineino alla più alta?
Il link è sempre questo.
In questi casi io risolvo aggiungendo un contenitore alla pagina, dello stesso colore delle colonne più corte, così risolvo il problema.
Come dice australiaforever prova a dare al div "contenitore" lo stesso colore di sfondo dei due div "destra" e "sinistra", dovrebbe bastare
Funziona, grazie mille! ;)
E se volessi "centrare" il contenitore e quindi tutto il contenuto al centro della pagina, ovviamente in senso orizzontale?
Funziona, ma le colonne laterali devono essere sempre più corte di quella centrale, altrimenti si presenta il problema al contrario, vedresti il verde sotto il bianco.
Per centrare il tutto prova ad aggiungere al div "contenitore", nel css:
margin-left: auto;
margin-right: auto;
Ultima modifica di stefanodurso : 23-08-2012 alle ore 16.59.03
Per centrare basta che al div contenitore dai un margin:auto
esempio:
Codice:#contenitore {margin:auto; width:1000px; }
@stefanodurso: esite un trucco per gestire anche il caso in cui le colonne laterali siano più lunghe di quella centrale?
Comunque ho provato entrambe le soluzioni che mi avete proposto riguardo i margini ma non succede nulla...
togli il "float: left;" dal div "Contenitore"
Tolto il float:left ma le colonne verdi non sono più verdi :(
Non vedi più il colore perché manca la proprietà height.
Copia e incolla tutto questo codice.
Codice:body { background-color:#BBBBBB; } #contenitore { width:1000px; margin:auto; background-color:#C6D580; height:269px; } #sinistra { float:left; width:200px; } #centro { float:left; width:600px; background-color:#FFFFFF; } #destra { float:left; width:200px; }
Ma se fisso l'altezza del div a 269 px non ottengo più il fatto che a seconda del contenuto le colonne si allunghino o accorcino...no?
Purtroppo no, ma se lo vuoi centrato devi fare così, altrimenti puoi usare il margin-left e posizionarlo ad occhio, ma non è la stessa cosa, anzi risulterebbe sballato per altre risoluzioni.
Questo è un punto debole per chi crea siti.
Ah ora ho capito perchè l'hai messo a 269px, perchè è esattamente la lunghezza della colonna bianca, ma la colonna bianca deve adattarsi ai contenuti che ci metto...deve esserci un modo per centrare il tutto e contemporaneamente mantenere l'adattamento verticale no?
Ho un idea.
Prova a fare così
Al posto del colore che ho messo io metti il tuo verde.Codice:body {width:1000px; margin:auto; } #contenitore {background-color:#ffffff overflow:auto; }
Ultima modifica di australiafever : 24-08-2012 alle ore 12.22.31
Magico! :) Funziona perfettamente!
Già che ci sono posso chiedere anche come dovrei fare se adesso volessi inserire un header e un footer sempre larghi 1000px?
Avendo il contenitore non devi più mettere il width, quindi basta mettere l'height
Adesso ti scrivo il codice html e css.
Codice HTML:<html> <head> <title>Titolo</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div id="contenitore"> <div id="header"> <h1>Titolo</h1> </div> <div id="sinistra"> <p>Link1</p> <p>Link2</p> </div> <div id="centro"> <p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p> </div> <div id="destra"> <p>Altro</p> </div> </div> <div id="footer"> <p>Testo footer</p> </div> </body> </html>
Copia questo e dovrebbe funzionare.Codice:*,html {margin:0; padding:0; } body { background-color:#BBBBBB; margin:auto; width:1000px; } #contenitore { background-color:#C6D580; overflow:auto; margin:0; padding:0; } #sinistra { float:left; width:200px; } #centro { float:left; width:600px; background-color:#FFFFFF; height:270px; } #destra { float:left; width:200px; } #header {height:60px; margin:0; background-color:#009900; } #footer {height:30px; background-color:#009900; }
Ultima modifica di australiafever : 24-08-2012 alle ore 12.56.11
Li piazzi semplicemente prima e dopo il contenitore del corpo pagina, non è necessario specificare la larghezza, occuperanno quella disponibile che è già 1000px.
Metti anche la dichiarazione di DOCTYPE, altrimenti potresti avere problemi con alcuni browser.
Ultima modifica di karl94 : 24-08-2012 alle ore 13.13.10
Grazie mille ad entrambi! :)
Guardando il tuo codice noto che hai messo delle chiusure tipiche dell'XHTML, dovresti sistemarle.
in questo modoCodice HTML:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>Titolo</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div id="header"> <img src="logo.jpg" alt="Logo" /> </div> <div id="contenitore"> <div id="sinistra"> <p>Link1</p> <p>Link2</p> </div> <div id="centro"> <p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p> </div> <div id="destra"> <p>Altro</p> </div> </div> </body> </html>
Codice HTML:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>Titolo</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div id="header"> <img src="logo.jpg" alt="Logo"> </div> <div id="contenitore"> <div id="sinistra"> <p>Link1</p> <p>Link2</p> </div> <div id="centro"> <p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p><p>Testo</p> </div> <div id="destra"> <p>Altro</p> </div> </div> </body> </html>
Se volessi invece utilizzare XHTML Strict che codice dovrei inserire come DOCTYPE?
Questo
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Fatto ;) Grazie ancora!