mozhi00 2019-06-28
主要内容
CSS 结合 SVG 生成动画
SVG ,可缩放矢量图形(Scalable Vector Graphics),是一种用来描述二维矢量图形的 XML 标记语言。 简单地说,SVG 面向图形,HTML 面向文本。
IE9+,主流环境基本都能支持。具体参见
作为图片文件
img src属性引用,css background-image引用。
SVG作为图像引用时,大多数浏览器不会加载SVG自身引用的文件(其他图像,外部脚本,字体文件等),依据浏览器的安全策略,SVG中定义的脚本也可能不会执行。
作为应用程序
SVG文件也可以作为<object>元素的data属性引入HTML中。注意,MIME type必须是image/svg+xml。
<object data="image.svg" type="image/svg+xml"> ... </object>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="1024px" height="1024px"> </svg>
<rect x="60" y="10" rx="20" ry="40" width="100" height="100"/>
<circle cx="75" cy="75" r="60"/>
<ellipse cx="75" cy="75" rx="30" ry="20"/>
<line x1="10" x2="50" y1="110" y2="150" stroke="black" stroke-width="3"/>
<polyline points="60 60, 70 120, 80 130, 70 70" style="fill: none;stroke-width: 2;stroke: black;"/>
polygon和折线很像,它们都是由连接一组点集的直线构成。不同的是,polygon的路径在最后一个点处自动回到第一个点。
<polygon points="50 160, 55 180, 70 180, 60 190, 65 205, 50 195, 35 205, 40 190, 30 180, 45 180" style="fill: none;stroke: black;"/>
<path d="M 20 230 Q 40 205, 50 230 T 90230" style="fill: none;stroke: black"/>
SVG常用元素还有<g>组合,常用属性fill填充,stroke线条颜色,stroke-width线条粗细等等,具体参考MDN文档。
SVG 元素参考
SVG 属性参考
stroke-dasharray可控制用来描边的点划线的图案范式。
stroke-dashoffset 属性指定了dash模式到路径开始的距离
画圆环的动画效果,可用于提示加载百分比,倒计时等场景。
https://codepen.io/wishingtre...
logo描边动画
logo描边动画2][7]
兼容性:ie死都不支持,移动端友好。具体参见
set元素不能产生动画效果,可以实现基本的延迟功能。就是指:可以在特定时间之后修改某个属性值(包括本身的XML属性和CSS属性值)。
attributeName 变动的属性的属性名。
from 变动的初始值。
to 变动的终值。
dur 动画的持续时间。
举个栗子
形状补间动画
attributeName固定为transform,可针对transform的相关属性生成动画,不详细介绍了。
animateMotion 元素可以让SVG各种图形沿着特定的path路径运动。
地球围绕太阳旋转
贴合路径弧度运动
SVG动画库:
1.SVG-Morpheus
使用参考
演示参考
2.snap.svg