Итак, я создаю страницу с тремя div, которые становятся видимыми при прокрутке. Проблема заключается в том, что код делает их все выполнить в то же самое время, в то время как я хочу, чтобы их должно быть разница во времени между выполнением каждой OnScroll функцииJavascript- Выполнить функцию onscroll после заданного таймаута
Соответствующая часть кода -
HTML
<section id="section2">
<span id="one" class="classbefore">lol</span>
<span id="two" class="classbefore">lol</span>
<span id="three" class="classbefore">lol</span>
</section>
CSS
#section2 > span{
width: 25%;
height: 50%;
position: absolute;
background: #f00;
-webkit-transition: all 0.5s ease;
box-shadow: 1px #000;
}
#section2 > #one{
margin-left: 10%;
}
#section2 > #two{
margin-left: 37.5%;
}
#section2 > #three{
margin-left: 65%;
}
.classbefore{
opacity: 0;
margin-top: 18%;
}
.classafter{
opacity: 1;
margin-top: 20%;
}
Javascript
window.addEventListener('scroll', function (event) {
if (window.scrollY > 600) {
document.getElementById('one').className = "classafter";
} else {
document.getElementById('one').className = "classbefore";
}
}, true);
window.addEventListener('scroll', function (event) {
if (window.scrollY > 600) {
document.getElementById('two').className = "classafter";
} else {
document.getElementById('two').className = "classbefore";
}
}, true);
window.addEventListener('scroll', function (event) {
if (window.scrollY > 600) {
document.getElementById('three').className = "classafter";
} else {
document.getElementById('three').className = "classbefore";
}
}, true);
Таким образом, при этом все три диапазона становятся видимыми одновременно. Пожалуйста, предложите метод, чтобы дать им тайм-аут, чтобы одна функция выполнялась после другой.
Кроме того, может ли этот код быть более эффективным?
Почему вы определяете три отдельных события для прокрутки окна ?! – hsh
В соответствии с вашим кодом, если 'window.scrollY> 600' весь диапазон получает класс' classafter', поэтому все они видны одновременно. –