简体   繁体   English

Vanilla JavaScript:动画结束后删除跨度

[英]Vanilla JavaScript: delete spans after animation ends

I use anime.js to animate headings.我使用anime.js 为标题设置动画。 It adds spans to all letters to animate them individually.它为所有字母添加跨度以单独为它们设置动画。 After the animation I like to delete this spans from the text, but deletion doesn't working.动画结束后,我喜欢从文本中删除此跨度,但删除不起作用。 This is the code:这是代码:

function theAnimation() {
  var textWrapper = document.querySelector('.pt-animation');
  textWrapper.innerHTML = textWrapper.textContent.replace(/\S/g, "<span class='letter'>$&</span>");

  anime.timeline({
    loop: false,
    delay: 500
  })
  .add({
    targets: '.pt-animation .letter',
    translateX: [40,0],
    translateZ: 0,
    opacity: [0,1],
    easing: "easeOutExpo",
    duration: 1200,
    delay: (el, i) => 500 + 30 * i
  })
}

function deleteSpan(){
  var letter = document.getElementsByClassName("letter");
  delete letter;
}

theAnimation();
deleteSpan();

Try remove method:尝试删除方法:

var letter = document.getElementsByClassName("letter")[0];
letter.remove();

complete() callback is triggered once when the animation is completed. complete()回调在动画完成时触发一次。

To delete element from DOM , Use elem.parentNode.removeChild(elem);要从DOM删除元素,请使用elem.parentNode.removeChild(elem);

 function theAnimation() { var textWrapper = document.querySelector('.pt-animation'); textWrapper.innerHTML = textWrapper.textContent.replace(/\\S/g, "<span class='letter'>$&</span>"); anime.timeline({ loop: false, delay: 500 }) .add({ targets: '.pt-animation .letter', translateX: [40, 0], translateZ: 0, opacity: [0, 1], easing: "easeOutExpo", duration: 1200, delay: (el, i) => 500 + 30 * i, complete: deleteSpan }); } function deleteSpan() { var letter = document.getElementsByClassName("letter"); for (var i = 0, len = letter.length; i < len; i++) { letter[i].parentNode.removeChild(letter[i]); } } theAnimation();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM