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

    div dentro div: problemi con IE

    Salve a tutti.

    Avrei bisogno di realizzare una pagina con un layout come questo:



    in cui c'e' un rettangolo grigio che contiene un rettangolo nero ed uno giallo. A sua volta il rettangolo nero contiene un rettangolo rosso con dentro del testo.

    Tre cose sono importanti:

    1. il rettangolo rosso deve avere le barre di scorrimento qualora il testo ecceda:
    2. il rettangolo rosso deve essere allineato a destra rispetto a quello nero.
    3. La larghezza del rettangolo rosso deve essere 50 pixel inferiore rispetto a quella del rettangolo nero, INDIPENDENTEMENTE dalla larghezza del rettangolo nero e dalle dimensioni del contenuto del rettangolo rosso

    sono riuscito ad ottenere il risultato di cui ho bisogno con il seguente codice:

    codice:
    <html>
    
            <body style="margin:0">
    
                    <div style="position:relative; background-color:#DDD; width:450; height: 450; overflow:hidden"> 
                            <div style="position:relative; background-color:#000; width:80%; height: 150; overflow:hidden"> 
                                    <div style="position:absolute; top:100px; left:50px; right:0px; bottom:0px; overflow:auto; background-color:#F00;"> 
                                            testo lungo testo lngo 
    testo lungo testo 
    lungo testo lngo testo lungo 
    testo lungo testo lngo
     
    testo lungo testo
     lungo testo lngo
     testo lungo testo lungo testo lngo 
    testo lungo testo 
    lungo testo lngo testo lungo 
    
    testo lungo testo lngo
     testo lungo testo
     lungo testo lngo
     testo lungo
                                    </div>
                            </div>
    
                            <div style="position:relative; background-color:#FF0; width:90%; height: 150;  overflow:hidden"> 
    
                            </div>
    
                    </div>
    
            </body>
    
    </html>

    Questo codice funziona bene con google chrome e con firefox, ma da' problemi con Internet explorer. In particolare, ottengo un layout come quello qui sotto, in cui scompaionole barre di scorrimento e la larghezza del rettangolo rosso si adatta al contenuto.

    Che cosa dovrei fare per ottenere il layout desiderato anche su IE8?


  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao,
    nel tuo codice ci sono alcune cose che non vanno tanto bene.
    Anche se molti browser cercano di interpretare al meglio le varie regole css e tutto il markup, altri hanno bisogno di capire esattamente come devono comportarsi a seconda del tipo di documento che si trovano davanti. Per questo motivo è sempre raccomandato inserire la DTD cioè specificare un doctype nel proprio documento html.
    La proprietà overflow, ad esempio, è mal gestita da IE se non si è specificato il doctype

    Seconda cosa, anche se molti browser cercano di interpretare al meglio le unità di misura che sono state omesse, è sempre raccomandato indicare l'unità di misura per tutti i valori in cui sono richieste. E' vero che a seconda della DTD (e a seconda del browser) possono essere omesse tali unità di misura così che il browser stesso applichi automaticamente quelle di default ma, oltre al fatto che questo sia raccomandato dalle specifiche, è sempre buona norma scrivere codice in maniera chiara e possibilmente inequivocabile così da evitare spiacevoli sorprese come nel tuo caso.

    Il tuo codice potrebbe quindi essere rivisto in questo modo (in rosso le parti aggiunte):
    codice:
    <!DOCTYPE html>
    <html>
      <body style="margin:0">
        <div style="position:relative; background-color:#DDD; width:450px; height: 450px; overflow:hidden"> 
          <div style="position:relative; background-color:#000; width:80%; height: 150px; overflow:hidden"> 
            <div style="position:absolute; top:100px; left:50px; right:0px; bottom:0px; overflow:auto; background-color:#F00;"> 
              testo lungo testo lngo 
    testo lungo testo 
    lungo testo lngo testo lungo 
    testo lungo testo lngo
     
              testo lungo testo
     lungo testo lngo
     testo lungo testo lungo testo lngo 
    testo lungo testo 
    lungo testo lngo testo lungo 
    
              testo lungo testo lngo
     testo lungo testo
     lungo testo lngo
     testo lungo
            </div>
          </div>
          <div style="position:relative; background-color:#FF0; width:90%; height: 150px;  overflow:hidden"> 
          </div>
        </div>
      </body>
    </html>
    Dovrebbe funzionare allo stesso modo su tutti i browser (perlomeno su quelli maggiormente diffusi al momento)
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Ciao!

    ti ringrazio per la risposta, avevo dimenticato il <!DOCTYP>!!!



    Giuseppe

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.