2009-09-27 3 views
6

Sono curioso di sapere come creare un DIV (o qualcosa di veramente) che possa sfumare (o modificare l'opacità di) quando un utente scorre la pagina verso il basso. Questo DIV si posizionerebbe nella parte superiore della pagina, ma solo essere chiaramente visibile quando si trova nella parte superiore della pagina.Fading Element on Scroll

Inoltre, sarebbe ideale se io potessi avere questo elemento dissolvenza in onmouseover, indipendentemente dalla posizione corrente della pagina.

risposta

8

jQuery consentire una soluzione succinta, nascondendo la maggior parte delle discrepanze del browser. Ecco una rapida mock-up per iniziare:

<script type="text/javascript"> 

    //when the DOM has loaded 
    $(document).ready(function() { 

     //attach some code to the scroll event of the window object 
     //or whatever element(s) see http://docs.jquery.com/Selectors 
     $(window).scroll(function() { 
       var height = $('body').height(); 
       var scrollTop = $('body').scrollTop(); 
       var opacity = 1; 

       // do some math here, by placing some condition or formula 
       if(scrollTop > 400) { 
        opacity = 0.5; 
       } 

       //set the opacity of div id="someDivId" 
       $('#someDivId').css('opacity', opacity); 
     }); 
    }); 
</script> 

Vedi anche:

+0

Grazie per la tua risposta! L'ho ottenuto operativo, ma essendo completamente nuovo al mondo di jQuery e javascripting, non sono sicuro di dove andare da qui. La finestra si dissolve o scorre, ma sembra rimanere sbiadita a prescindere se si scorre nuovamente verso l'alto. E come posso controllare fino a che punto si deve scorrere prima che svanisca? Grazie ancora !! – marck

+0

Sfortunatamente, a meno di fornirti una soluzione completa, non c'è molto più aiuto che può essere dato. Se sei davvero interessato a farlo funzionare, probabilmente dovrai scavare e imparare qualche JavaScript. –

2

ho pensato di dare un andare con il valore effettivo di scrollTop a dettare il livello di opacità, ottenendo in tal modo una dissolvenza liscia. Ho anche aggiunto lo stato hover per la seconda parte. Thanks to David per affinare la matematica per me.

//reduce the opacity of the banner if the page is scrolled. 
$(window).scroll(function() { 
    var height = $("body").height(); 
    var scrollTop = $("body").scrollTop(); 
    var opacity = 1; 

    if(scrollTop < 41) 
    {opacity = 1-Math.floor(scrollTop)/100;} 
    else 
    {opacity = 0.6;} 

    $("#header").css("opacity", opacity); 
    $("#header").hover(function(){ 
    $(this).css("opacity", 1); 
    },function(){ 
    $(this).css("opacity", 0.6); 
    }); 
}); 
+0

Per qualche motivo questo non sembra funzionare su FF 8.0.1? – Daniel

+0

E IE non sembra funzionare, tuttavia, sia su FF che su IE l'hover funziona. Quindi penso che jquery e css opacity non funzionino in cross browser ?! – Daniel