Visualizzazione risultati 1 fino 14 di 14

Discussione: [css] altezza div che si adatta

  1. #1
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,253

    Predefinito [css] altezza div che si adatta

    Salve.

    Dopo la prima prova (fallita) in css, ne sto facendo un'altra.

    Sono arrivato a fare questo:

    Codice HTML:
    <!doctype html>
    <html>
    <head>
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>titolo</title>
    <link href="./stile.css" rel="stylesheet" type="text/css" media="screen" />
    <!--
    			Per adesso inesistente ^^
    <link rel="icon" href="immagini/favicon.png" type="image/png">
    
    -->
    </head>
    <body>
    <div id='mega_contenitore'>
    	<div id='alto'>alto</div>
    	<div id='spazio'>spazio</div>
    
    	<div id='dx'>dx</div>
    	<div id='contenuto'>centrale</div>
    	<div id='sx'>sx</div>
    	<div id='footer'>footer</div>
    </div>
    </body>
    </html>
    con le regole:

    Codice:
    body
    {
    	text-align:center;
    }
    
    /*MEGA contenitore*/
    
    #mega_contenitore
    {
    	margin:0 auto;
    	padding:0;
    	margin-top:0px;
    	width:1024px;
    	background:#00FF00;
    }
    
    /*Supercontenitori*/
    /*
    #alto,#spazio,#contenuto,#dx,#sx
    {
    	border:medium #333333 solid;
    }
    */
    
    #alto
    {
    	margin-top:0px;
    	height:120px;
    	
    	background:#0000FF;
    }
    
    #spazio
    {
    	margin-top:0px;
    	height:10px;
    	
    	background:#FF0000;
    }
    
    #contenuto
    {
    	margin-top:0px;
    	width:684px;	/*auto? 100%?*/
    	float:right;
    	
    	background:#FFFF00;
    }
    
    #dx
    {
    	margin-right:0px;
    	float:right;
    	width:170px;
    	
    	background:#9933CC;
    }
    
    #sx
    {
    	margin-left:0px;
    	float:left;
    	width:170px;
    
    	background:#FF9900;
    }
    
    #footer
    {
    	margin-right:0px;
    }
    Come si può vedere, funziona alla perfezione

    ...il problema sorge quando nel div centrale (#contenuto) scrivo o metto degli elementi interni.

    Come faccio a far valere l'altezza dei div (#sx) e (#dx) uguale a quella di (#contenuto) ?

    (poi ci sarebbe il problema del footer, ma credo che una volta sistemate le altezze di #sx e #dx, anche footer si posizionerà correttamente

    Grazie,

    Ciao!

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Prova ad assegnare al #footer la proprietà clear: both.

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,253

    Predefinito

    Grazie per la risposta!

    Però non funziona :(

    ..Il problema credo non sia tanto nel footer, ma in quello di adattare le altezze di #dx e #sx rispetto al div centrale...

    Grazie,

    Ciao!

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Io ho provato a fare qualcosa, ho cambiato un pò la struttura inserendo le colonne e il contenuto all'interno di un altro contenitore. Al contenitore "padre" ho assegnato un'altezza fissa e così sembra funzionare, ma è necessario definire l'altezza.

    Magari qualcuno più esperto può darti una dritta ( rendedo l'altezza dinamica )
    Ultima modifica di javascripter : 24-07-2010 alle ore 15.55.17 Motivo: rimosso il link

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,253

    Predefinito

    Grazie 1000!...

    Ciao!

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Magari questo articolo ti da qualche idea alternativa: http://24ways.org/2008/absolute-columns

  7. #7
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Usando i posizionamenti assoluti si ha comunque qualche problema: l'altezza delle colonne assolute è fissata a quella della colonna principale. Così la colonna principale deve essere la più alta. Un'altra soluzione interessante è questa, ma c'è sempre qualche difetto. Per poter fare un layout perfetto dovremo aspettare molto, le specifiche non sono ancora pronte, e passerà ancora molto tempo prima che i vari browser inizino ad implementarle...

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Se la colonna centrale è quella principale, il minimo è che abbia più contenuto delle altre. Altrimenti è probabile che qualcosa vada riposizionato, perchè è stato piazzato male - magari andava nel footer?

    Al momento, l'unico metodo per avere colonne identiche con uguale priorità è dar loro display: table-cell, ma questo vuol dire tagliare fuori un tot di browser. Meno del previsto, ma comunque un tot.

  9. #9
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    L'altra soluzione di cui ho scritto si avvicina molto a quel risultato, si basa sui margini negativi e sui padding, permette di avere un qualsiasi numero di colonne della medesima altezza, e al contrario dell'altro metodo non c'è una colonna che stabilisce l'altezza delle altre: il tutto si autoregola da sé, come nelle tabelle.

  10. #10
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Si, ma è un hack rischioso. Primo, ho visto molte pagine diventare più di 32k pixel in altezza, basta un buon numero di commenti. Secondo, tentare di forzare dimensioni simili rischia di incappare in strani bug di difficile soluzione, che sono in giro da anni. Solo ultimamente, con sistemi basati di compositing dello schermo (metacity/compiz, windows Vista/7) il problema si sta risolvendo.

    Con quel metodo rischi comunque di rendere faticosa l'esperienza per chi usa Win2k/xp, in un modo che non sai gestire (è un problema di sistema operativo più che del browser). A quel punto, conviene usare feature pulite, futuro-compatibili e gestire i browser vecchi sensatamente.

    edit: fra parentesi, c.v.d. http://www.positioniseverything.net/...heightproblems
    Ultima modifica di dreadnaut : 24-07-2010 alle ore 14.36.53

  11. #11
    Guest

    Predefinito

    io solitamente includo tutti div in un altro che abbia come immagine di sfondo (in questo caso) i colori delle 3 colonne
    non sono molto bravo a spiegarmi :S

  12. #12
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    E' stato un metodo saggio per tanto tempo, con il nome di Faux Columns. Ha le sue scomodità, ma funziona.

  13. #13
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,253

    Predefinito

    Sinceramente volevo utilizzare il metodo di dreadnaut...

    A parte il mio pessimo inglese, ho capito che occorre fare un div "esterno" ai 3 interni (dx, sx e contenuto); metterlo in position:relative; poi quelli interni posizionarli in modo assoluto tranne quello centrale che occorre impostarlo soltanto in larghezza (l'altezza si imposterà con il testo)...

    Ecco il risultato

    E' corretto almeno quello che ho capito?

    Grazie,
    Ciao!
    Ultima modifica di alemoppo : 25-07-2010 alle ore 01.25.20

  14. #14
    Guest

    Predefinito

    un idea simil a quella detta da layoutorialing può essere questa:
    usare due diversi contenitori "generali di cui nell'HTML il container1 conterrà il container2 con il seguente css:
    Codice:
    div#container1{
            background:#fff url(immagine_sfondo_sx.jpg) repeat-y top right;
    }
    div#container2{
            background: url(immagine_sfondo_dx.jpg) repeat-y top left;
    }
    la prima immagine deve chiaramente essere di una dimensione tale da non coprire l'altra...
    a questo punto:
    se la colonna centrale ha un colore di sfondo ed è più lunga delle altre bene, altrimenti è meglio se le immagini sono della larghezza delle colonne laterali.
    per quanto riguarda il css di sx, dx, contenuto, footer e testata io metterei il seguente:
    Codice:
    #testata{
    	width: 1024px;
    	height: 40px;
    	background-color: red;
    }
    #sx{
    	width: 150px;
    	float: left;
    }
    #dx{
    	width: 200px;
    	float: right;
    }
    #contenuto{
    	margin: 0 200px auto 150px;
    	background-color: white; //oppure il colore che vuoi tu o anche ometterlo, se usi immagini di larghezza giusta...
    }
    #footer{
    	clear: both;
    }
    il codice HTML, per chiarezza, sarebbe questo:
    Codice HTML:
    <div id="container1">
    <div id="container2">
    	<div id="testata">
    	</div>
    	<div id="sx">
    	</div>
    	<div id="dx">
    	</div>
    	<div id="contenuto">
    	</div>
    	<div id="footer">
    	</div>
    </div>
    </div>
    poi fammi sapare se funziona...
    scusate se al solito scrivo paginate... mi sa che sono un po' logorroico XD

    ciao

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •