HTML SVG 笔记 | SMIL svg 动画

一个svg文件

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <circle cx="100" cy="50" r="40" stroke="black"
  stroke-width="2" fill="red" />
</svg>

可以在 html 中直接键入<svg> 标签
也可通过以下标签将 SVG 文件嵌入 HTML 文档:<embed><object> 或者 <iframe>

<embed src="circle1.svg" type="image/svg+xml" />
<object data="circle1.svg" type="image/svg+xml"></object>
<iframe src="circle1.svg"></iframe>

viewBox="0 0 400 400" 可用于svg的尺寸 映射到内部的尺寸 类似视窗的移动拉伸缩放。
preserveAspectRatio 保留纵横比,针对 viewBox 的变形规则。

内部图形标签

公共属性
fill填充颜色
fill-opacity填充透明度
stroke描边颜色
stroke-width描边宽度
stroke-opacity描边透明度
stroke-linecapbutt/square/round 线段两端
stroke-linejoinmiter/round/bevel 两条线段衔接处
stroke-dasharray控制用来描边的点划线的图案范式,每段虚线之间的间距,如果设置为图形总长就会全显示
stroke-dashoffset虚线偏移量 如果偏移设为总长就会看不到虚线
transform参考css

<rect> 矩形

属性
x横坐标
y纵坐标
width矩形宽
height矩形高

<circle>

属性
cx圆心横坐标
cy圆心纵坐标
r半径

<ellipse> 椭圆

属性
cx圆心横坐标
cy圆心纵坐标
xr横向半径
yr纵向半径

<line> 线段/直线

属性
x1起点横坐标
y1起点纵坐标
x2终点横坐标
y2终点纵坐标

<polygon> 多边形

属性语法
pointsx1,y1 x2,y2 ··· x1,y1端点集

<polyline> 折线

属性语法
pointsx1,y1 x2,y2 ··· xn,yn端点集

<path> 路径

属性语法
d命令1 参数若干 命令2 参数若干 ···绘制路径点
命令参数格式
Mx y移动绘画起点 到 x,y
Lx y由当前位置向 x,y 绘制线段
V/Hx/y由当前位置向 x/y 绘制垂直/水平线段
Cx1 y1 x2 y2 x y由当前位置向 x,y 绘制曲线(三次贝塞尔曲线)
Sx2 y2 x y由当前位置向 x,y 绘制平滑曲线
Qxo yo x y绘制二次贝塞尔曲线(起始结束共用一个控制点 xo,yo)
Tx y绘制平滑二次贝塞尔曲线
Arx ry x-axis-rotation large-arc-flag sweep-flag x y从当前画笔位置开始绘制一条椭圆弧线到(x,y)指定的坐标。
rxry 分别为 X轴和 Y轴的半径。
x-axis-rotation 为 x轴旋转度数。
large-arc-flag 代表优弧还是劣弧(0表示劣弧,1表示优弧)。
sweep-flag 为弧线方向 0 为顺时针 1 为逆时针
Z连接起始点闭合路径

命令大写字母表示绝对定位,小写字母表示相对定位

<text>

text-anchor 文本流方向
start、end、middle、inherit

<tspan> 类似 <span>

<image>

xlink:href
x
y
width
height

<g>

对组内元素批量赋值

<defs>

<linearGradient><radialGradient> 渐变
<clipPath> 剪切路径
<mask> 遮罩

<filter> 滤镜

<feGaussianBlur> 模糊

<feOffset> 阴影

<feMerge> 混合滤镜效果

如混合 feGaussianBlur 和 feOffset 制造模糊的阴影


HTML5可以直接嵌入SVG

<iframe src="image.svg"></iframe>
<img src="image.svg" style="display:block;width:200px;height:200px" />
 <!-- 通过背景图片 -->
<div style="display:block;width:200px;height:200px;background: url(./image.svg) no-repeat;background-size: 100%;" ></div>

参考系列文章 学SVG看这篇就够了

SMIL – svg 动画化

使用方法:紧跟被设置图形
<set> 可以设置图形属性值

<set attributeName="cy" to="新值" begin=“2s”/>
// begin:开始时间
// end: 结束动画时间
// calcMode: 运动模式 discrete(离散)、linear(线性)、paced、spline(贝塞尔)
//  keySpline 设置贝塞尔曲线 
// keyTimes 各个帧事件间隔 配合 values
// by: 相对值
// additive: 取 sum 累加动画效果,用于连续多个动画

<animate> 多了 from

<animate attributeName=“cx” from=“56.7573” to=“64.7573” dur=“2s” repeatCount=“indefinite”/>

<animateTransform> 使用 transform 的变换

<animateTransform attributeName="transform" type="rotate" from="0 0 0" to="360 0 0" begin="0s" dur="10s" repeatCount="indefinite" />
// values: 多段值

<animateMotion> 指定运动路径

<animateMotion path="M10,50 q60,50 100,0 q60,-50 100,0" begin="0s" dur="10s" repeatCount="indefinite" />

begin 与 end 可以使用 其他元素的开始结束时间xxx.begin/end或者其他元素的事件xxx.click

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值