Загружайте анимацию одну за другой, используя чистый javascript, HTML и CSS без ключевых кадров

#javascript #html #css #animation #effects

#javascript #HTML #css #Анимация #эффекты

Вопрос:

Я новичок в javascript, и я сделал так, чтобы одно изображение исчезло, но второе изображение не исчезнет в следующем. См. раздел HTML и Javascript. С использованием чистого HTML, CSS И JS без ключевых кадров для анимации. Никаких библиотек или фреймворков для использования.

Для HTML:

     <div id="female" style="opacity: 0;"> 
        <img id="fem" src="./images/female.png" onload="female()">
    </div> 

    <div id="headline1" style="opacity: 0;">
        <img id="t1" src="./images/headline1.png" onload="headline1()">
    </div>
</div>
  

Для JS-кода:

// ЖЕНСКАЯ АНИМАЦИЯ

 function female () {
var opacity = 0; 
var intervalID = 0; 
window.onload = fadeIn; 

function fadeIn() { 
    setInterval(show, 150); 
} 

function show() { 
    var body = document.getElementById("female"); 
    opacity = Number(window.getComputedStyle(body) 
                    .getPropertyValue("opacity")); 
    if (opacity < 1) { 
        opacity = opacity   0.1; 
        body.style.opacity = opacity 
    } else { 
        clearInterval(intervalID); 
    } 
}}
  

// АНИМАЦИЯ ЗАГОЛОВКА 1

 function headline1 () {
var opacity = 0; 
var intervalID = 0; 
window.onload = fadeIn; 

function fadeIn() { 
    setInterval(show, 150); 
} 

function show() { 
    var body = document.getElementById("headline1"); 
    opacity = Number(window.getComputedStyle(body) 
                    .getPropertyValue("opacity")); 
    if (opacity < 1) { 
        opacity = opacity   0.1; 
        body.style.opacity = opacity 
    } else { 
        clearInterval(intervalID); 
    } 
}}
  

Ответ №1:

Обе функции female() и headline1() назначают свои собственные функции window.onload . Это приведет к тому, что 2 функции будут влиять друг на друга.

Вы можете использовать window.addEventListener вместо window.onload решения этой проблемы.

Учитывая, что ваши female() функции и headline1() функции очень похожи, рекомендуется использовать одну функцию с параметром для указания идентификатора изображения для анимации.

 function animateImage(id, opacity) {
  var intervalID = 0;
  window.addEventListener('load', fadeIn);

  function fadeIn() { 
    setInterval(show, 150);
  }

  function show() { 
    var body = document.getElementById(id); 
    opacity = Number(window.getComputedStyle(body) 
                    .getPropertyValue("opacity")); 
    if (opacity < 1) { 
        opacity = opacity   0.1; 
        body.style.opacity = opacity 
    } else { 
        clearInterval(intervalID); 
    } 
  }
}