We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SVG 指可伸缩矢量图形 (Scalable Vector Graphics),是使用 XML 来描述二维图形和绘图程序的语言。在深入了解 SVG 过程中 , 若能很好的理解 SVG 坐标系统和坐标变换,有助于我们更好的使用 SVG 做相关项目。
SVG
(Scalable Vector Graphics)
XML
SVG 使用的坐标系统或者说网格系统,和Canvas用的差不多(所有计算机绘图都差不多)。这种坐标系统是:以页面的左上角为(0,0)坐标点,坐标以像素为单位,x轴正方向是向右,y轴正方向是向下。
<rect x="0" y="0" width="100" height="100" />
定义一个矩形,即从左上角开始,向右延展100px,向下延展100px,形成一个100*100大的矩形。
<svg>
width
height
viewBox = <min-x> <min-y> <width> <height>
<svg width="1024px" height="1024px" viewBox="0 0 80 80"> <rect x="10" y="20" width="40" height="40" style="stroke: black; fill: none"/> </svg>
preserveAspectRatio = "alignment [meet | slice]"
alignment :指定轴和位置,由一个x对齐方式和一个y对齐方式(min, mid, max)组合而成。默认为xMidYMid 。
alignment
(min, mid, max)
xMidYMid
meet :缩小图像以适配可用的空间。 slice :裁减图像不适合视口的部分。
SVG 元素可以通过缩放,移动,倾斜和旋转来变换。类似 HTML 元素使用 CSS transform 来变换,但也有些差异与复杂度,比如 SVG 中使用 <g> 标签创建分组也可以进行组嵌套,组内的标签继承属性,使用transform属性定义坐标变换,可以使组内的元素进行整体变换。
HTML
CSS transform
<g>
transform
tranform 属性用来对一个元素声明一个或多个变换。它输入一个带有顺序的变换定义列表的<transform-list>值,每个变换定义由空格或逗号隔开。
tranform
<transform-list>
<rect width="50" height="50" x="10" y="10" transform="translate(10, 20) scale(2)" style="stroke: black; fill: none" />
SVG 元素缩放,移动,倾斜和旋转的变换方式,其实原理都是通过 matrix(a b c d e f) 矩阵变换达到的自定义效果。可以通过一个简单线性方程获得变换后的新坐标 x2 和 y2:
matrix(a b c d e f)
x2 = ax + cy + e y2 = bx + dy + f
矩阵图:
| a c e | | b d f | | 0 0 1 |
matrix.js
线性代数拾遗(一 ):线性方程组、向量方程和矩阵方程
svg transfrom
The text was updated successfully, but these errors were encountered:
No branches or pull requests
SVG
指可伸缩矢量图形(Scalable Vector Graphics)
,是使用XML
来描述二维图形和绘图程序的语言。在深入了解SVG
过程中 , 若能很好的理解SVG
坐标系统和坐标变换,有助于我们更好的使用SVG
做相关项目。坐标系统
网格
SVG
使用的坐标系统或者说网格系统,和Canvas用的差不多(所有计算机绘图都差不多)。这种坐标系统是:以页面的左上角为(0,0)坐标点,坐标以像素为单位,x轴正方向是向右,y轴正方向是向下。viewport 、 viewBox、preserveAspectRatio属性
SVG
可见区域的大小,通常可以在<svg>
元素 上使用width
和height
属性确定视口的大小。viewBox = <min-x> <min-y> <width> <height>
, 分别代表想要叠加在视口上的用户坐标系统的最小x坐标、最小y坐标、宽度和高度。(可以理解为SVG
内元素定位的真实坐标系统)alignment
:指定轴和位置,由一个x对齐方式和一个y对齐方式(min, mid, max)
组合而成。默认为xMidYMid
。坐标变换
SVG
元素可以通过缩放,移动,倾斜和旋转来变换。类似HTML
元素使用CSS transform
来变换,但也有些差异与复杂度,比如SVG
中使用<g>
标签创建分组也可以进行组嵌套,组内的标签继承属性,使用transform
属性定义坐标变换,可以使组内的元素进行整体变换。transform属性
tranform
属性用来对一个元素声明一个或多个变换。它输入一个带有顺序的变换定义列表的<transform-list>
值,每个变换定义由空格或逗号隔开。变换矩阵
SVG
元素缩放,移动,倾斜和旋转的变换方式,其实原理都是通过matrix(a b c d e f)
矩阵变换达到的自定义效果。可以通过一个简单线性方程获得变换后的新坐标 x2 和 y2:矩阵图:
Other Resources
matrix.js
线性代数拾遗(一 ):线性方程组、向量方程和矩阵方程
svg transfrom
The text was updated successfully, but these errors were encountered: