假设我们有这样一个简单的svg文件:

<svg height="1000" width="1000">
  <line x1="10" y1="50" x2="250" y2="50"  stroke="black" stroke-width="3" fill="red" />
  <circle cx="270" cy="50" r="20" stroke="black" stroke-width="3" fill="red" />
</svg>

这给了我们一条带和圆的线,我想振动这条线,这个圆(一个振荡,我不确定这个词是否正确,就像风让它移动一样),所以它给了图形一个生命.

请问我该怎么做这样的动画?

推荐答案

作为起点,您可能需要

  1. 使用写为三次贝塞尔的线变换路径中的线

  2. 计算其他2条路径作为弯曲曲线上下的位置和形状

  3. 在本例中,我在曲线的3个变体之间添加了一个简单的SMIL动画.

4.圆心对应于曲线的终点.或者,您可能需要使用标记.

你可以从这个 idea 开始.

<svg viewBox="0 -50 300 200" width="300"> 
  <path stroke="black" stroke-width="3" fill="red"  d="M10,50C100,50 200,50 250,50">
    <animate 
       attributeName="d"
       values="M10,50C100,50 200,50 250,50;
               M10,50C100,50 200,50 248,80;
               M10,50C100,50 200,50 250,50;
               M10,50C100,50 200,50 248,20; 
               M10,50C100,50 200,50 250,50;"
       dur="5s"
       repeatCount="indefinite"/>
  </path>
   
  <circle cx="250" cy="50" r="20" stroke="black" stroke-width="3" fill="red" >
    <animate 
       attributeName="cx"
       values="250;248;250;248;250"
       dur="5s"
       repeatCount="indefinite"/>
     <animate 
       attributeName="cy"
       values="50;80;50;20;50"
       dur="5s"
       repeatCount="indefinite"/>
  </circle>
</svg>

Html相关问答推荐

如何通过将项目包裹在迪夫中来保持最右列的对齐方式来对齐项目?

springBoot + Thymeleaf:基于Locale设置页面语言

当在双引号|Angular .html文件中使用时,Pretier会将单引号字符替换为&;Quot;

Angular 15 p-对话框不使用组件 Select 器呈现HTML

如何在伪元素背景中定位多个CSS径向梯度

在NzMessageService中传递动态TemplateRef- Angular 15

图像不在HTML文件中显示

如何将内容元素放在侧边栏旁边?

如何使不断增长的div不溢出其包含固定div的父级

如何从多个TO中获取一个范围标记以溢出其父标记

错误时交换表单,成功时使用HTMX重定向

柔性盒内的物品;t覆盖整个宽度,即使设置为100%

为什么字体大小而不是 colored颜色 属性适用于元素?

带有图像的虚线边框

:invalid Select 器的惰性判断

为什么当我按第三个按钮时,前两个按钮会跳动?

四开将一个 qmd 文档中的单词链接到另一个 qmd 文档中的单词

为什么 css position:fixed 不适用于对话框标签?

如何将自定义图像插入 Shiny plot header?

CSS 变量不适用于自定义属性回退值