简介 【SVG|学习SVG(二)坐标系统】SVG是用于绘图的,那么它和其他绘图技术一样都是有网格坐标系统。坐标系简介:
- 以左上角为坐标系的原点(0,0)。
X 轴
的正方向向右
,Y 轴
的正方向向下
。- 坐标轴以像数为单位。
- 视口是指文档在
HTML
使用的画布区域。 - 由
width
、height
属性确定视口的大小。如果 SVG 元素不声明viewport
,浏览器会默认给定视口的大小 300px * 150px。
version="1.1" xmlns="http://www.w3.org/2000/svg" baseProfile="full">
你好

文章图片
viewbox
- 画布中的可视区。简单理解就是只在视口中绘制可视区范围内的内容。
viewBox
接收四个参数值,分别是min-x
,min-y
,width
,height
。min-x
和min-y
设置可视区在视口中的位置(可视区的左上角),width
和height
设置可视区的宽和高。注意width
或height
如果设置成0
,就代表没有可视区。- 初始
viewBox
的范围和viewport
完全相同。
- 示例,设置
viewBox="0 0 100 100"
。
version="1.1"
xmlns="http://www.w3.org/2000/svg"
baseProfile="full"
width="300"
height="200"
viewBox="0 0 100 100"
>
你好

文章图片
- 创建了
0 0 100 100
的可视区。视口中只展示了我们设置的可视区的内容。 - 区域自动缩放,以适应视口。
- 控制缩放图形相对视口的对齐方式。
preserveAspectRatio = ?
align
有9种值:
y\x | xMin | xMid | xMax |
---|---|---|---|
yMin | xMinYMin | xMidYMin | xMaxYMin |
yMid | xMinYMid | xMidYMid | xMaxYMid |
yMax | xMinYMax | xMidYMax | xMaxYMax |
none
, 通过拉伸viewBox
来适应整个视窗,不管宽高比。xMin
,viewBox
和viewport
左边缘对齐。xMid
,viewBox
和viewport
x 轴中心对齐。xMax
,viewBox
和viewport
右边缘对齐。YMin
,viewBox
和viewport
上边缘对齐。YMid
,viewBox
和viewport
y 轴中心对齐。YMax
,viewBox
和viewport
下边缘对齐。
meetOrSlice
常用值:
meet
宽高比将会被保留,尽可能的放大填满。类似于background-size: contain
。slice
宽高比将会被保留,比例小的方向放大填满。类似于background-size: cover
。
version="1.1"
xmlns="http://www.w3.org/2000/svg"
baseProfile="full"
width="300"
height="200"
viewBox="0 0 100 100"
preserveAspectRatio="xMinYMid slice"
>
你好

文章图片
示例
- 实现一个半圆
width="100"
height="100"
viewBox="0 -50 100 100"
preserveAspectRatio="xMinYMin slice"
style="outline: 2px solid red"
>

文章图片
- 通过
preserveAspectRatio
修改圆位置。
width="100" height="200" viewBox="0 0 200 200" style="outline: 1px solid red">
- 设置
viewBox
的宽是viewport
的两倍。preserveAspectRatio
默认值xMidYMid meet
,x 轴中心对齐、y 轴中心对齐。

文章图片
- 修改
preserveAspectRatio
的值xMinYMin meet
,左边缘对齐、上边缘对齐。
width="100"
height="200"
viewBox="0 0 200 200"
preserveAspectRatio="xMinYMin meet"
style="outline: 1px solid red"
>

文章图片
推荐阅读
- C++从入门到放弃|c++学习笔记1(实验1)_封装CMatrix类
- spring|Springboot学习笔记
- flink|Flink 的学习笔记
- 其他|Redis学习
- Vue|Vue学习
- Docker学习系列|Docker学习十(Docker Swarm)
- html5|PYTHON构建简单 HTTP
- 前端|瞎几把总结一波
- java系列|Vue —— axios、插槽