Voglio rimuovere/aggiungere classi quando l'utente si trova a diverse distanze dall'alto usando jQuery.Aggiunta e rimozione di classi a diverse altezze sulla pagina utilizzando jQuery
L'ho eseguito correttamente, e funziona correttamente, ma penso di sbagliarmi, e vorrei il tuo aiuto per ottimizzare il codice.
L'html è semplice, in pratica le sezioni (compresa l'intestazione) hanno una larghezza del 100%. e diversi colori. Voglio che l'intestazione cambi colore quando è sopra la prima sezione (per scopi estetici). E voglio anche che abbia un'ombra quando la pagina è stata scorsa più di 1 pixel.
Lo sto aggiungendo/rimuovendo le classi.
Quando uso un ennesima istruzione if non funziona bene perché ogni volta che una qualsiasi condizione è soddisfatta, js smette di controllare le altre corrispondenze, quindi non applica tutte le classi necessarie.
Il prossimo codice funziona, tuttavia come ho detto, penso che non sia ottimale/scritto male. Ecco il markup HTML:
<header class="dark no-shadow">
Header
</header>
<section class="blue">
Please Scroll Down to see the header changes...
</section>
<section>
The header color Should change when you pass through me.
</section>
E qui è il codice jQuery: (! Come me)
var header = $('header'),
blueSection = $('section.blue'),
// Calculate when to change the color.
offset = blueSection.offset().top + blueSection.height() - header.height();
$(window).scroll(function(){
var scroll = $(window).scrollTop();
// Remove Class "dark" after scrolling over the dark section
if (scroll >= offset) {
header.removeClass('dark');
} else {
header.addClass('dark');
}
// Remove Class "no-shadows" whenever not on the top of the page.
if (scroll >= 1) {
header.removeClass('no-shadow');
} else {
header.addClass('no-shadow');
}
});
E per quelli di voi che amano utilizzare jsfiddle: https://jsfiddle.net/shock/wztdt077/6/
Grazie ragazzi!
controlla qui su come eseguire le azioni dopo averlo fatto scorrere da qualche parte - http://stackoverflow.com/questions/25660289/show-hide-div-when-passed-the-other-div/25661103#25661103 - tu può farlo dalla posizione di un div o per pixel – Tasos
demo dall'utilizzo del codice da Conent sopra - https://jsfiddle.net/tgaoyx4b/ – Tasos
Questo forse dovrebbe andare a http://codereview.stackexchange.com/ – xpy