|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
[HTML / CSS] Layout
Sto sviluppando il layout di un sito e mi sono trovato subito un problema non troppo semplice... premetto che sto cercando di usare i div e non le table.
In pratica io devo dividere la pagina in 4 aree: -Un banner in testa centrato -3 colonne di larghezza fissa. Le colonne devono essere una di fianco all'altra e centrate, quindi allineate con il banner il quale avrà ovviamente una larghezza pari alla somma delle larghezze delle colonne. Le colonne devono occupare tutta l'altezza della pagina a prescindere dal contenuto. il primo problema che mi si è posto era la centratura, sistemata con un div contenitore per le colonne con margin:0 auto. Per affiancare le colonne sono passato a questo stratagemma (notare i valori in percentuale): Codice:
<div id="frame" style=" margin:0 auto; width:100%; height:100%;"> <div id="mn" style="background-color:green; width:860px; height:120px; margin:0 auto;">Menu Flash</div> <div id="corpo" style="width:100%; height:100%; width:860px; margin:0 auto;"> <div id="sx" style="background-color:blue; width:160px; height:100%; margin:0;">sx</div> <div id="cn" style="background-color:red; width:640px; height:100%; margin:0; position:relative; left:160px; top:-100%;">cn</div> <div id="dx" style="background-color:orange; width:60px; height:100%; margin:0; position:relative; left:800px; top:-200%;">dx</div> </div> </div> ![]() ecco la pagina di prova che vi uppo per comodità: apritela con firefox 3 (se ce l'avete) e vedrete che funziona, provate con IE7 (presumo anche il 6 dia lo stesso problema...) e guardate che casino... http://www.demosx.altervista.org Avete qualche soluzione, qualche codice, che sia compatibile con entrambi i browser?
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Jul 2008
Messaggi: 255
|
Codice:
<table> <th scope="col"><div id="mn" style="background-color:green; width:1000px; height:120px; auto;">Menu Flash</div> </th> </table> <table> <tr> <th scope="col"><div id="mn2" style="background-color:red; width:60px; height:320px; auto;">sx</div></th> <th scope="col"> <div id="mn2" style="background-color:blue; width:872px; height:320px; auto;">cn</div></th> <th scope="col"> <div id="mn2" style="background-color:yellow; width:60px; height:320px; auto;">sx</div></th> </tr> </table> |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Apr 2008
Messaggi: 122
|
http://www.blueprintcss.org/
E' una libreria di css che ti permette di usare i div al posto di table per i layout, molto intuitiva. Esempio: Codice:
<div id="header" class="column span-24"></div> <div id="content" class="column span-24"> <div id="sidebar1" class="column span-6"> </div> <div id="contenuto" class="column span-12" > </div> <div id="sidebar2" class="column span-6 last > </div> </div> <div id="footer" class="column span-24"></div>
__________________
Ci sono 10 tipi di persone al mondo: chi conosce il codice binario e chi no. |
![]() |
![]() |
![]() |
#4 |
Junior Member
Iscritto dal: Aug 2008
Messaggi: 8
|
prova a fare flottare a sinistra la colonna sx e quella centrale e a destra la colonna dx, tutto lo racchiudi in un div container con margin auto.
L'header lo fai con un div flottato a sinistra seguito da un div con float:clear. Queste le tre colonne Codice:
#sx { width: 220px; margin: 0 0 0 -220px; padding-top: 5px; padding-bottom: 5px; overflow: hidden; float: left; position: relative; } #dx { float: right; width: 180px; margin: 0 -180px 0 0; padding-top: 5px; padding-bottom: 5px; overflow: visible; position: relative; } #cn { width: 100%; height:auto; overflow: visible; position: relative; float: left; padding-bottom: 5px; } sergio Ultima modifica di sebaldar : 15-09-2008 alle 20:40. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
grazie per le risposte.
x la prima soluzione proposta: vorrei usare i div e non i table... x la 2°: c'ho provato ma non è possibile fare senza installare librerie esterne? x la 3°: non mi funziona ![]() sto seriamente pensando di negare l'accesso agli utenti IE ![]()
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
![]() |
![]() |
![]() |
#6 | |
Member
Iscritto dal: Apr 2008
Messaggi: 122
|
Quote:
![]() Cmq siccome siamo programmatori web questo è al di fuori della nostra portata, e dobbiamo cercare di standardizzare il tutto da soli. La soluzione da me proposta richiede l'inclusione di solo tre file css, peseranno si e no 15Kb insieme, e per mè è ottima poichè è compatibile con explorer e firefox oltre che intuitiva. Se proprio non ti va, la 3^ soluzione è quella che fa al caso tuo, creare delle classi apposite per ogni elemento di layout in modo da dividere la pagina in tanti box... Ricordati però che firefox ed explorer renderizzano diversamente i css, e ti dovresti fare una miriade di classi in più. A questo punto preferisco implementare una libreria senza perdere troppo tempo e bon. ![]()
__________________
Ci sono 10 tipi di persone al mondo: chi conosce il codice binario e chi no. Ultima modifica di ech0s : 15-09-2008 alle 21:32. |
|
![]() |
![]() |
![]() |
#7 | |
Junior Member
Iscritto dal: Aug 2008
Messaggi: 8
|
Quote:
perchè non ti funziona? Codice:
<html> <head> <style media="screen" type="text/css"> #sx { width: 220px; margin: 0 0 0 -220px; padding-top: 5px; padding-bottom: 5px; overflow: hidden; float: left; position: relative; background-color:blue } #dx { float: right; width: 180px; margin: 0 -180px 0 0; padding-top: 5px; padding-bottom: 5px; overflow: visible; position: relative; background-color:red } #cn { width: 100%; height:auto; overflow: visible; position: relative; float: left; padding-bottom: 5px; background-color:orange } #mn { height:auto; overflow: visible; position: relative; padding-bottom: 5px; background-color:green } #corpo { border-style: solid; border-width: 0 180px 0 220px; border-left-color: #f0f0f0; border-right-color: #f0f0f0; } </style> </head> <body> <div id="mn">Menu Flash</div> <div id="corpo"> <div id="sx">xxxxxxxxxxxxxxghfghsx</div> <div id="cn">cn</div> <div id="dx">dx</div> </div> </body> </html> ciao sergio |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
Quote:
In entrambi i casi la colonna e' di altezza dimensionata al contenuto, mentre io le voglio impostate a una percentuale dell'altezza della pagina. Sto provando la soluzione con la libreria, è un pò macchinoso però mi pare venga giusto ed il risultato è uguale per entrambi i browser. p.s: non posso rispondere velocemente perchè sto anche preparando un paio di esami per la prossima settimana ![]() grazie delle risposte
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:13.