Я работаю над своим портфолио, и я бы хотел добавить анимированную стрелку, чтобы пригласить пользователя прокручивать вниз. Стрелка будет сделана из двух блоков + стрелка, и я хотел бы оживить их так: Первый элемент появляется, затем второй (в то время как первый из них исчезает), затем третий (в то время как первый снова появляются, а второй исчезает). Я пробовал много сценариев, как этот (который сделан только для 2-х элементов):Как заставить элемент html появляться и исчезать снова и снова с помощью Js?
function test() {
for (var i = 1; i < 11; i = i + 1) {
if (i % 2 !== 0) {
document.getElementById('square1').style.visibility = 'visible';
document.getElementById('square2').style.visibility = 'hidden';
} else {
document.getElementById('square1').style.visibility = 'hidden';
document.getElementById('square2').style.visibility = 'visible';
};
};
}
Это только делает элемент видимый в браузере, я думал, что квадрат был «blinkink» слишком быстро, чтобы быть заметил из-за того, что цикл был запущен очень быстро, поэтому я попытался добавить функцию сна, но он тоже не работал.
Может ли кто-нибудь помочь мне в этом? В качестве бонусного вопроса я в порядке с функцией, выполняемой при загрузке веб-сайта, но было бы еще лучше, если бы анимация могла начаться, когда пользователь прокручивается до определенной части веб-сайта!
P.S: Я не использую jQuery, я хочу копать Js перед использованием фреймворков.
Спасибо! И извините за мой английский :)
Редактировать: У меня наконец есть рабочая функция для анимации 3 элементов. Я немного боролся, но, в конце концов, смог сделать это благодаря вашей помощи, ребята, спасибо за пример и ссылки, которые вы предоставили. Вот код, если это интересно для всех, я думаю, что это может понадобиться рефакторинг, но я счастлив с этим в любом случае:
function appear() {
alert(container[test]);
document.getElementById(container[test]).style.visibility = 'visible';
if(test === 0) {
document.getElementById(container[test + 1]).style.visibility = 'hidden';
document.getElementById(container[test + 2]).style.visibility = 'hidden';
test++
} else if(test === 1) {
document.getElementById(container[test - 1]).style.visibility = 'hidden';
document.getElementById(container[test + 1]).style.visibility = 'hidden';
test++
} else {
document.getElementById(container[test - 1]).style.visibility = 'hidden';
document.getElementById(container[test - 2]).style.visibility = 'hidden';
test = 0;
}
}
function animate() {
var interval = setInterval(appear, 1000);
}
var test = 0;
var sq1 = 'square1';
var sq2 = 'square2';
var arrow = 'arrow';
var container = [sq1, sq2, arrow];
alert('test' + container);
animate();
javascript обрабатывает ваш код так быстро, и вы не увидите никакого результата. Вам нужно добавить задержку, чтобы заставить его работать –
Да, именно поэтому я попытался добавить функцию сна, любые подсказки о том, где я могу найти решение для добавления рабочая функция задержки/сна? – EtienneDh
вам нужно установитьInterval, а не функцию сна см. Этот документ http://www.w3schools.com/jsref/met_win_setinterval.asp –