Visualizzazione dei risultati da 1 a 8 su 8

Discussione: footer con firefox

  1. #1

    footer con firefox

    Ciao a tutti,

    Son partito con i css diciamo da una settimana circa, quindi capirete che sono un novellino, ma in generale diciamo che sto apprendendo velocemente. Ora bando alle ciance continuo ad avere un problema con il footer su Firefox, infatti andando a questa pagina noterete che il footer sta giusto in fondo, ma se appare la barra e la si scrolla, il footer rimane li a mezza pagina sopra i contenuti. Su Explorer invece è piu o meno tutto ok (anche se non corretto ugualmente, in quanto il footer non rimane sempre visibile, ma almeno non si sovrappone ai contenuti)

    Ho letto un sacco in giro, e soprattutto la pagina 'Il problema del footer' qui su html.it la conosco quasi a memoria! Ma niente, Ho provato poi i vari attributi clear:right/both/left ma nn ho ben capito il loro uso preciso, e cmq non mi han dato risultati.

    Ancora quindi non riesco a venirne a capo, grazie a chiunque mi aiuterà

    per ora evito di postare tutto il css per allungare il thread al limitie lo posto dopo se serve..ciao

  2. #2
    Utente di HTML.it L'avatar di Renyp
    Registrato dal
    Nov 2004
    Messaggi
    304
    forse dovresti provare a dare due valori diversi alla proprietà top.

    hai due modi:

    .classex {
    position: absolute;
    top: 20px; /* valore per firefox */
    /top: 30px; /* valore per explorer */
    }

    Il secondo, più elegante e corretto:

    .classex {
    position: absolute;
    top: 20px !important; /* valore per firefox */
    top: 30px; /* valore per explorer */
    }

    facci sapere, ciao

  3. #3
    grazie per la risposta fulminea..

    cmq scusa ma non ho capito, cosa c'entra la proprietà 'top' nel mio caso che voglio fissare il footer semrpe in basso? ho gia utilizzato il bottom:0, il top nn l 'ho proprio usato negli attributi del footer anche perchè sennò va su..no?

  4. #4
    Utente di HTML.it L'avatar di Renyp
    Registrato dal
    Nov 2004
    Messaggi
    304
    si, ok, era solo un pretesto per farti vedere come dare due comandi diversi con i css quando ti trovi a dover gestire proprietà interpretate diversamente da firefox ed explorer..

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Ciao..

    Come avrai probabilmente già letto QUI, la proprietà clear ti serve in sostanza quando devi annullare l'effetto di eventuali float impostati in precedenza.
    Il float serve essenzialmente per allineare un qualsiasi elemento a sinistra o a destra del suo contenitore. Un po' come quando allinei le immagini utilizzando la proprietà ALIGN nel tag <img> in html, anche ci sono comunque delle differenze consistenti.

    Ma come già hai notato, queste regole non risolvono il tuo problema.

    Si tratta infatti di un problema relativo al cross-browsing per il fatto che ogni browser ha un proprio box-model (per la disposizione degli elementi all'interno della pagina), come Renyp ti ha fatto notare, anche se poi non ha risolto il problema.
    Infatti i diversi browser non supportano alcune proprietà dei CSS o le interpretano a modo loro.

    Dovrai quindi utilizzare degli hack (trucchi che fanno leva su alcuni bug dei diversi browser) per fare in modo che delle determinate proprietà siano viste correttamente dei vari browser.

    Io personalmente ti consiglierei di lasciare il footer a fondo pagina senza troppi "effetti speciali".

    Altrimenti puoi dare innanzitutto uno sguardo a questo link
    http://congetturando.blogspot.com/20...ter-print.html
    e in particolare all'esempio "Fixed footer" http://limpid.nl/lab/css/fixed/footer

    Puoi notare come il footer resti correttamente sempre in basso anche su FF e su vecchie versioni di IE (e credo anche su palmari, i quali vedranno la regola "@media screen")

    Per FF, il trucco sta in questa regola:
    codice:
    body>div#footer{
      position: fixed;
    }
    ...che sarà vista, appunto, solo da FF mentre gli altri browser la ignoreranno.

    Infatti FF, a differenza di IE (fino alla versione 6), supporta il valore fixed per la proprietà position.

    Il valore "fixed" fa in modo che il posizionamento sia riferito alla finestra del browser mentre "absolute" fa riferimento al "blocco contenitore iniziale". Ma questo vale solo per alcuni browser.

    Ecco perché nel tuo sito con FF, agendo sulla scroll bar, il footer si posiziona in riferimento al box principale (credo sia quello identificato dal tag <HTML>) il quale, scorrendo verso l'alto, si trascina dietro il footer stesso.

    In realtà anche IE7 supporta il valore fixed ma solo se si imposta il tipo di documento in strict mode.

    Mentre per vecchie versioni di IE viene utilizzato un'ulteriore work-around che però prevede l'impostazione del tipo di documento in quirks mode ... ma questo è un'altro argomento..

    Un altro possibile hack per aggirare lo stesso problema sta nell'utilizzare il valore !import che non viene visto dalle vecchie versioni di IE.
    Ecco un link a riguardo: http://blog.html.it/archivi/2005/09/...workaround.php

    Ti basterà quindi inserire una riga in più:
    codice:
        position: fixed !important;
        position: absolute;
    Vedi anche questo link che tratta l'argomento specifico http://css.html.it/articoli/leggi/21...ti-assoluti/4/

    Ti consiglio inoltre di spostare il div footer fuori dal div container.

    Ora però ti resta un ultimo problema, cioè il tuo footer non deve estendersi per la larghezza della pagina ma, avendo una larghezza fissa, questo si dovrà centrare nella pagina.

    Basterà utilizzare un ulteriore contenitore all'interno del footer.

    In pratica avrai una roba del genere
    La parte dell'HTML
    codice:
      
    </div>
    <div id="footer"><div>2006 Copyright All rights Reserved by Abcar srl and D Javidani</div></div>
    con il footer all'esterno del container e con l'aggiunta di un div

    Quindi la parte del CSS da sostituire
    codice:
    div#footer
    {
    	position:fixed !important;
    	position:absolute;
    	bottom:0;
    	left:0;
    	width:100%;
    }
    div#footer div
    {
    	margin:0 auto;
    	width:760px;
    	background-color:#333;
    	height:18px;
    	color:#666;
    	padding-top:5px;
    	text-align:center;
    	clear:both;
    }
    Tieni conto che così ti funziona bene su FF e IE7 ma non su versioni precedenti per le quali dovresti utilizzare il quirks mode e aggiungere le regole dell'esempio che ho linkato sopra

    Spero di non essermi dilungato troppo.
    Buon lavoro
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  6. #6
    No vabè sono commosso...grazie della risposta super esaustiva ora faccio un po' di prove anche se in realtà il tuo consiglio sull'evitare 'effetti speciali' mi ha fatto un attimo pensare effettivamente potrei anche lasciarlo al fondo magari solo smussando gli angoli...ora vedo un po' grazie ancora in ogni caso la volevo proprio capire sta cosa!


  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Ciao ragazzi scusate mi sento stupido ma ora è quasi tutto a posto sia su firefox che IE l'unico problema è se il contenuto supera l'altezza della finestra, o comunque la si ridimensiona, il footer rimane giustamente sopra ma non appare la barra di scroll!

    Killerworm oltre ai numerosi hints da te suggeriti ho applicato anche un overflow: hidden all' html body {} e un overflow: auto al html div#contenuto{} come indicato dall'esempio da te riportato a qst utile link http://limpid.nl/lab/css/fixed/footer (il che è esattamente ciò che vorrei realizzare)
    ma evidentemente c'è qualcosa che ancora sbaglio. Ho notato inoltre che se tolgo questa riga body>div#footer {position: fixed} non cambia nulla, ma è l'overflow a correggere l'errore che avev oprima.

    a questo punto posto il CSS x intero:

    codice:
    html,body{margin: 0;padding:0;height:100%; overflow:hidden}
    body{font-family: arial,sans-serif;font-size: 76%;text-align: center; background-image:url(images/backroundabcar.png)}
    
    div#container{
          position:relative;
          width: 960px; 
          height: 600px;
          margin: 0 auto;
          text-align: left;
          background-color:#666;
    	  }
    	   
    
    body>div#container {height:auto;min-height:100%}
    body>div#footer {position: fixed}
    html div#contenuto {height:100%; overflow: auto}
    
    
    div#header{
         background-image:url(images/home_05.png);
         background-color:#000000;
         height: 142px;
    }
    
    div#loghibar {
         width: 960px;
         height: auto;
         padding-top: 0;
         /padding-top: 5px;
         text-align:center;
    	 }
    	 
    div#contenuto{
    	background-color:#666;
    	float:left;
    	text-align:justify;
    	padding:20px;
    	padding-left:30px;
    	padding-right:30px;
    	width: 900px;
    }	
    
    div#box1 {
         width: 415px;
         float:left;
         padding-right: 35px;
         padding-top: 0;
         border-right: 1px solid #999;
    	 }
    div#box2 {
         width: 415px;
         float: right;
         padding-top: 0px;
    	 }
    	 
    div#footer{
        position: fixed !important;
        position:absolute;
        bottom:0;
        left: 0;
        width: 100%;
         }
      
    div#footer div {
        margin: 0 auto;
        background-color: #333;
        height: 18px;
        color: #666;
        padding-top: 5px;
        text-align: center;
        width: 960px;
        clear:both;
    }
    la pagina è visibile a questo link

    Cosa sbaglio dunque relativamente al mio scopo? Credo ci sia un po' di confusione specie nella prima parte... Grazie a chi chiunque avrà voglia di aiutarmi

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 © 2026 vBulletin Solutions, Inc. All rights reserved.