SVG画布宽高

1 篇文章 0 订阅

viewport

表示SVG可见区域的大小。一个SVG图像理论上可以无限大,但是在同一时刻只有图像的某些部分可以被看见。这个可见的区域就被称为viewport。

<svg width="500" height="300"></svg>

以上代码定义了一个视区,宽500单位,高300单位;

在SVG中,可以带单位,也可以不带单位。如果没有为值指定单位,那么它将使用像素为单位。也就是说上面的例子中,viewport的宽度为500px,高度为300px。

单位含义
em相对于父元素的字体大小
ex相对于小写字母"x"的高度
px相对于屏幕分辨率而不是视窗大小:通常为1个点或1/72英寸
ininch, 表英寸
cmcentimeter, 表厘米
mmmillimeter, 表毫米
pt1/72英寸
pc12点活字,或1/12点
%相对于父元素。正常情况下是通过属性定义自身或其他元素

viewbox

viewBox是用于在画布上绘制SVG图形的坐标系统。这个坐标系统可以比viewport大,也可以比viewport小,并且它可以在viewport中完全可见或部分可见。

<svg viewbox="<min-x> <min-y> width height"><svg>

和值决定viewbox的左上角位置。和值决定viewbox的宽度和高度。

注意:viewBox的宽度和高度不需要设置得和<svg>元素的宽度和高度相同。和不允许设置为负数。

preserveAspectRatio(保持宽高比)

如果viewport和viewBox的宽高比不相同。你需要自己来指定如何在SVG中显示SVG图像。你可以在<svg>中使用preserveAspectRatio属性来指定。

preserveAspectRatio="xMidYMid meet"

preserveAspectRatio属性的值为空格分隔的两个值组合而成。

例如,上面的xMidYMid和meet.

第1个值表示,viewBox如何与SVG viewport对齐;第2个值表示,如何维持高宽比(如果有)。

其中,第1个值又是由两部分组成的。前半部分表示x方向对齐,后半部分表示y方向对齐。家族成员如下:

含义
xMinviewport和viewBox左边对齐
xMidviewport和viewBox x轴中心对齐
xMaxviewport和viewBox右边对齐
YMinviewport和viewBox上边缘对齐。注意Y是大写。
YMidviewport和viewBox y轴中心点对齐。注意Y是大写。
YMaxviewport和viewBox下边缘对齐。注意Y是大写。

将上面表格中的各个值两两组合,可以得到下面的9种align值:

  • xMinYMin:viewBox的对齐viewport的最小X值,min-y对齐viewport的最小Y值。相当于backrgound-position: 0% 0%;。
  • xMinYMid:viewBox的对齐viewport的最小X值,viewBox的Y轴中点对齐viewport的Y轴中点。相当于backrgound-position: 0% 50%;。
  • xMinYMax:viewBox的对齐viewport的最小X值,min-y+对齐viewport的最大Y值。相当于backrgound-position: 0% 100%;。
  • xMidYMin:viewBox的X轴中点对齐viewport的X轴中点,min-y对齐viewport的最小Y值。相当于backrgound-position: 50% 0%;。
  • xMidYMid(默认值):viewBox的X轴中点对齐viewport的X轴中点,viewBox的Y轴中点对齐viewport的Y轴中点。相当于backrgound-position: 50% 50%;。
  • xMidYMax:viewBox的X轴中点对齐viewport的X轴中点,min-y+对齐viewport的最大Y值。相当于backrgound-position: 50% 100%;。
  • xMaxYMin:viewBox的+对齐viewportX轴的最大值,min-y对齐viewport的最小Y值。相当于backrgound-position: 100% 0%;。
  • xMaxYMid:viewBox的+对齐viewportX轴的最大值,viewBox的Y轴中点对齐viewport的Y轴中点。相当于backrgound-position: 100% 50%;。
  • xMaxYMax:viewBox的+对齐viewportX轴的最大值,min-y+对齐viewport的最大Y值。相当于backrgound-position: 100% 100%;。

第2部分的值支持下面3个:

含义
meet保持宽高比并将viewBox缩放为适合viewport的大小
slice保持宽高比并将所有不在viewport中的viewBox剪裁掉
none不保存宽高比。缩放图像适合整个viewbox,可能会发生图像变形

Demo

demo地址: https://www.sarasoueidan.com/demos/interactive-svg-coordinate-system/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

第七感 de秘密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值