使用平滑变形的主题会很有趣,即在 svg 按钮中将一个图形的轮廓更改为另一个图形的轮廓。
接下来是设计。在初始状态下,该按钮有一个图标 - 左侧有一个黄色星形和“保存”字样
当您单击按钮时,星号会平滑地变为绿色复选框,并且“保存”字样变为“已保存!”字样。
很明显,平滑变形是通过将一个图形的节点坐标更改为另一个图形节点的坐标来实现的。我知道,为了实现这一点,必须满足主要条件——两种形状中的锚点数量必须相同。路径(补丁)不应该有中断。
星形图标示例
<svg width="194.6" height="185.1" viewBox="0 0 194.6 185.1">
<path fill="#FFD41D" d="M97.3,0 127.4,60.9 194.6,70.7 145.9,118.1 157.4,185.1 97.3,153.5 37.2,185.1 48.6,118.1 0,70.7 67.2,60.9"/>
</svg>
复选框图标示例
<svg width="194.6" height="185.1" viewBox="0 0 194.6 185.1">
<path d="M110,58.2 147.3,0 192.1,29 141.7,105.1 118.7,139.8 88.8,185.1 46.1,156.5 0,125 23.5,86.6
71.1,116.7" fill="yellowgreen"/>
</svg>


将星号图标变形为复选框的示例。
开始动画 - 点击图。
动画是通过平滑更改补丁的“d”属性中的锚点的坐标来实现的。
颜色变化动画由命令执行:
剩下的就是编写
CSS按钮样式的规则和JS通过添加、删除类和运行动画来切换按钮状态的脚本。开始动画 - 点击图。
一个小答案不是关于这个问题的,而是关于 svg 的更一般的回答。
出于某种原因,开发人员不屑于用手绘画并通常触摸它(好像他们害怕在笔记本中看到 jpg 一样)。这甚至适用于非常大的公司。
让我们看看RBC的标志(链接)
它看起来像什么以及如何完成:
好吧,回到我们的复选框星。自己画没什么难的,不比在笼子里的笔记本里画更难:
polygon,path因为它意味着可能存在贝塞尔曲线。答案中的动画非常笨拙,没有灵魂,动画中间有很强的混乱。我打开编辑器,将一个形状叠加在另一个形状上,看看我如何才能更粗略地制作动画:
我们从答案中插入示例,我们看看 svg 中可以改进的地方。原则上一切都井井有条,只有在形状动画开始时可以直接在svg中启动彩色动画,这会抛出一点额外的js。