У меня есть и svg, которые я хочу оживить. Это сигнал Wi-Fi, поэтому я хочу создать эффект отправки сигнала Wi-Fi, изображение:
Таким образом, эффект:
-Убедить исчезновение красного на полсекунды (с помощью opacity: 0
или display: none
).
-Заставить исчезновение синего на полсекунды
-Заключить исчезновение голубого на полсекунды
-Заставить исчезновение желтого на полсекунды
-Заключить исчезновение фиолетового на полсекунды
-Заставить исчезновение зеленого на полсекунды
-Увеличить устройства transform: scale(1.5)
; и обратно на transform: scale(1)
-Подождите 4 секунды
-Запустите анимацию снова
Я пробовал с
function afterLoad() {
setInterval(function() {
var red = document.getElementById("red");
var blue = document.getElementById("blue");
var lightblue = document.getElementById("lightblue");
var yellow = document.getElementById("yellow");
var purple = document.getElementById("purple");
var green = document.getElementById("green");
var x = document.getElementById("devices");
red.style.display = "none";
wait(9000);
red.style.display = "block";
blue.style.display = "none";
wait(9000);
blue.style.display = "block";
lightblue.style.display = "none";
wait(9000);
lightblue.style.display = "block";
yellow.style.display = "none";
wait(9000);
yellow.style.display = "block";
purple.style.display = "none";
wait(9000);
purple.style.display = "block";
green.style.display = "none";
wait(9000);
green.style.display = "block";
}, 2000);
}
Ожидание метод исходит из этого вопроса: Подождите 5 секунд перед выполнением следующей строки
function wait(ms) {
var start = new Date().getTime();
var end = start;
while (end < start + ms) {
end = new Date().getTime();
}
}
Установка метода анимации для выполнения в конце рендеринга
<body onload="afterLoad()"> ... <body>
Я уже изменил SVG, и метод выполняется успешно, цвета выбираются, и они могут скрыться по мере выполнения кода, но не так, как ожидалось. Проблема в том, что браузер вылетает, это как попасть в al oop до конца анимации, но тоже не появляется. Если я проигнорирую время и, например, после рендеринга я просто хочу скрыть желтый цвет, метод будет выглядеть так и будет отлично работать:
function afterLoad() {
var yellow = document.getElementById("yellow");
yellow.style.display = "none";
}
Но с секундами ожидания не работает. Это одна из проблем, что не работает анимация. Другая проблема заключается в том, что также не уверен, повторяется ли анимация с этой функцией. Я также пробовал с while(true)
с ожиданием, но это приводит к сбою браузера (или почти). Как правильно обрабатывать анимацию?
Большое спасибо!