Ciao,
dopo un bel po di tempo di inattività sul forum mi rifaccio vivo :elvis:

Sto lavorando ad un sito web nel quale ho un menu fatto a barra posizionato sul top della finestra.
Questo menu ha "position: fixed" di modo che quando scorro la pagina questo mantiene la sua posizione ed è sempre visualizzato,
ieri ho trovato uno script (JS) che mi consente di cambiare il colore dello sfondo allo scrolling del mouse, lo script funziona ma solo in parte:
Il JS dichiara la variabile scrolled e la inizializza con FALSE poi la variabile HEIGHT (altezza) e la inizializza 1.
Quando si esegue lo scroll lo script vede se l'altezza dello scrolling è maggiore di 1 (HEIGHT), se è vero imposta la variabile SCROLLED su TRUE ed esegue il cambiamento del colore del Background della TOPBAR, altrimenti quest'ultimo rimane invariato.

Questo è il codice del JS:
Codice:

$(document).ready(function (){

var scrolled = false;
var height = 1;

$(document).scroll(function()
{
if( $(this).scrollTop() > height ){
if( !scrolled ){
scrolled = true;
$('#topbar').animate({background:'#333333'}, 300);
}
}
else{
if( scrolled ) {
scrolled = false;
$('#topbar').animate({background:''}, 300);
}
}
});
});

Il problema che da è che al primo caricamento della pagina (quindi scroll non ancora eseguito) la barra rimane del colore come se la variabile SCROLLED fosse già TRUE.
Appena scrollo la barra rimane uguale per il motivo di cui sopra e appena torno al top lo script funziona e imposta la variabile SCROLLED su FALSE applicando correttamente il cambio del colore di sfondo al div.


Originariamente scritto da Jonn nel forum Javascript in data 07-11-2015 17:21.