javascript - 每次都使背景淡入 "onclick"

标签 javascript css fade

我希望 DIV 显示一条确认消息,其中每次单击都会激活 css 效果“动画”或“淡出”。它在第一次点击时工作正常,但在随后的点击中不起作用。

function clientedetail() {
  document.getElementById("guardadoC").innerHTML = "Guardado.";
  document.getElementById("guardadoC").style.cssText = "animation: background-fade 3s;padding:5px;";
}
@keyframes background-fade {
  0% {
    background-color: green;
  }
  100% {
    background-color: none;
  }
}
<input type="button" onclick="clientedetail()"></input>

<div id="guardadoC"></div>

最佳答案

您可以添加一个 addEventListener('animationend', function() { ... }); 来重置动画,以便您可以再次运行它。

将 CSS 保存在 CSS 文件中而不是将其作为 JavaScript 中的字符串编写也是一个好主意。现在,我们正在向元素添加一个类来执行我们想要的操作。

function clientedetail() {
  var el = document.getElementById("guardadoC");
  el.innerHTML = "Guardado.";
  el.classList.add("animating");

  //This function runs when the CSS animation is completed
  var listener = el.addEventListener('animationend', function() {
    el.classList.remove("animating");

    //this removes the listener after it runs so that it doesn't get re-added every time the button is clicked
    el.removeEventListener('animationend', listener);
  });
}
@keyframes background-fade {
  0% {
    background-color: green;
  }
  100% {
    background-color: none;
  }
}

#guardadoC {
  padding:5px;
}

#guardadoC.animating {
  animation: background-fade 3s;
}
<button type="button" onclick="clientedetail()">click me</button>

<div id="guardadoC"></div>

关于javascript - 每次都使背景淡入 "onclick",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55346125/

相关文章:

javascript - 我可以在图像映射区域元素上添加 onclick 事件吗?

javascript - 按清除按钮后计算器键盘输入显示困惑

javascript - 帮助重构这个 jQuery Cycle 扩展

jQuery 淡入淡出图像渐变到 0

php - AJAX/Javascript 上传 PHP 问题

css - Sass @each 返回错误 : expected `in` keyword in @each directive

javascript - 实现CSS日期输入

javascript - jQuery 缓慢更改 css 属性

jQuery 替换内容而不是淡入淡出

javascript - 为什么当对象键是数字、连续且从0开始时,axios会将JSON对象转换为数组?