前端绘制动画(svg)

如何优雅嵌入动画到前端页面?
通常情况下,对于一些简单的有规则的图形,可以使用css直接编写图形,给这个元素添加动画规则即可(可参考文章3d转动正方体)。
但是当要给一个比较复杂的矢量图形添加动画时,以上方法显然是不可行的。

便捷方法:将要添加动画的图标转化成svg格式,打开svg文件,复制svg代码到你的项目中来。(以下是我使用svg在线编辑器绘制的图形)
在这里插入图片描述

<svg width="800" height="600" xmlns="http://www.w3.org/2000/svg">
            <g>
            <title>Layer 1</title>
            <ellipse  fill="#729C62" ry="23" rx="134.5" id="svg_3" cy="314.5" cx="227.5"/>
            <path class="anim" id="svg_6" d="m227.32284,232.04589c-3.77612,-7.45046 -8.39594,-13.48238 -13.02995,-17.70195c-5.40716,4.32508 -11.99278,6.95873 -19.17239,6.95873c-7.19371,0 -13.7888,-2.63878 -19.18643,-6.95873c-4.63399,4.21956 -9.25853,10.25149 -13.04392,17.70195c-8.78721,17.29783 -9.75359,35.04099 -2.1639,39.64155c3.39898,2.07241 6.96277,0.52775 10.64456,-3.34685c-0.64584,3.92861 -1.02299,8.18671 -1.02299,12.64057c0,19.78735 7.03825,35.81593 15.71214,35.81593c5.22804,0 7.81608,-5.83637 9.06055,-14.77228c1.23988,8.93592 3.82789,14.77228 9.03699,14.77228c8.68814,0 15.72646,-16.02858 15.72646,-35.81593c0,-4.45386 -0.37728,-8.71196 -1.03715,-12.64057c3.69114,3.87461 7.25023,5.41926 10.65865,3.34685c7.58502,-4.60056 6.60437,-22.34373 -2.1826,-39.64155l-0.00001,0zm-32.21161,-17.49343c14.59483,0 26.432,-12.92889 26.432,-28.87766s-11.83717,-28.87769 -26.432,-28.87769c-14.5998,0 -26.44631,12.93147 -26.44631,28.87769s11.84652,28.87766 26.44631,28.87766z" stroke="#000" fill="#fff"/>
            </g>
</svg>

假如此时给小人添加动画,给path添加类名‘anim’,此时可以直接编辑代码根据需求添加动画

.anim {
    animation: lineMove 3s ease-out infinite;
    stroke-width:1;
    stroke:#729C62;
}

@keyframes lineMove {
    0% {
        stroke-dasharray: 0, 378;
    }
    50% {
        stroke-dasharray: 378, 378;
        fill: rgba(0, 0, 0, 0);
        opacity: 1;
    }
    80% {
        stroke-dasharray: 378, 378;
        fill: #729C62df;
        opacity: 1;
    }
    100% {
        stroke-dasharray: 378, 378;
        fill: rgba(255, 119, 0, .5);
        opacity: 0;
    }
}

效果图:
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SVG(Scalable Vector Graphics)和Canvas是用于在网页上绘制图形的两种主要技术。它们各自具有一些优点和缺点,下面是它们的特点: SVG的优点: 1. 矢量图形:SVG使用矢量图形,图像可以按比例缩放而不会失真。这使得SVG非常适合绘制图标、图表和其他需要高质量缩放的图形。 2. 声明性语法:SVG使用XML语法来描述图形,使其易于阅读、理解和修改。可以使用CSS样式和JavaScript来控制和交互SVG元素。 3. 可搜索性和可访问性:由于SVG是基于文本的,因此可以通过搜索引擎索引,并且对于屏幕阅读器等辅助技术也更友好。 SVG的缺点: 1. 复杂性:复杂的SVG图形可能会导致性能下降,特别是在处理大规模或复杂动画时。 2. 浏览器兼容性:尽管现代浏览器都支持SVG,但在某些旧版本的浏览器中可能存在兼容性问题。 Canvas的优点: 1. 像素级控制:Canvas提供了一个像素级别的画布,可以通过JavaScript直接绘制图形和动画。这使得Canvas非常适合实时绘图和游戏开发。 2. 性能优势:由于Canvas直接操作像素,绘制速度快,特别适用于大规模或复杂的动画效果。 3. 灵活性:Canvas可以处理各种类型的图形和动画,并且对于绘制和变换图形提供了更多的自由。 Canvas的缺点: 1. 无法缩放:Canvas中绘制的图形是基于像素的,所以在缩放时会有失真。如果需要高质量缩放,可能需要进行额外的处理。 2. 不支持事件处理:Canvas绘制的图形无法直接添加事件处理程序,需要手动编写JavaScript代码来实现交互。 综上所述,选择使用SVG还是Canvas取决于具体的需求。如果需要高质量缩放、可搜索性和可访问性,以及对于简单图形和图标的绘制SVG是一个不错的选择。如果需要像素级控制、性能优势以及对于实时绘图和游戏开发的需求,那么Canvas更适合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值