Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Altezza div annidati e larghezza relativa o assoluta

    Ciao a tutti, ho da poco iniziato a cimentarmi nell'impresa di creare un sito ed ho trovato molto utili le guide presenti in questo sito, anche se in effetti ormai molte sono abbastanza datate e non so se ci sono molte novità su cui dovrei aggiornarmi.

    Però andando nello specifico del mio problema, prima di tutto vorrei dei consigli generici, ho letto alcune discussioni in cui si criticava la scelta di posizionare tutti i blocchi tramite scelte di valore assoluto. Io mi son trovato d'accordo con questa idea, ma non vorrei che io sbagli dal lato opposto cercando di impostare tutto in termini relativi. Quindi prima di tutto vorrei qualche consiglio a riguardo, soprattutto per quanto riguarda le larghezze dei div conteiner o per quanto riguarda i loghi da mettere in cima al sito. Conviene impostare una larghezza in pixel? Se si, qual è una larghezza che andrebbe bene con gli attuali browser e risoluzioni dei monitor?

    Poi invece scendendo ancor di più nel particolare vi posto il listato non proprio del layout del mio sito, ma di una semplificazione di esso. Poi da qui penso che dovrei riuscire a fare cose più complicate.
    Eccolo qua:


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Layout Semplice</title>

    <style type="text/css">

    html, body{
    height:100%;
    background:lightgreen;
    }

    div.container{
    width:80%;
    min-height:100%;
    margin:20px auto 0;
    backgroundurple;
    color:black;
    padding:0px;
    }

    div.boxup{
    margin:0;
    background:lightblue;
    clear:both;
    width:100%;
    height:80px;
    }

    div.boxleft{
    background:lightgrey;
    width:20%;
    min-height:100%;
    margin:0;
    padding:0;
    float:left;
    }

    div.boxcenter{
    background:white;
    width:80%;
    min-height:100%;
    margin:0;
    padding:0;
    float:left;
    }

    div.footer{
    width:80%;
    background:black;
    height:40px;
    clear:both;
    margin:0 auto 20px;
    }

    </style>
    </head>

    <body>

    <div class="container">
    <div class="boxup">
    </div>
    <div class="boxleft">
    questo deve stare a sinistra
    </div>
    <div class="boxcenter">
    questo deve stare nel centro-destra
    </div>
    </div>


    <div class="footer">
    </div>
    </body>
    </html>

    Per quanto riguarda il container sono riuscito a estenderlo per tutta l'altezza della pagina tramite i consigli trovati in giro. Ma non riesco ad estendere a tutta la pagina i due box principali quello sinistro e quello centrale. Ovvero vorrei non vedere per nulla il colore viola ma solamente una striscia verticale grigia ed una bianca più larga.

    Inoltre non capisco perchè non viene visto il margine al di sotto del footer. In quanto vorrei lasciare un pò del colore di sfondo oltre che ai lati del container anche al di sotto ed al di sopra.

    Grazie in anticipo per le risposte!

  2. #2
    Non c'è niente di male ad utilizzare div con larghezze e altezze specificate in pixel, anzi in alcuni casi è anche necessario.

    Personalmente quando sviluppo un sito oramai non supporto risoluzioni inferiori a 1024px di larghezza, ma probabilmente anche 1024x768 è oramai utilizzata da pochissime persone.

    Per rispondere alla domanda sul codice, non ho capito bene cosa stai facendo nei CSS. Perché imposti min-height? In genere un div viene esteso in altezza dal contenuto che ci metti dentro, mi sembra abbastanza insensato volerlo estendere forzatamente con min-height.
    Visita il mio blog e canale YouTube dedicati a programmazione web e sicurezza informatica.

  3. #3
    Il problema dei div l'ho "risolto" sebbene non proprio come speravo.. Il mio problema è che volevo le due colonne principali della stessa lunghezza, e alte, almeno, la finestra del browser... Perchè se questo ccs deve essere la base di ogni mia pagina, nell'eventualità che in una pagina ci sia scritto davvero poco penso che starebbe molto male un riquadro alto meno di mezza schermata del monitor..

    Alla fine ho risolto impostando l'altezza del container a 100% (non min-height ma height) ed in questo modo ho potuto settare l'altezza minima dei due div colonna con min-height.

    A quel punto però mi si presentava il classico problema delle due colonne non della stessa lunghezza che ho visto presenta ancora oggi molti problemi (e la soluzione dell'immagine di sfondo al momento non mi piace granchè) e quindi le ho impostate entrambe con altezza 100% ed in caso ci sia più contenuto ho messo l'overflow:auto. Così la schermata dovrebbe essere lunga sempre circa una finestra del browser.. In futuro penso che mi occuperò di nuovo del problema dei due div della stessa altezza perchè non credo che questa soluzione sia ottimale.

    Invece sul margine alla fine del footer mi sai dire nulla?? Ho visto che IE e GC non lo visualizzano, invece Firefox che prima me lo aveva sempre visualizzato, dopo che ho sistemato tutti gli altri problemi non me lo visualizza più!

    Ah, come larghezza ho messo 900px, io per esempio utilizzo un computer portatile 15,4" e risoluzione 1280x800 e mi riempie abbastanza lo schermo.. Però da quel che mi dici, in computer con risoluzioni maggiori potrebbe essere troppo stretto??

  4. #4
    A quel punto però mi si presentava il classico problema delle due colonne non della stessa lunghezza
    Intendi il fatto che se una colonna è più corta "finisce prima" e poi si vede dietro lo sfondo del container? Si può risolvere in vari modi a seconda dell'aspetto grafico che devi ottenere per il sito, se stai parlando di altro spiegati meglio.

    Non ho testato il codice, ma per quanto riguarda footer, se vuoi lasciare dello spazio sottostante, un'altra possibile soluzione che mi viene in mente ora è di aggiungere del padding-bottom al div container, forse così funziona... in realtà settare il margin bottom del footer non credo corrisponda all'effetto che vuoi ottenere, ma forse mi sbaglio.

    Per i 900px credo possa andare bene, io in genere uso una larghezza vicina a questi valori.
    Visita il mio blog e canale YouTube dedicati a programmazione web e sicurezza informatica.

  5. #5
    Originariamente inviato da thecodingmonk
    Intendi il fatto che se una colonna è più corta "finisce prima" e poi si vede dietro lo sfondo del container?
    Si esattamente quel problema! Io per ora l'ho "risolto" mettendo che entrambi sono alti il 100% della finestra e se serve altro spazio spunta lo scroll...

    Io oggi cercando avevo trovato tre soluzioni, una, credo la più conosciuta, si chiamava "Faux Column" che però necessita di una immagine di sottofondo. Un'altra meno conosciuta richiedeva comunque una immagine e dice che poteva dar problemi con l'inserimento dei bordi, ed un'altra consisteva nell'inserire tanti div container quante sono le colonne che si necessitano e poi tramite spostamenti e posizioni relative si risolveva il problema, ma credo che anche questa soluzione presenti dei problemi nel caso che le colonne sia tutte inserite in uno stesso sfondo.

    A parte questo per il problema del footer, il padding del container non lo posso utilizzare in quanto il container per come l'ho fatto io contiene solo le due colonne, l'header e il footer sono divi esterni al container. Per questo non capisco come un semplicissimo margin non funzioni.. In teoria il margin-bottom dovrebbe essere la distanza del footer dal body. Forse è proprio questo il problema, il body non essendo un div non permette di creare questa distanza. Anche se comunque il body in GC mette di default una distanza default dall'alto, quindi non capisco perchè non me la fa inserire in basso..

    Ah, cmq grazie mille dell'interessamento!

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.