我是圆的标题
-
SVG 图像默认大小是300像素(宽) x 150像素(高),
<svg>
以像素为单位定义了整个图像的width
和height
-
xmlns
属性定义了 SVG 的命名空间 -
<title>
元素的内容可以被阅读器显示在标题栏上或者是作为鼠标指针指向图像时的提示
-
元素允许咱们为图像定义完整的描述信息
-
在 标签内部,使用普通的html标签是不行的,例如:
123
2.2 viewBox、viewPort和preserveAspectRatio
如果只想展示 SVG 图像的一部分,就要指定viewBox属性
下面进行缩放处理:
从(0,0)的角度看,放大了4倍。
viewport和viewbox的区别
- viewport 视口,相当于显示器屏幕。
- viewbox 视区,相当于在屏幕上截取一小块,放大到整个屏幕,就是特写的效果
- preserveAspectRatio 指定viewbox与viewport的对齐方式和缩放方式。
- viewPort为
width="10cm" height="10cm"
<svg width=“10cm” height=“10cm” style={{border: ‘1px solid #666’, backgroundColor: ‘pink’}} >
<rect x=“50” y=“100” width=“50” height=“50”
stroke=“#000000” fill=“black”/>
<rect x=“100” y=“100” width=“50mm” height=“50mm”
stroke=“#000000” fill=“#666” />
<svg width=“500” height=“75” viewBox=“0 0 250 75” preserveAspectRatio=“xMinYMin slice”
style={{border: “1px solid #cccccc”}}>
<rect x=“1” y=“1” width=“50” height=“50” style={{stroke: “red”, fill: “none”}} />
preserveAspectRatio 是用来控制缩放的比例,preserveAspectRatio属性采用以空格分隔的两个值。
-
第一个值告诉视图框(ViewBox)如何在视口(Viewport)内对齐。此值本身由两部分组成。
-
第二个值指示如何保留宽高比(如果有的话)
scale是对元素的缩放,也可以对svg缩放,可以看下展示效果:
- scale是对svg本身以及其内部的元素都进行了缩放。而且参考位置是其中心点
<svg width=“100” height=“100” transform=“scale(0.7,1)” style={{border: “1px solid #cccccc”, marginLeft: ‘20px’}}>
<rect x=“1” y=“1” width=“50” height=“50” style={{stroke: “red”, fill: “none”}} />
<svg width=“100” height=“100” style={{border: “1px solid #cccccc”}}>
<rect x=“1” y=“1” width=“50” height=“50” style={{stroke: “red”, fill: “none”}} />
2.3 常用图形
<circle>
上面已经提到过,点 (cx, cy)
就表示圆心的位置,r
表示圆的半径
属性:stroke
是轮廓颜色,fill
填充颜色,strokeWidth
轮廓的宽度 这些属性在其余图形里面也是通用的
应用情况,当作减法的借位标识,例如:
<line>
点(x1, y1)是起点,(x2, y2)是终点 必须要加stroke属性,否则画出来的线看不见???
应用情况,划0的斜线:
<path>
元素里有5个画直线的命令,直线命令就是在两个点之间画直线。首先是“Move to”命令,M,它需要两个参数,分别是需要移动到的点的x轴和y轴的坐标。
渲染出来发现只有一个点,所以M命令是移动画笔位置,但是不画线。
事实上,能够真正画出线的命令有三个,最常用的是“Line to”命令,L,
控制方向的命令:H,绘制水平线;V,绘制垂直线。
<path d="
M 18,3
L 46,3
L 46,40
L 61,40
L 32,68
L 3,40
L 18,40
Z
">
著名的贝赛尔曲线
三次曲线,C是稍微复杂一点的曲线。三次贝塞尔曲线的每个控制点都有两个控制点
C > x1 > y1, > x2 > y2, > x > y (or) > c > dx1 > dy1, > dx2 > dy2, > dx > _dy_最后一个坐标(x,y)表示的是曲线的终点,另外两个坐标是控制点,(x1,y1)是起点的控制点,(x2,y2)是终点的控制点。
应用:除法竖式子的曲线
更多详情可见:https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths[2]
<polygon>
画多边形
<text>
文本
8
当计算上下间距的时候,可利用属性alignmentBaseline和textAnchor设置数字的基准
<animate>
动画
- attributeName:发生动画效果的属性名。
- from:单次动画的初始值。
- to:单次动画的结束值。
- dur:单次动画的持续时间。
- repeatCount:动画的循环模式。
<animate attributeName=“x” from=“0” to=“500” dur=“2s”
repeatCount=“indefinite” />
<defs>
用于自定义形状
它内部的代码不会显示
<path d=“M12.7627 1.68984 C13.3585 0.820476 14.6415 0.820475 15.2373 1.68983L18.8282 6.92945C19.1533 7.40377 19.632 7.75154 20.1835 7.91413L26.2764 9.71018C27.2873 10.0082 27.6838 11.2284 27.0411 12.0637L23.1676 17.098C22.8169 17.5537 22.6341 18.1164 22.6499 18.6912L22.8245 25.0409C22.8535 26.0944 21.8155 26.8485 20.8225 26.4954L14.8376 24.3672C14.2958 24.1745 13.7042 24.1745 13.1624 24.3672L7.17748 26.4954C6.18447 26.8485 5.1465 26.0944 5.17548 25.0409L5.35011 18.6912C5.36592 18.1164 5.18309 17.5537 4.83244 17.098L0.958931 12.0637C0.316237 11.2284 0.712704 10.0082 1.72363 9.71018L7.81646 7.91413C8.36802 7.75154 8.84668 7.40377 9.17175 6.92945L12.7627 1.68984Z”
fill=“url(#paint0_linear)”
stroke=“url(#paint1_linear)”
/>
<linearGradient
id=“paint0_linear”
x1=“14”
y1=“-1”
x2=“14”
y2=“31”
gradientUnits=“userSpaceOnUse”
<linearGradient
id=“paint1_linear”
x1=“14”
y1=“-1”
x2=“14”
y2=“31”
gradientUnits=“userSpaceOnUse”
-
渐变:
linearGradient
元素用来定义线性渐变,用于图形元素的填充或描边。 -
- 线性渐变
-
- 径向渐变
https://developer.mozilla.org/zh-CN/docs/Web/SVG/Tutorial/Gradients[3]
更多图形对象可见:https://www.ruanyifeng.com/blog/2018/08/svg.html[4]
<image>
<use>
复用
<svg width=“200” height=“200” transform=“scale(0.4,0.4)”
style={{border: “3px solid #999”}}>
<circle style={{fill:“pink”}} r=“10”/>