在使用支付宝的时候,我发现了一个很有意思的功能——波浪效果,于是我钻研了一下午,觉得这玩意还真是挺有意思,大致是svg+css3来实现

于是我就简单仿写了一个波浪特效

照例,直接上功能,不多解释

知乎视频​www.zhihu.com

1.需求分析

还是来做常规的需求分析,首先我谈谈我为什么选择svg

SVG 是一种基于 XML 语法的图像格式。
其他图像格式都是基于像素处理的,SVG 则是属于对图像的形状描述,
所以它本质上是文本文件,体积较小,且不管放大多少倍都不会失真。
此外SVG 是万维网联盟的标准,SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体。

为了更好地显示波浪,我们造一个圆形,让波浪在里面打转转。

html结构如下:

<div class="padding-bor"><div class='bor'><svg class="posi"></svg></div>
</div>

css结构如下:

@theme-blue:#02A7F0;
.padding-bor{display: flex;justify-content: center;background-color:@theme-blue;height: 100%;position: absolute;width: 100%;overflow:hidden;.bor{align-self: center;border:1px solid @theme-blue;background-color: #fff;border-radius: 50%;width: 300px;height: 300px;}
}

静态效果

好,现在呢,我们来真正地看一遍这个东西是咋回事

圆的width和height都是固定的,我们要保证svg的高度在y轴上的高度是和圆形保持一致的,且X轴的宽度要明显大于圆形的宽度。

我这里假设圆形的width=300px,height=300px

那么,svg的height = 300px, 但是为了保证后期的波浪滚动效果,width = 2*圆形宽度 = 600px

实际上,我们看效果图就知道,整个svg是由2部分组成的

红色部分是矩形,然后是4个弧形(黄色部分)

现在我们就开始来画

<svg height="300px" width="600px" class="posi"><!--矩形--><rect width="100%" x="0" y="100"/>
</svg>

这里我们从Y轴的100px处开始画矩形,是为了给波浪留出100的空间

好,现在我们来画第一个弧形波浪,就是图中黄色的部分

<svg height="300px" width="600px" class="posi"><!--矩形--><rect width="100%" x="0" y="100"/><!--第一个弧形--><path fill="#fff" d="M0 100, Q75 175,150 100"/>
</svg>

以此类推,我们来画后面的几个弧形

<svg height="300px" width="600px" class="posi"><!--矩形--><rect width="100%" x="0" y="100"/><path fill="#fff" d="M0 100, Q75 175,150 100"/><path fill="blue" d="M150 100, Q225 25,300 100"/><path fill="#fff" d="M300 100, Q375 175,450 100"/><path fill="blue" d="M450 100, Q525 25,600,100"/>
</svg>

增加动画

现在静态图已经做好了,那么我们就来画动态的效果

还是在css中定义一个keyframe

@keyframes move{from {left:0}to{left:-300px}
}

接下来,我们对css进行一定程度的结构改造

.padding-bor{display: flex;justify-content: center;height: 100%;position: absolute;width: 100%;.bor{align-self: center;border:1px solid #02A7F0;background-color: #fff;border-radius: 50%;width: 300px;height: 300px;overflow:hidden;.posi{left:0;position: relative;animation-name: move;animation-duration: 2.5s;animation-iteration-count:infinite;animation-delay: 0;animation-timing-function: linear;}}
}

这里要特别注意animation-timing-function,因为它默认不是线性的,而是慢速收尾,所以会出现动画效果在结束的关键帧之后,发生卡顿

这是不允许的,也是不科学的,所以需要改成linear

最后,我们就可以实现最终的效果了,因为实在太棒了,所以我们再看一遍

知乎视频​www.zhihu.com

50兆 svg 文件超过_用svg+css3实现支付宝App波浪功能相关推荐

  1. 50兆 svg 文件超过_如何让 Flutter 应用更好地使用 SVG?

    简介:SVG 作为一个强大的矢量图标准格式,在图片清晰度的表现力上有着位图无法比拟的优势.那么是否 SVG 就是绝对的首选了呢?事实可能并非如此.本文将带大家了解 SVG 在 Flutter 应用中的 ...

  2. 50兆 svg 文件超过_使用 SVGO 来减小 SVG 文件大小的三种方法

    在这篇文章中我将建议你三种方法,利用 SVGO 让你对 SVG 进行优化,使之适合 Web 使用. 为什么你需要对 SVG 做优化 SVG (全称是 Scalable Vector Graphics) ...

  3. 50兆 svg 文件超过_中山兆驰产业园项目开工,预计竣工投产时间为…

    20日,兆驰股份的子公司中山市兆驰光电有限公司(以下简称"中山兆驰")产业园项目正式开工,落户中山古镇. 官方消息显示,中山兆驰将在项目地建设一个自动化.信息化.智能化的产业园作为 ...

  4. svg标签和svg文件区别_什么是SVG文件? SVG图片和标签说明

    svg标签和svg文件区别 SVG (SVG) SVG or Scalable Vector Graphics is a web standard for defining vector-based ...

  5. svg 可视化操作_使用SVG和D3可视化浏览指标

    svg 可视化操作 本文是两篇系列文章中的第一篇,该系列文章演示了可视化技术,这些技术可以帮助您从数据中提取业务价值信息. 您将看到如何使用可伸缩矢量图形(SVG)和开放源代码的D3 JavaScri ...

  6. python读取svg文件_Python lxml解析svg文件

    我试图从 http://kanjivg.tagaini.net/解析.svg文件,但我无法成功提取内部信息. 0f9ab.svg的一部分如下所示: 我的.py文件: import lxml.etree ...

  7. svg标签和svg文件区别_SVGO减少SVG文件大小的三种方法

    svg标签和svg文件区别 This article is part of a series created in partnership with SiteGround. Thank you for ...

  8. svg glyph替代_使用SVG替代Imagemaps

    svg glyph替代 To create a clickable map on a website – for example, to create a world map for an compa ...

  9. css svg视频自适应_使用SVG和CSS步骤进行自适应的动画步行周期

    css svg视频自适应 In the previous article I talked about steps() in CSS animation, and provided a simple ...

最新文章

  1. linux 6.6 最新 gblic,Centos6 升级glibc-2.17,解决Requires: libc.so.6(GLIBC_2.14)(64bit)错误解决方法(推荐)...
  2. 【HDU - 1078】FatMouse and Cheese (记忆化搜索dp)
  3. 查看Json的结构及内容:JsonViewerPackage
  4. JPA-save()方法会将字段更新为null的解决方法
  5. mysql的collate_MYSQL中的COLLATE是什么?
  6. C语言课程设计|职工工资管理系统
  7. u8系统怎么进服务器取数,u8服务器如何连接数据库
  8. PHP队列的实现,看完秒懂
  9. 面试经验--Lowe Profero
  10. mysql基础命令(一)
  11. 普元中间件Primeton AppServer6.5安装(Windows)
  12. 【求助】如何在移动固态硬盘上装一个完美的移动系统
  13. Linux 编译找不到头文件
  14. 在Windows中安装一些python的第三方库
  15. 2019PKUWC游记
  16. 01-javaWeb-html
  17. 三菱伺服e6、e7报警显示、常见报警处理
  18. CASS11解决细等线字体样式显示为问号
  19. c语言中错误c2228,出现异常信息:ERROR C2228,请帮忙看上,多谢
  20. 【ejs落地方案】官网用ejs做其实也很简单---ejs 静态页面

热门文章

  1. μC/OS-I移植需要编写的文件
  2. 一个不错的CSS DIV布局,DIV高度自适应
  3. Linux内核目录结构(2.6版本以上的kernel)
  4. linux 下部署Python项目
  5. objective c 语法
  6. libsvm学习 all
  7. Spring Boot 2.0(三):Spring Boot 开源软件都有哪些?
  8. layui timeline使用
  9. 在Eclipse中使用JUnit4进行单元测试(中级篇)
  10. IIS 用户验证及授权