javascript - 使用 Javascript 和 CSS 在事件触发时制作动画

标签 javascript jquery html css animation

我是 javascript 和 CSS 的新手,目前正在尝试制作一个在事件调用时触发的小动画。动画很简单,仅改变图像的透明度。我的问题是动画仅在每隔调用该函数时才起作用。

每次我希望动画发生时,都会调用一个名为“pulse()”的函数。

 <script>
    function pulse() {
      $('.transform').toggleClass('transform-active');
    }
 </script>

CSS 看起来像这样:

.lock-image {

}

.transform {
  -webkit-transition: all 1s ease-in-out;  
  -moz-transition: all 1s ease-in-out;  
  -o-transition: all 1s ease-in-out;  
  -ms-transition: all 1s ease-in-out;  
  transition: all 1s ease-in-out;
}

.transform-active {
  /*animation-delay: 2s;*/
  animation-iteration-count: 1;
  animation: pulse 0.5s;
  animation-direction: alternate;
}


@keyframes pulse {
  0% {
    opacity: 1;
  }
  50%{
    opacity: 0.3;
  }
  100% {
    opacity: 1;
  }
}

完成动画的图像是这样完成的;

  <div class="lock-image transform">
    <img id="myImage" src="pic_locked.png" class="img-responsive " style="display:inline" alt="Lock" width="100" height="80">
  </div>

如何更改代码,以便每次调用函数pulse() 时都会发生动画?

最佳答案

您可以添加一个事件处理程序来处理动画结束时删除该类的情况。为了示例的目的,我将图像更改为红色 div

function pulse() {
  $('.transform').addClass('transform-active');
}

$('.transform').on('webkitAnimationEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function() {
  $(this).removeClass('transform-active');
})
#myImage {
  display: block;
  background-color: red;
  width: 100px;
  height: 80px;
}

.transform {
  -webkit-transition: all 1s ease-in-out;
  -moz-transition: all 1s ease-in-out;
  -o-transition: all 1s ease-in-out;
  -ms-transition: all 1s ease-in-out;
  transition: all 1s ease-in-out;
}

.transform-active {
  /*animation-delay: 2s;*/
  animation-iteration-count: 1;
  animation: pulse 0.5s;
  animation-direction: alternate;
}

@keyframes pulse {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0.3;
  }
  100% {
    opacity: 1;
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="lock-image transform">
  <div id="myImage"></div>
</div>
<br/>
<button type="button" onclick="pulse()">Pulse</button>

关于javascript - 使用 Javascript 和 CSS 在事件触发时制作动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44176389/

相关文章:

javascript - 在悬停时使用 jquery 显示具有向下滚动效果的隐藏 div

javascript - 正则表达式:如何像 DOM 渲染器那样删除多余的空格/换行符(处理)

javascript - 在 HTML 末尾执行 JavaScript 函数而不是使用 body onload 有什么问题吗?

javascript - 访问同一对象定义上的 JSON 属性

jquery - 使用 jquery 对图像重新排序

javascript - 将表单提交到新的自定义大小窗口

html - 如何使导航栏元素居中?

javascript - React 中出现大括号解析错误 : Adjacent JSX elements must be wrapped in an enclosing tag. 您想要 JSX 片段 <>...</> 吗?

javascript - 如何从单个正则表达式验证文件名和文件扩展名?

jquery - 在jquery中隐藏段落元素