Вы можете установить диапазоны значений, сказав scrollAmount >= 50 && scrollAmount < 100
, чтобы максимально контролировать, когда что должно произойти. Таким образом, вы можете создать начальное и конечное значение, когда что-то делать.
Элемент document.body
не всегда изменяется. Вместо этого проверьте значение document.scrollingElement.scrollTop
или, как вы уже делаете, document.documentElement.scrollTop
в качестве запасного варианта.
Поместите селекторы элементов за пределы функции onscroll
, поскольку эти элементы нужно выбрать только один раз . Это приведет к той же производительности.
Измените значения свойств className
элементов, чтобы установить класс вместо установки встроенных стилей. Хотя установка встроенных стилей не является неправильной, это, безусловно, может помочь разделить ваши CSS и JavaScript, если вам нужно отредактировать стили или скрипты.
var rocket = document.getElementById("rocketship");
var backgroundone = document.getElementById("one");
var backgroundtwo = document.getElementById("two");
window.onscroll = function() {
var scrollamount = document.scrollingElement.scrollTop || document.documentElement.scrollTop;
if (scrollAmount < 50) {
rocket.className = 'rocket-stage-1';
backgroundone.className = 'background-stage-1';
} else if (scrollamount >= 50 && scrollamount < 100) {
rocket.className = 'rocket-stage-2';
backgroundone.className = 'background-stage-2';
} else if (scrollamount >= 100 && scrollamount < 150) {
// other stuff
}
}
.rocket-stage-1 {
transform: rotate(0deg);
animation: turn2 1s;
}
.background-stage-1 {
opacity: 1;
animation: fade1 1s;
}
.rocket-stage-2 {
transform: rotate(90deg);
animation: animation: turn1 1s;
}
.background-stage-2 {
opacity: 0;
animation: fade2 1s;
}