美文网首页HTMl/CSS让前端飞
纯CSS 实现波浪移动效果

纯CSS 实现波浪移动效果

作者: ac68882199a1 | 来源:发表于2018-01-14 20:18 被阅读71次

在某些页面上常常看到波浪的效果,虽然只有装饰的作用,但是却让页面看上去更生动了,同时某些情况下也能起到进度条的作用,而波浪的形式却比普通进度条更美观有趣。

如果想要实现波浪的效果,作者想到的第一个方法是通过 canvas 绘制波浪,然后用帧动画让波浪运动起来。这种方式实现的波浪效果应该是最好的,能够实现很多细节,比如控制波峰的高度、改变波浪的数量、根据前一个波浪的高度计算后一个波浪的高度等等。

但是往往需求并不会这么复杂,产品经理和设计想要的只是一个看上去还比较美观的波浪效果而已。如果用 canvas 去做,就实在是大材小用了,耗时耗力。所以这种情况下,就可以尝试使用 css 来完成这个小需求。

分析波浪效果

上面是作者完成的波浪效果的其中一种(不会做 gif,就用多张图片拼贴在一起代替吧),它有两个波峰,这两个波峰动起来时,会有一种向右推进的效果。我们先一个一个来看,如果要实现一个波峰,我们应该怎么做?

波峰具有弧度,在 css 中能够实现弧度效果的是border-radius这个属性;而对于向右推进的效果,单个来看的话,其实可以理解为是旋转动画,我们可以通过animation来实现。

// html
<div class="wave"></div>

// style
.wave {
    width: 300px;
    height: 300px;
    border-radius: 50%;
    background: blue;
}

上面代码中的.wave在页面上的显示效果是一个圆形。虽然还没有添加动画,但是我们已经可以预想到,即使旋转起来,我们视觉上看来并没有在运动。这要怎么解决呢?其实很简单,只要让每一个角的弧度都不同就行了。同时,让宽高不同,可以使绘制出来的效果更好。

.wave {
    width: 250px;
    height: 300px;
    border-top-right-radius: 150px;
    border-top-left-radius: 150px;
    border-bottom-right-radius: 150px;
    border-bottom-left-radius: 140px;
    background: #adcbfe;
}

然后通过动画使这个不规则的形状动起来。

.wave {
    width: 250px;
    height: 300px;
    border-top-right-radius: 150px;
    border-top-left-radius: 150px;
    border-bottom-right-radius: 150px;
    border-bottom-left-radius: 140px;
    background: #adcbfe;
    animation: wave 4s linear infinite;
}

@keyframes wave {
    0% {transform: rotate(0deg);}
    100% {transform: rotate(360deg);}
}

关于 css 动画的使用,可以参考之前的一篇文章:

纯CSS实现轮播图效果

到这里,一个波浪的实现就完成了。第二个波浪的实现步骤和第一个是相同的,但是可以对width height border-radius animation 这些属性进行修改,使两个波浪的运动节奏不同,有快有慢有高有低,这样波浪的效果就会更真实。

想要看源码的小伙伴可以戳下面这个链接:

demo on github

扫码关注微信公众号【前端程序员的斜杠青年进化录】 微信扫码,给我赞赏一下~

相关文章

  • 纯CSS 实现波浪移动效果

    在某些页面上常常看到波浪的效果,虽然只有装饰的作用,但是却让页面看上去更生动了,同时某些情况下也能起到进度条的作用...

  • CSS奇技淫巧之实现波浪效果

    一直以来,使用纯 CSS 实现波浪效果都是十分困难的。 因为实现波浪的曲线需要借助贝塞尔曲线。而使用纯 CSS 的...

  • 前端-纯CSS实现波浪效果!

    一直以来,使用纯 CSS 实现波浪效果都是十分困难 因为实现波浪的曲线需要借助贝塞尔曲线。 而使用纯 CSS 的方...

  • 纯CSS实现动态波浪效果

    在预备做这个动效之前,参考了网上的教程,结果当然是需要借助贝塞尔曲线。本人却偏好css,因为纯css实现贝赛尔曲线...

  • 2018-08-31 基于CSS3D视角,实现视差滚动

    纯CSS实现视差滚动效果

  • 纯css实现移动端横向滚动效果

    最终效果 这种效果在移动端挺常见的,实现也不复杂。不需要js,纯css就可以实现。 这种横排布局,内容超过屏幕宽度...

  • css3动画--图标翻转效果

    这个效果不复杂,纯CSS就可以实现,可以给网站增加些动态效果。下面看看怎么实现的吧。 HTML CSS

  • Anime+Vue<小人奔跑效果>

    效果图: 这种效果纯css也是可以实现的,点这里就能看到纯css写的 ?但是用animejs你会发现方便很多,下面...

  • day4

    纯css实现类似五角星的效果flexfloat

  • CSS3动画属性实现幻灯片效果

    纯CSS实现的幻灯片效果:查看demo; 实现思路 既然想实现动画效果,那么就需要用到CSS3中的@keyfram...

网友评论

    本文标题:纯CSS 实现波浪移动效果

    本文链接:https://www.haomeiwen.com/subject/dwrloxtx.html