Как зациклить анимацию на конце вложенной функции - PullRequest
0 голосов
/ 04 апреля 2019

Я использую animate.css для анимации текста на баннере.Я использую видимость нет / дисплей, чтобы отобразить / скрыть различные элементы и анимировать их.Я хотел бы зациклить функцию AnimateText, когда анимированные функции закончились.Я пытался запустить бесконечный цикл разгрузки, но это не сработало.Я не знаю, как создать цикл и дать ему знать, что последняя анимация завершена, чтобы начать новую итерацию.

function display(element, visibility, callback) {
  document.getElementById(element).style.display = visibility;
};


function animateCSS(element, animationName, Delay, callback) {
  const node = document.querySelector(element)
  node.classList.add('animated', animationName, Delay)


  function handleAnimationEnd() {
    node.classList.remove('animated', animationName, Delay)
    node.removeEventListener('animationend', handleAnimationEnd)

    if (typeof callback === 'function') callback()
  }

  node.addEventListener('animationend', handleAnimationEnd)
};



window.onload =

  function AnimateText() {

    animateCSS('.c1', 'zoomInUp', 'delay-1s',

      function() {
        animateCSS('.c1', 'zoomOutUp', 'delay-3s',

          function() {
            display("el1", "none", display("el2", "block",

              animateCSS('.hhh', 'zoomInUp', 'delay-1s',

                function() {
                  animateCSS('.hhh', 'zoomOutUp', 'delay-3s', function() {
                    display("el2", "none")
                  })
                }
              )))
          })
      })

  };
/* Reset styles */

html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline;
}


/* HTML5 display-role reset for older browsers */

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
  display: block;
}

body {
  line-height: 1;
}

ol,
ul {
  list-style: none;
}

blockquote,
q {
  quotes: none;
}

blockquote:before,
blockquote:after,
q:before,
q:after {
  content: '';
  content: none;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}


/* custom styles */

@font-face {
  font-family: 'Verdana';
}

html {
  margin: 0px;
  padding: 0px;
  width: 600px;
  height: 300px;
  font-family: 'Verdana';
}

body {
  font-family: 'Verdana';
  margin: 0px;
}


/* a link */

a {
  display: block;
  position: relative;
  overflow: hidden;
  color: #000;
  text-decoration: none;
}

#area1 {
  padding: 10px;
  height: 280px;
  background-color: white;
}

#box1 {
  height: 150px;
  padding: 10px;
  background-color: white;
  text-align: center;
  vertical-align: center;
}

#box2 {
  height: 90px;
  padding: 10px;
  text-align: center;
}

.but {
  float: right;
  background-color: #2d2d2d;
  border: none;
  color: white;
  margin: 36px 20px 0px 0px;
  padding: 10px 10px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 16px;
  border-radius: 4px;
}

.but:hover {
  background-color: #d2d2d2;
  color: white;
  box-shadow: 0 6px 8px 0 rgba(0, 0, 0, 0.24), 0 8.5px 25px 0 rgba(0, 0, 0, 0.19);
}

h1 {
  font-size: 5em;
  vertical-align: center;
}

#el1,
#el2 {
  padding-top: 5px;
}

#el3 {
  float: left;
  width: 50%;
}

.h1z {
  color: #000;
}

.h1w {
  color: #fff;
}

.h3w {
  color: #fff;
  font-size: 1.5em;
}

.logo {
  margin: 15px 0px 0px 25px;
  height: 80px;
  float: left;
}
<link href="https://raw.githubusercontent.com/daneden/animate.css/master/animate.css" rel="stylesheet" />
<!doctype html>
<html>

<head>
  <title>banner_300x600</title>
  <meta charset="utf-8">
  <meta name="ad.size" content="width=300,height=600">

</head>

<body>
  <a href="https://www.google.nl/" target="_top">


    <div id="area1">

      <div id="box1">


        <div id="el1" class="c1" style="display: block;">

          <h1>text1 <br/><span class="h1w">text 2</span></h1>

        </div>


        <div id="el2" style="display: none;">

          <h1 class="hhh">text 3<br/><span class="h1w">text4</span></h1>

        </div>


        <div id="el3" style="display: none;">

            <img class="logo" src="https://www.google.nl/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png" alt="Logo Google">

        </div>





      </div>

      <div id="box2">

        <div class="but">
          <p class="h3w">1</p>
        </div>

      </div>



    </div>

  </a>
</body>

</html>

Анимация работает только один раз.Ему нужно подождать 3 секунды после его завершения, а затем начать все сначала.

...