Chciałem zrobić menu, które zmienia swój wygląd w zależności od pozycji strony. Gdy dam poniższy kod wszystko działa ok.
Kod
$(document).ready(function() {
$(window).scroll(function(){
if ($(this).scrollTop() > 100) {
$("#menu-box").css("background-color", "rgba(0,0,0,0.5)");
} else {
$("#menu-box").css("background-color", "");
}
});
});
$(window).scroll(function(){
if ($(this).scrollTop() > 100) {
$("#menu-box").css("background-color", "rgba(0,0,0,0.5)");
} else {
$("#menu-box").css("background-color", "");
}
});
});
jednak chciałbym wprowadzić małą animację, zrobiłem więc tak:
Kod
$(document).ready(function() {
$(window).scroll(function(){
if ($(this).scrollTop() > 100) {
$("#menu-box").css("background-color", "rgba(0,0,0,0.5)");
$("#menu-box").animate({ top: "0px" }, { duration:300 });
} else {
$("#menu-box").css("background-color", "");
$("#menu-box").animate({ top: "20px" }, { duration:300 });
}
});
});
$(window).scroll(function(){
if ($(this).scrollTop() > 100) {
$("#menu-box").css("background-color", "rgba(0,0,0,0.5)");
$("#menu-box").animate({ top: "0px" }, { duration:300 });
} else {
$("#menu-box").css("background-color", "");
$("#menu-box").animate({ top: "20px" }, { duration:300 });
}
});
});
Pod chrome działa to w miarę poprawnie (występuje lekkie opóźnienie animacji) ale w firefoxie opóźnienie animacji robi się bardzo duże (nawet kilka sekund). Próbowałem zmienić $(window) na $('html', body') ale to nie rozwązywało problemu.