50兆 svg 文件超过_用svg+css3实现支付宝App波浪功能
在使用支付寶的時候,我發現了一個很有意思的功能——波浪效果,于是我鉆研了一下午,覺得這玩意還真是挺有意思,大致是svg+css3來實現
于是我就簡單仿寫了一個波浪特效
照例,直接上功能,不多解釋
知乎視頻?www.zhihu.com1.需求分析
還是來做常規的需求分析,首先我談談我為什么選擇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波浪功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: word置顶_小鱼便签怎么设置置顶
- 下一篇: yum 更新_CentOS7 - 使用y