捕获出现一瞬间的DOM元素

243 阅读2分钟

背景

今天,我想要知道一个网页的按钮点击后的 wave 动画效果是如何实现的,动画效果如图:

GIF 22-6-14 18-39-41.gif

在简单的看了一下节点的元素和 Animation 后,确定了动画过程,但是有一个问题,那就是这一个节点消失了,即使我使用暂停也没有用。消失的节点就是下图中的灰色部分:

image.png

真没想到,前面学会了用 Animations 捕获只出现一瞬间的类名,还想着可以“一劳永逸”。没想到这么快就又遇到瓶颈了。

问题

我点击“邀请中心”时,观察到图中的 span 标签出现了新的子结点,但是它很快就消失了,我尝试了使用手速捕获和使用 Animation 暂停,都解决不了。

image.png

解决问题

断点(其实应该很容易想出来的)。

span 元素添加断点,添加方式如下(给出了中英两种界面):

image.png

image.png

加好断点好,看一下,现在是未点击的时候:

image.png

然后现在我们点击“邀请中心”按钮,此时会触发中断,进入调试源代码界面,我们可以进行调试:

image.png

每点击一下“step into”(即上图红色方框),然后看一下元素中是否出现了我们想要的子节点,可以看到,成功出现了我们想要的子节点,而且还是两个呢!:

image.png

好了,到这里,我就可以愉快地查看他是如何实现的了。

wave 实现方式

通过断点调试,可以知道他的大致实现流程:

  1. 点击按钮,会渲染两个 span 节点

image.png

  1. 两个节点出现时,会有动画,该动画成就了 wave 效果

GIF 22-6-14 21-16-06.gif

  1. 渲染完 wave 效果后,两个节点就消失了

GIF 22-6-14 21-16-06.gif

仿照

按钮点击波纹 - 码上掘金 (juejin.cn)