奇技淫巧——CSS 实现波浪效果

  • 时间:2018-10-30 22:55 作者:web秀 来源:web秀 阅读:358
  • 扫一扫,手机访问
摘要:点击右上方红色按钮关注“web秀”,让你真正秀起来前言一直以来,使用纯 CSS 实现波浪效果都是十分困难的。CSS 实现波浪效果由于实现波浪的曲线需要借助贝塞尔曲线。 而使用纯 CSS 的方式,实现贝塞尔曲线,额,暂时是没有很好的方法。 当然,借助其余力量(SVG、CANVAS),是可以很轻松的完成

点击右上方红色按钮关注“web秀”,让你真正秀起来

前言

一直以来,使用纯 CSS 实现波浪效果都是十分困难的。

奇技淫巧——CSS 实现波浪效果

CSS 实现波浪效果

由于实现波浪的曲线需要借助贝塞尔曲线。 而使用纯 CSS 的方式,实现贝塞尔曲线,额,暂时是没有很好的方法。 当然,借助其余力量(SVG、CANVAS),是可以很轻松的完成所谓的波浪效果的。

下面先来看看非 CSS 方式实现的波浪效果。

SVG 实现波浪效果

借助 SVG ,是很容易画出三次贝塞尔曲线的。

奇技淫巧——CSS 实现波浪效果

SVG 实现波浪效果

奇技淫巧——CSS 实现波浪效果

SVG 实现波浪效果

画出三次贝塞尔曲线的核心在于 这一段。感兴趣的可以自行去研究研究。

canvas 实现波浪效果

使用 canvas 实现波浪效果的原理与 SVG 一样,都是利用路径绘制出三次贝塞尔曲线并赋予动画效果。

奇技淫巧——CSS 实现波浪效果

canvas 实现波浪效果

奇技淫巧——CSS 实现波浪效果

canvas 实现波浪效果

可以复制上方代码至在线coding, 查看效果。

主要是利用了动态绘制 ctx.bezierCurveTo() 三次贝塞尔曲线实现波浪的运动效果,感兴趣的可以自行研究。

CSS实现波浪效果

最开始不是说css不能实现吗?是,我们没有办法直接绘制出三次贝塞尔曲线,但是我们可以利用少量讨巧的方法,模拟达到波浪运动时的效果,下面来看看这种方法。

原理

原理十分简单,我们都知道,一个正方形,给它增加 border-radius: 50%,将会得到一个圆形。

奇技淫巧——CSS 实现波浪效果

CSS实现波浪效果

width: 240px;
height: 240px;
background: #f13f84;
border-radius: 50%;

好的,假如 border-radius 没到 50%,但是接近 50% ,我们会得到一个这样的图形(注意边角,整个图形给人的感觉是有点圆,却不是很圆。)

奇技淫巧——CSS 实现波浪效果

CSS实现波浪效果

width: 240px;
height: 240px;
background: #f13f84;
border-radius: 40%;

好的,那整这么个图形又有什么用?还能变出波浪来不成?

我们让上面这个图形滚动起来(rotate) ,看看效果:

奇技淫巧——CSS 实现波浪效果

CSS实现波浪效果

@keyframes rotate{
from{transform: rotate(0deg)}
to{transform: rotate(359deg)}
}
.ripple{
width: 240px;
height: 240px;
background: #f13f84;
border-radius: 40%;
animation: rotate 3s linear infinite;
}

可能很多人看到这里还没懂旋转起来的用意,仔细盯着一边看,是会有相似波浪的起伏效果的。

而我们的目的,就是要借助这个动态变换的起伏动画,模拟制造出相似波浪的效果。

实现

当然,这里看到是全景实现图,所以感觉并不显著,OK,让我们用一个个例子看看具体实现起来能达到什么样的效果。

我们利用上面原理可以做到的一种波浪运动背景效果图:

奇技淫巧——CSS 实现波浪效果

CSS实现波浪效果

后面漂浮的波浪效果,其实就是利用了上面的 border-radius: 40% 的椭圆形,只是放大了很多倍,视野之外的图形都 是隐藏的 ,只留下了一条边的视野,并且添加了少量相应的transform 变换。

可能有部分同学,还存在疑问,OK,那我们把上面的效果隐藏部分显示解决,将视野之外的动画也补齐,那么其实生成波浪的原理是这样的:

奇技淫巧——CSS 实现波浪效果

CSS实现波浪效果

图中的红色框就是我们实际的视野范围。

值得注意的是,要看到,这里我们生成波浪,并不是利用旋转的椭圆本身,而是利用它去切割背景,产生波浪的效果。

完整代码请点击下面“理解更多”。

声明

喜欢小编的点击关注,理解更多知识!

演示地址页源码,请点击下方“理解更多”!

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】极客时间-数据分析实战45讲【完结】(2021-09-02 16:26)
【系统环境|windows】字节跳动前台面试题解析:盛最多水的容器(2021-03-20 21:27)
【系统环境|windows】DevOps敏捷60问,肯定有你想理解的问题(2021-03-20 21:27)
【系统环境|windows】字节跳动最爱考的前台面试题:JavaScript 基础(2021-03-20 21:27)
【系统环境|windows】JavaScript 的 switch 条件语句(2021-03-20 21:27)
【系统环境|windows】解决 XML 数据应用实践(2021-03-20 21:26)
【系统环境|windows】20个编写现代CSS代码的建议(2021-03-20 21:26)
【系统环境|windows】《vue 3.0探险记》- 运行报错:Error:To install them, you can run: npm install --save core-js/modules/es.arra...(2021-03-20 21:24)
【系统环境|windows】浅谈前台可视化编辑器的实现(2021-03-20 21:24)
【系统环境|windows】产品经理入门迁移学习指南(2021-03-20 21:23)
血鸟云
手机二维码手机访问领取大礼包
返回顶部