javascript - 动画 HTML5 元素在 Javascript 中被删除

标签 javascript html css

我有一个按钮,它使矩形表面出现并在单击时重新出现。单击该按钮一次使“home_card”出现,再次单击它使其消失。出现的效果应该起作用,当它被移除时我有一个动画表面的问题。

我正在尝试在 home_card 元素上使用事件监听器,然后只删除“transitionend”上的元素。这是我阅读它应该做的方式,但我仍然做错了。谁能发现错误?

我的 javascript 文件如下:

function card_AppearsHome() {


if (transition_counter == 1){

    HOW CAN I INSERT A "DISAPPEARING TRANSITION" before removing the element? I know you can use an eventlistener for the "ontransitionend" event, but not how you can do it.. 

    document.getElementById("white_background_top").removeChild(home_card);
    transition_counter = 0;
}

else {

    //card/ div is created and appears, need to select a tranform: transition method 
    home_card = document.createElement('div');
    home_card.id = "home_card";
    home_card.className = "homecard_appear"

    document.getElementById("white_background_top").appendChild(home_card);

    transition_counter = 1;
}
}

这是CSS中的代码,首先是功能出现的效果..

/* card appearing effect */
.homecard_appear{
animation-name: card_app_anim;
animation-duration: 4s;
}

/* standard transition */
@keyframes card_app_anim {
from {left: 54vw;}
to {left: 94vw;}
}

/* Safari 4.0 - 8.0 transition */
@-webkit-keyframes card_app_anim {
from {left: 54vw;}
to {left: 94vw;}
}

这是用于消失效果的 CSS 代码,我不知道如何在 Javascript 文件中正确执行它。

/* card disappearing effect */
.homecard_dissappear{
animation-name: card_dis_anim;
animation-duration: 4s;
}

/* standard transition */
@keyframes card_dis_anim {
from {left: 94vw;}
to {left: 54vw;}
}

/* Safari 4.0 - 8.0 transition */
@-webkit-keyframes card_dis_anim {
from {left: 94vw;}
to {left: 54vw;}
}

最佳答案

应该这样做(用它替换您提出问题的代码部分):

if (transition_counter === 1) {
  const home_card = document.querySelector('#homeCard');
  home_card.addEventListener('onanimationend', function() {
    home_card.remove();
    transition_counter = 0;
  });
  home_card.classList.add('homecard_dissappear');
}

它为 onanimationend 添加了一个事件监听器(它删除了元素并重置了你的 transition_counter)并添加了 homecard_dissappear 类(它启动了过渡)。当转换结束时,事件触发,函数运行。

如果您在实现时遇到任何问题,请考虑使用最小的可重现示例更新问题,我会更新我的答案。


最初我的示例错误地使用了 ontransitionend(在问题中提出)并围绕提供添加事件监听器的语法展开,因为这似乎是 OP 的主要问题。

但是,正如 folo 和 Hitesh Lala 在评论中指出的那样,上面的动画不会触发ontransitionend,因为它不包含任何转换。因此,要绑定(bind)的正确事件是 onanimationend

关于javascript - 动画 HTML5 元素在 Javascript 中被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56511758/

相关文章:

javascript - 无法将数据存储在 setState react 中

javascript - NodeJS Sendgrid 401 未经授权

javascript - window.open 忽略宽度/高度参数

javascript - 从 Angular 中的孙组件访问祖组件属性

javascript - 单击新添加的列表项时 jQuery 单击事件未触发

html - 没有出现 CSS 渐变

javascript - 动画 anchor 链接导航

html - 容器的绝对位置基于 Body 容器而不是其父容器

php - 在 php 中使用 html 和 java 脚本标签

css - 如何防止 iPad/iPhone 的 CSS 也影响旧浏览器