Мне нужна помощь, отлаживающая этот jQuery, в котором я манипулирую верхним краем элемента в контейнере с фиксированным размером и переполнением, установленным в скрытое, чтобы я мог создать эффект параллакса. Параллакс работает, но если вы прокрутите вниз даже один пиксель, а затем перезагрузите страницу, он сломается. Может ли кто-нибудь помочь мне исправить эту проблему? Вот код.
//Parallax for Header
$(window).on("load", function() {
var startingScrollTop = parseInt($(window).scrollTop());
console.log(startingScrollTop);
var startingElementTop = parseInt($headerText.css("margin-top"));
console.log(startingElementTop);
$(window).on("scroll", function() {
var currentScrollTop = parseInt($(window).scrollTop());
console.log(currentScrollTop);
if(currentScrollTop > startingScrollTop) {
var scrollDistance = currentScrollTop - startingScrollTop;
console.log(scrollDistance);
var parallaxDistance = scrollDistance / 2;
console.log(parallaxDistance);
var newElementMarginTop = startingElementTop + parallaxDistance;
console.log(newElementMarginTop);
$headerText.css("margin-top", newElementMarginTop + "px");
} else if(currentScrollTop <= "0") {
$headerText.css("margin-top", "0px");
}
});
});
Спасибо вам за помощь.
Еще раз, неважно, я снял его:
для всех желающих:
//Parallax for Header
$(window).on("load", function() {
var startingScrollTop = 0;
console.log(startingScrollTop);
var startingElementTop = parseInt($headerText.css("margin-top"));
console.log(startingElementTop);
//Re-use this on scroll
function parallaxify() {
var currentScrollTop = parseInt($(window).scrollTop());
console.log(currentScrollTop);
if(currentScrollTop > startingScrollTop) {
var scrollDistance = currentScrollTop - startingScrollTop;
console.log(scrollDistance);
var parallaxDistance = scrollDistance / 2;
console.log(parallaxDistance);
var newElementMarginTop = startingElementTop + parallaxDistance;
console.log(newElementMarginTop);
$headerText.css("margin-top", newElementMarginTop + "px");
} else if(currentScrollTop <= "0") {
$headerText.css("margin-top", "0px");
}
}
parallaxify();
$(window).on("scroll", function() {
//Put the re-used code here
parallaxify();
});
});
Я понял это, но как я могу это упростить?
//Parallax for Header
$(window).on("load", function() {
var startingScrollTop = 0;
console.log(startingScrollTop);
var startingElementTop = parseInt($headerText.css("margin-top"));
console.log(startingElementTop);
//Re-use this on scroll
var currentScrollTop = parseInt($(window).scrollTop());
console.log(currentScrollTop);
if(currentScrollTop > startingScrollTop) {
var scrollDistance = currentScrollTop - startingScrollTop;
console.log(scrollDistance);
var parallaxDistance = scrollDistance / 2;
console.log(parallaxDistance);
var newElementMarginTop = startingElementTop + parallaxDistance;
console.log(newElementMarginTop);
$headerText.css("margin-top", newElementMarginTop + "px");
} else if(currentScrollTop <= "0") {
$headerText.css("margin-top", "0px");
}
//Put the re-used code here
$(window).on("scroll", function() {
var currentScrollTop = parseInt($(window).scrollTop());
console.log(currentScrollTop);
if(currentScrollTop > startingScrollTop) {
var scrollDistance = currentScrollTop - startingScrollTop;
console.log(scrollDistance);
var parallaxDistance = scrollDistance / 2;
console.log(parallaxDistance);
var newElementMarginTop = startingElementTop + parallaxDistance;
console.log(newElementMarginTop);
$headerText.css("margin-top", newElementMarginTop + "px");
} else if(currentScrollTop <= "0") {
$headerText.css("margin-top", "0px");
}
});
});
Могу ли я перевернуть повторно используемый код в функцию, которую я могу запускать при загрузке, прокрутке или на любом другом обработчике?