javascript - 单击链接将暂停动画播放状态更改为运行

标签 javascript css webkit css-animations

使用 CSS 和 Javascript(最好不要使用 jQuery,因为我也不明白)如何设置 CSS 动画以在用户单击时触发从暂停状态到播放状态文本链接 (href) 而不是按钮?

最佳答案

非常简单。只需将 animation-play-state 初始设置为 paused,然后添加一个将 animation-play-state 设置为 running 的类 单击 anchor 链接时。

向事件处理程序添加一个return false,以防止 anchor 的默认操作发生。

window.onload = function() {
  var els = document.getElementsByClassName("play-link");
  for (var i = 0; i < els.length; i++) {
    els[i].addEventListener('click', function(e) {
      e.target.previousElementSibling.classList.add('play');
      return false;
    });
  }
}
div {
  animation: shake 1s infinite;
  animation-play-state: paused;
  border: 1px solid;
  width: 200px;
  height: 100px;
}
@keyframes shake {
  from {
    transform: translateX(0px);
  }
  to {
    transform: translateX(200px);
  }
}
div.play {
  animation-play-state: running;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<div class='animate'>Some text</div>
<a href='#' class='play-link'>Play</a>
<div class='animate'>Some text</div>
<a href='#' class='play-link'>Play</a>


您甚至可以通过打开和关闭 play 类在 pausedrunning 状态之间切换。

window.onload = function() {
  var els = document.getElementsByClassName("play-link");
  for (var i = 0; i < els.length; i++) {
    els[i].addEventListener('click', function(e) {
      e.target.previousElementSibling.classList.toggle('play');
      return false;
    });
  }
}
div {
  animation: shake 4s infinite;
  animation-play-state: paused;
  border: 1px solid;
  width: 200px;
  height: 100px;
}
@keyframes shake {
  0% {
    transform: translateX(0px);
  }
  50% {
    transform: translateX(400px);
  }
  100% {
    transform: translateX(0px);
  }  
}
div.play {
  animation-play-state: running;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<div class='animate'>Some text</div>
<a href='#' class='play-link'>Toggle Play State</a>
<div class='animate'>Some text</div>
<a href='#' class='play-link'>Toggle Play State</a>

关于javascript - 单击链接将暂停动画播放状态更改为运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32825156/

相关文章:

javascript - 如果列只有一项,如何删除标签

javascript - Google Drive SDK JavaScript 文件共享对话框给出 "Refused to display document because display forbidden by X-Frame-Options"

css - 这个微型网站的页脚最奇怪的地方

node.js - 快照 HTML 页面,然后使用 node.js 和 phantom 转换为图像

jquery - 用于进度条的 $.getJSON 在 Safari 和 Chrome 中不起作用(但在 IE6+ 和 FF 中正常)

javascript - 在 JavaScript 中使用 crossfilter 动态返回结果

javascript - 是否可以在 Knockout.js 中将 valueUpdate :'afterkeydown' 设置为默认 valueUpdate?

php include, index.php 和 CSS 文件问题

html - 如何在不使用 - 连字符的情况下使用 CSS 设置字体大小?

arrays - WebKitView请求没有通过?