如何以最小的影响重新启动 CSS 动画

2023-11-27

有没有一种方法可以重新启动 CSS 动画,而无需克隆元素、回流 DOM、等待(setTimeout/onAnimationEnd)?


EDIT:无需 jQuery 或检查。

我基本上只是在下一个绘制的帧处重新启动动画。

此方法不会克隆任何元素、重排文档、设置任何超时或等待动画完成。 它 100% 灵活,不需要 jQuery。

我还没有见过类似的东西(甚至在CSS 技巧)所以我想与您分享我的想法并听取您的想法。

浏览器支持

document.querySelector('.box').onclick = function(){
  requestAnimation( this );
};

var requestAnimation = function( obj ){
  obj.style.animation = 'none';
  window.requestAnimationFrame(function(){
    obj.style.animation = 'myAnimation 1s';
  });
}
html{ background: #212121; }

.box{
  width: 150px;
  background: white;
  cursor: pointer;
  text-align: center;
  margin: auto;
  padding: 20px;
  border-radius: 5px;
  box-shadow: 0 0 3px black;
}
span{
  float: right;
  color: grey;
}
@keyframes myAnimation{
  from{ background: grey; transform: scale(1.2); }
  to{ background: white; transform: scale(1); }
}
<div class="box">I can animate forever!</div>
<span>By Luca Rossi</span>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以最小的影响重新启动 CSS 动画 的相关文章

随机推荐

  • JavaScript 中的“~”是什么意思

    我查看express的代码 看到这个代码https github com visionmedia express blob master lib application js L490 if all envs envs indexOf th
  • django admin:如何自定义字段集中的一个字段?

    我尝试在 django admin 的字段集中创建一个字段以仅显示某些数据 但根据Django 文档 仅举一个例子list display显示可以定制 我尝试了类似的方法fieldsets像下面这样 在 models py 中 def po
  • 将原始 diff 文件转换为彩色 html 输出

    有谁知道有一个脚本可以接受原始 diff 文件和漂亮的打印 HTML 输出 这将更容易审查 邮寄 谷歌搜索给我返回了一些结果 例如http kafka fr free fr diff2html 然而 所有这些脚本都需要两个文件作为输入 它们
  • “CLR20r3”代表什么? (clr是什么版本的)

    显而易见的选择是 CLR version 2 0 revision 3 但不幸的是没有这样的东西 我能得出的最接近的最终清单是维基百科 但使用主要 次要编号系统 出现此问题的原因是 我有一位客户尝试运行我的 net4 应用程序 但它不断崩溃
  • 隐藏(或加密)应用程序资源?

    我正在开发一个 Cocoa 应用程序 它具有我希望保护但仍显示的某些资源 图像 通常情况下 人们会将它们放在资源文件夹中 但存储在那里使得抓取和使用变得非常容易 有什么方法可以隐藏这些图像 但仍然可以在应用程序中访问它们 简单的解决方案 将
  • 如何修复 java.lang.AbstractMethodError: 未实现抽象方法

    我有这个活动 我得到了崩溃 说 java lang AbstractMethodError 抽象方法未实现 我该如何解决它 这就像我让活动成为未实现的东西的元素 但我不知道如何修复它 我多次遇到这个问题 但我不知道如何解决 public c
  • PHP 中的注册表模式还是单例模式?

    我现在正在使用 PHP 类和对象 在这个问题中 字段和方法的名称只是为了让您了解我在说什么而编写的 它与使用单例和注册表设计模式有关 现在假设我需要访问数据库对象 缓存对象 核心设置对象 会话对象 几乎所有其他类中我都需要访问这些对象 所以
  • 使用 python 和 FFT 计算均方位移

    给定一个二维数组 其中每行代表粒子的位置向量 如何有效计算均方位移 使用 FFT 均方位移定义为 其中r m 是第m行的位置向量 N是行数 以下针对 msd 的直接方法有效 但它是 O N 2 我改编了此代码stackoverflow 用户
  • ReplaceAll 为 java8 lambda 函数

    给定以下变量 templateText Hi name variables put name Joe 我想使用以下代码将占位符 name 替换为值 Joe 这不起作用 variables keySet forEach k gt templa
  • MySQL 中的 DOUBLE 与 DECIMAL

    好的 所以我知道有大量文章指出我不应该使用 DOUBLE 在 MySQL 数据库上存储资金 否则我最终会遇到棘手的精度错误 重点是我不是在设计一个新的数据库 而是要求我找到优化现有系统的方法 新版本包含 783 个 DOUBLE 类型列 其
  • 在Android中使用jobb工具

    我正在运行以下命令来获取加密的 obb 文件以进行 apk 扩展 jobb d home manoj Desktop Test o main 1 com example helloworld obb k manoj pn com examp
  • Django Rest Framework 在 POST 中接收主键值并将模型对象作为嵌套序列化器返回

    我不完全确定我的问题的标题是否像我希望的那样具体 但情况是这样的 我有一个HyperlinkedModelSerializer看起来像这样 class ParentArrivalSerializer serializers Hyperlin
  • 如何在magento中获取当前产品的类别名称(在产品详细信息页面上)

    我使用了以下代码 但不适用于这种情况 category detail Mage registry current category echo category detail gt getName got 致命错误 在 app design
  • 视图未附加到窗口管理器(解决方案是什么?)

    我从我的应用程序中收到了数百个错误报告 而且所有错误报告都是相同的 这真的很烦人 因为在我的测试设备 HTC Wildfire Galaxy S I II III Galaxy Mini Galaxy Tab 10 中 这个错误从未发生过
  • x86 中“PAUSE”指令的用途是什么?

    我正在尝试创建一个自旋锁的愚蠢版本 浏览网页时 我在 x86 中发现了一条名为 PAUSE 的汇编指令 该指令用于向处理器提示自旋锁当前正在该 CPU 上运行 英特尔手册和其他可用信息指出 处理器使用此提示来避免内存顺序冲突 大多数情况下
  • Swift Playgrounds:替换 captureValue(_:withIdentifier:)

    Xcode 7 3已弃用 XCPlaygroundPage currentPage captureValue withIdentifier 它的前身 XCPCaptureValue was 已弃用在 Xcode 7 1 中 我想知道除了集合
  • 非凸优化器

    我使用 python2 7 需要找到多元标量函数的最大值 换句话说 我有这个功能 def myFun a b c d e f complex calculation that takes about 30 seconds return re
  • Python中的(1,)和(1)有什么区别[重复]

    这个问题在这里已经有答案了 正如标题所述 我发现 1 and 1 是不同的 但它们有什么区别呢 In 39 1 1 Out 39 False 试试这个来说服自己 gt gt gt type 1
  • 将 JavaScript 变量传递给 AngularJs ng-init

    我定义了以下 javascript 变量并需要传递memId值传入 AngularJs init 函数 div class mini 我收到错误 memId没有定义 您需要使用 角度 方式来完成此操作 window var app angu
  • 如何以最小的影响重新启动 CSS 动画

    有没有一种方法可以重新启动 CSS 动画 而无需克隆元素 回流 DOM 等待 setTimeout onAnimationEnd EDIT 无需 jQuery 或检查 我基本上只是在下一个绘制的帧处重新启动动画 此方法不会克隆任何元素 重排