Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Corretta gestione dei bordi dei DIV

    Mi sono incaponito per capire il modo in cui FF e IE trattano i bordi degli elementi.
    Ho realizzato un sito di prova (tableless) che dovrà avere layout:

    Il codice html è il seguente:
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
    <head>
    <title>Test</title>
    <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
    </head>
    <body>
    <div id="header">header
    </div>
    <div id="middle">
    <div id="left">left
    </div>
    <div id="right">right
    </div>
    </div>
    <div id="bottom">bottom
    </div>
    </body>
    </html>
    Mentre il css è il seguente:
    body {
    color: #000000;
    font-family: Tahoma;
    font-size: 100%;
    text-align: center;
    margin: 0 auto 0 auto;}

    div#header {
    background-color: #ccffff;
    border: 1px #000000 solid;
    height: 100px;
    margin: 0 auto 0 auto;
    text-align: left;
    width: 700px;}

    div#middle {
    border: 0px #000000 solid;
    margin: 0 auto 0 auto;
    padding:0px;
    text-align: left;
    width: 700px;}

    div#left {
    background-color: #ffccff;
    border: 1px #000000 solid;
    float: left;
    padding:0px;
    text-align: left;
    width: 150px;}

    div#right {
    background-color: #ffffcc;
    border: 1px #000000 solid;
    float: left;
    padding:0px;
    text-align: left;
    width: 550px;}

    div#bottom {
    background-color: #ffcccc;
    border: 1px #000000 solid;
    clear: both;
    height: 30px;
    margin: 0 auto 0 auto;
    text-align: left;
    width: 700px;}
    Su IE ottengo questo (corretto):

    mentre su FF ottengo quest'altro (non corretto):


    Sembra che il anche se il DIV "middle" continui a mantenere il bordo anche se è lo spessore indicato è di 0px, Come si vede dalla seguente immagine:


    ed infatti, considerando che la somma delle larghezze dei due DIV interni al DIV "middle" dà proprio la sua larghezza (senza considerare i bordi), il DIV "right" va a capo.
    Di sicuro ci sono 1000 modi per risolvere questa situazione: vorrei sapere quelle che secondo voi è più giusta (secondo le regole del w3c?).

    Grazie a tutti.

  2. #2

    Re: Corretta gestione dei bordi dei DIV

    Originariamente inviato da daguanno
    Mi sono incaponito per capire il modo in cui FF e IE trattano i bordi degli elementi.
    Ho realizzato un sito di prova (tableless) che dovrà avere layout:

    Il codice html è il seguente:

    Mentre il css è il seguente:

    Su IE ottengo questo (corretto):

    mentre su FF ottengo quest'altro (non corretto):


    Sembra che il anche se il DIV "middle" continui a mantenere il bordo anche se è lo spessore indicato è di 0px, Come si vede dalla seguente immagine:


    ed infatti, considerando che la somma delle larghezze dei due DIV interni al DIV "middle" dà proprio la sua larghezza (senza considerare i bordi), il DIV "right" va a capo.
    Di sicuro ci sono 1000 modi per risolvere questa situazione: vorrei sapere quelle che secondo voi è più giusta (secondo le regole del w3c?).

    Grazie a tutti.
    Secondo me ci sono diversi errori concettuali nel tuo codice.
    _ Il div che hai chiamato middle non serve.
    _ Il blocco right ha float:left.

    Ti consiglio di guardare la guida al layout con CSS di html.it (http://css.html.it/guide/leggi/3/gui...iti-con-i-css/), in particolare le sezioni riguardanti il layout a due colonne con il float.

  3. #3
    _ Il div che hai chiamato middle non serve.
    Tu riesci ad allineare al centro due DIV adiacenti? Io non ce l'ho fatta...
    Nel link che mi hai dato non se ne parla!

    _ Il blocco right ha float:left.
    Se leggi in giro, molti dicono che in ogni caso messo.

    Comunque non mi sembra che questi due appunti potessero risolvere il problema... Mah...

  4. #4
    Non sono io ad essere incapace, è IE che si comporta in modo strano.
    Il problema era già noto come dimostra questo link: ConStile.org

    Non ho ancora letto approfonditamente l'articolo, ma credo che risolva il mio problema.

  5. #5
    Utente di HTML.it L'avatar di salasir
    Registrato dal
    Apr 2004
    Messaggi
    1,881
    Io ti consiglierei di togliere innanzitutto il prologo XML che non serve ed inoltre crea problemi.

    Poi riparti da quello che ottieni così.
    Maurizio

    "se ami il lavoro che fai, non lavorerai mai un giorno in vita tua!"

  6. #6

    Re: Re: Corretta gestione dei bordi dei DIV

    Originariamente inviato da panta1978
    Secondo me ci sono diversi errori concettuali nel tuo codice.
    _ Il div che hai chiamato middle non serve.
    _ Il blocco right ha float:left.

    Ti consiglio di guardare la guida al layout con CSS di html.it (http://css.html.it/guide/leggi/3/gui...iti-con-i-css/), in particolare le sezioni riguardanti il layout a due colonne con il float.
    Originariamente inviato da salasir
    Io ti consiglierei di togliere innanzitutto il prologo XML che non serve ed inoltre crea problemi.
    Poi riparti da quello che ottieni così.
    Entrambi mi avete consigliato di togliere qualcosa...
    Mi chiedo se sapete a cosa è dovuto l'errore o se buttate la prima risposta che vi viene in mente...
    A proposito salasir , che ne sai se il prologo (?) xml mi serve o no?

    Comunque l'errore è dovuto a questo:
    Boxmodel secondo gli standard w3c
    Boxmodel di Internet Explorer
    Io cercavo la soluzione più in linea con gli standard del w3c?

    PS: Entrambe le immagini sono prese da www.constile.org

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Mi sa che state parlando tre lingue differenti.

    Anzitutto occorre chiarire quali sono i contorni della domanda.
    Se vuoi un sito che funzioni anche in IE6, devi fare in modo che il browser stesso capisca il tuo linguaggio: il fatto e` che se metti il prologo XML IE6 non riconosce il <DOCTYPE> e lavora quindi in quirks mode: perdi tutto il vantaggio di XHTML Strict.

    Se invece vuoi fare un sito sperimentale, puoi anche fregartene dei browser non standard, ma questa e` una condizione molto rara nelle domande di questo forum, e va quiddi definita con chiarezza.


    Per completezza, non sono d'accordo con le note di Panta: il blocco centrale potrebbe essere necessario per contenere qualcosa al suo interno, e se usi float left e float right su due blocchi, e` facile che rimanga il "resto" degli arrotindamenti in centro, mentre se usi tutto left, il "resto" rimane a destra, dove puo` essere mascherato con maggiore facilita` (ma dipende molto dal progetto grafico del tutto).

    Nota: i consigli che ti hanno dato entrambi non sono "la prima risposta che viene in mente", ma sono statisticamente validi: cioe` sono consigli che hanno funzionato in molti siti.
    Pero` e` anche vero che il tuo caso potrebbe essere fuori dalla "statistica".
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Se vuoi un sito che funzioni anche in IE6, devi fare in modo che il browser stesso capisca il tuo linguaggio: il fatto e` che se metti il prologo XML IE6 non riconosce il <DOCTYPE> e lavora quindi in quirks mode: perdi tutto il vantaggio di XHTML Strict.
    Finalmente una persona che parla con cognizione di causa.
    Infatti togliendo il prologo XML, Firefox e Internet Explorer si comportano più o meno allo stesso modo.

    Se invece vuoi fare un sito sperimentale, puoi anche fregartene dei browser non standard, ma questa e` una condizione molto rara nelle domande di questo forum, e va quiddi definita con chiarezza.
    Che il sito fosse sperimentale era implicitamente indicato nel primo messaggio del post. Effettivamente non l'ho detto chiaramente.

    Per completezza, non sono d'accordo con le note di Panta: il blocco centrale potrebbe essere necessario per contenere qualcosa al suo interno, e se usi float left e float right su due blocchi, e` facile che rimanga il "resto" degli arrotindamenti in centro, mentre se usi tutto left, il "resto" rimane a destra, dove puo` essere mascherato con maggiore facilita` (ma dipende molto dal progetto grafico del tutto).
    Questa cosa non è chiara a molte persone. La maggior parte di coloro con cui mi trovo a parlare di box model, layout e standard sono convinti che in un layouy tableless a 2 colonne, il box di sinistra ha float:left e quello di destra ha float:right... Mi chiedo cosa farebbero con un layout a 3 colonne! Il box di sinistra avrebbe float:left, quello di destra float:right e quello di centro? float:center... Per fortuna i layout a quattro colonne non sono molto comuni

    Nota: i consigli che ti hanno dato entrambi non sono "la prima risposta che viene in mente", ma sono statisticamente validi
    Mi sento di obiettare questa tua affermazione: io non ho chiesto di risolvere il problema con metodi "caserecci"... ChIedevo di farlo secondo gli standard w3c.

    cioe` sono consigli che hanno funzionato in molti siti.
    Non mi serve la statistica. Non faccio le prove a casaccio, i miei siti devono prima di tutto funzionare sulla carta. Per un sito che comporta ad esempio 30 ore di lavoro, preferisco utilizzane 25 in analisi e 5 in sviluppo.
    Non ho mai amato gli approcci empirici del tipo: - cambia quel valore e vediamo come va
    Preferisco cose del tipo: - se cambiassi quel valore andrebbe così...

    Comunque ho quasi risolto.
    Non appena ho la situazione perfettamente sotto controllo pubblico i risultati (o qui o sul mio blog)

    Ciao e grazie a tutti.
    PS: Se qualcuno ha altre idee sono sempre ben accette
    Francesco D'Aguanno
    daguanno.it

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    272
    Una possible soluzione: Nel tuo caso,credo, è l'header ad essere grosso e le tre colonne piccole .
    Ti suggerisco di studiartelo a partire dall'Hack e poi di modificartelo se neccessario....
    Ah....in fondo alla pagina c'è un link...seguilo....Porta al css intero...

    Per soluzioni + moderne (con i float) c'è Troiani ( constile.....) .Sotto l'illustrazione del libro c'è il link ad un archivio zip....Scaricatelo è studiatelo...al capitolo 4.xxx degli archivi (credo sia quello,aprendo l'archivio zippato, lo scoprirai facilmente da solo), forse,c'è quanto che cerchi....
    Personalmente, non mi piace tutto quello che dice; ma è già una buona base di partenza....

  10. #10
    Originariamente inviato da simulacron
    Una possible soluzione: Nel tuo caso,credo, è l'header ad essere grosso e le tre colonne piccole .
    Hai notato che su IE e su FF il sito da te indicato ha layout differenti?
    • Il top è delle stesse dimensioni, ma su FF il testo contenuto è piu centrale (verticalmente): scende di una manciata di pixel.
    • I due box laterali, oltre ad avere il comportamento dell'header, si allungano verso il basso di un po' di pixel
    • Nella parte centrale, il testo nonostante sia contenuto in un <pre> ha intelinea e spaziatura diversa.


    Originariamente inviato da simulacron
    Ti suggerisco di studiartelo a partire dall'Hack e poi di modificartelo se neccessario....
    Ah....in fondo alla pagina c'è un link...seguilo....Porta al css intero...
    Lo guarderò...

    Originariamente inviato da simulacron
    Per soluzioni + moderne (con i float) c'è Troiani ( constile.....) .Sotto l'illustrazione del libro c'è il link ad un archivio zip....Scaricatelo è studiatelo...al capitolo 4.xxx degli archivi (credo sia quello,aprendo l'archivio zippato, lo scoprirai facilmente da solo), forse,c'è quanto che cerchi....
    Personalmente, non mi piace tutto quello che dice; ma è già una buona base di partenza...
    Come sopra.
    Francesco D'Aguanno
    daguanno.it

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.