SVG波浪动画

今天来试试用svg+css3制作波浪动画

下图是我制作出的效果

还不错吧

在制作波浪前,首先我们要画波浪啊,至于画波浪,如果你想直接通过计算贝塞尔曲线绘制出波浪。。。

好吧,那我也不拦着你

我就直接用ai的钢笔工具画了

为了画出一模一样的曲线可是花了我不少功夫

但是光滑曲线还是不行的,必须要画出一个以曲线为顶的“矩形”

像这样:

本人画工不敢恭维,凑合着看吧

毕竟之前没画过

导出svg文件再用文本编辑器打开就有路径了

 

 1 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="600px" height="300px">
 2         <defs>
 3             <g id="whole" fill-opacity="0.3" fill="cornflowerblue">
 5                 <path id="wave1" d="M0,200c50-50,99,0,99,0c51,50,101,0,101,0c50-50,100,0,100,0c50,50,100,0,100,0c50-50,100,0,100,0
 6             c50,50,100,0,100,0v200H0V200z"></path>
 7                 <path id="wave2" d="M0,200c50-50,99,0,99,0c51,50,101,0,101,0c50-50,100,0,100,0c50,50,100,0,100,0c50-50,100,0,100,0
 8             c50,50,100,0,100,0v200H0V200z"></path>
 9                 <path id="wave3" d="M0,200c50-50,99,0,99,0c51,50,101,0,101,0c50-50,100,0,100,0c50,50,100,0,100,0c50-50,100,0,100,0
10             c50,50,100,0,100,0v200H0V200z"></path>
11             </g>
12             
13         </defs>
14         <use xlink:href="#whole" opacity="1"></use>
15     </svg>

常规操作,先来个svg标签,定义好宽高,里面放个defs标签,用于隐藏内部元素,因为我们需要的可不止是一个波浪,所以我们用g标签包住,方便定义样式

在css中这样设置:

 1         @keyframes move1 {
 2             0%{transform: translateX(-500px) scaleX(2.5);}
 3             100%{transform: translateX(0) scaleX(2.5);}
 4         }
 5         @keyframes move2 {
 6             0%{transform: translateX(-600px) scaleX(3);}
 7             100%{transform: translateX(0) scaleX(3);}
 8         }
 9         @keyframes move3 {
10             0%{transform: translateX(-800px) scaleX(4);}
11             100%{transform: translateX(0) scaleX(4);}
12         }
13         #wave1{animation: move1 2s linear infinite;}
14         #wave2{animation: move2 1.7s linear infinite;}
15         #wave3{animation: move3 2s linear infinite;}    

每个波浪我都定义了不同的样式,是他们看起来有所不同,且运动速度也不一样

这样波浪就做好了

但是这样就够了么?

我们知道波浪动画的应用其实很广泛,上述所做只不过是最普通的一个用法

其他用法怎么做呢?比如说下面这个:

其实也相当简单只要用到mask标签就可以了

 1 <defs>
 2             <g id="whole" fill-opacity="0.3" fill="black" mask="url(#mask)">
 3                 <use x="0" y="0" xlink:href="#text" opacity="1" fill="#FFF"></use>
 4                 <path id="wave1" d="M0,200c50-50,99,0,99,0c51,50,101,0,101,0c50-50,100,0,100,0c50,50,100,0,100,0c50-50,100,0,100,0
 5             c50,50,100,0,100,0v200H0V200z"></path>
 6                 <path id="wave2" d="M0,200c50-50,99,0,99,0c51,50,101,0,101,0c50-50,100,0,100,0c50,50,100,0,100,0c50-50,100,0,100,0
 7             c50,50,100,0,100,0v200H0V200z"></path>
 8                 <path id="wave3" d="M0,200c50-50,99,0,99,0c51,50,101,0,101,0c50-50,100,0,100,0c50,50,100,0,100,0c50-50,100,0,100,0
 9             c50,50,100,0,100,0v200H0V200z"></path>
10             </g>
11             <text id="text" transform="translate(100,290)" font-size="150" font-weight="600">TEXT</text>
12             <mask id="mask">
13             <use x="0" y="0" xlink:href="#text" opacity="1" fill="#FFF"></use>
14             </mask>
15         </defs>

text标签设置文字内容样式,mask标签一定要放在defs中以表明他是作为遮罩来使用的,最后用use标签在g中调用mask

成功实现文字遮罩效果

还有加速球效果

这个我就不说了,也是遮罩效果,只不过从文字变成圆了而已

转载于:https://www.cnblogs.com/FrankLongger/p/9661374.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML5中的SVG可以用来创建各种炫酷的动画效果,包括多条波浪线条动画。下面是一个简单的示例代码,用于创建两条波浪线条动画: ```HTML <svg width="800" height="400"> <path id="wave1" fill="none" stroke="#00BFFF" stroke-width="5" d="M0 150 q30 30 60 0 t60 0 t60 0 t60 0 t60 0 t60 0 t60 0 v250 h-360 z"> <animateTransform attributeName="transform" attributeType="XML" type="translate" dur="10s" values="0; -400" repeatCount="indefinite" /> </path> <path id="wave2" fill="none" stroke="#00BFFF" stroke-width="5" d="M0 250 q30 -30 60 0 t60 0 t60 0 t60 0 t60 0 t60 0 t60 0 v150 h-360 z"> <animateTransform attributeName="transform" attributeType="XML" type="translate" dur="10s" values="0; -400" repeatCount="indefinite" /> </path> </svg> ``` 在这个例子中,我们创建了两个波浪线条,分别称为“wave1”和“wave2”。这些路径有一个“d”属性,用于定义路径的形状。这里我们使用了SVG的曲线命令“q”来创建波浪线条。我们还使用了SVG的路径命令“v”和“h”来定义线条的垂直和水平线段。 接下来,我们使用SVG动画功能,通过使用“animateTransform”元素来创建平移动画。我们将波浪线条沿着Y轴向下移动,并且在10秒钟内完成动画。我们还使用“repeatCount”属性使动画无限循环。 最后,我们将两个波浪线条添加到SVG元素中,并设置宽度和高度以适应我们的动画。我们还可以使用CSS样式来进一步自定义这些元素的外观。 这只是一个简单的示例,但你可以使用SVG的各种命令和动画功能来创建更复杂和炫酷的波浪线条动画

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值