SVG 坐标和 viewBox

本文介绍了SVG的viewport概念,如何通过width、height属性设置,以及viewBox属性如何重新定义坐标系。重点讲解了viewBox的数值含义和坐标映射。了解视口与viewBox对于精确控制SVG图形布局至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SVG 坐标

没有指定单位默认为px

 

viewport

viewport​​​​​​​是 SVG 图像的可见区域。一个 SVG 图像在逻辑上可以是你想要的无限制的宽度和高度,但一次只能看到svg空间的特定部分。这个当前可见的区域称为viewport

您可以使用元素的widthheight属性指定视口的大小<svg>。下面是一个例子:

<span style="background-color:#f0f0f0"><span style="color:#000000"><svg width="500" height="300"></svg>
</span></span>

此时viewport的左上角刚好是svg空间的(0,0),右下角刚好是(width, height)。

svg画布上元素的默认单位为px。

那么viewbox又是什么呢?

如果你想重新定义没有单位的坐标在<svg>内的含义。您可以使用该viewBox属性执行此操作。下面是一个例子:

<span style="background-color:#f0f0f0"><span style="color:#000000"><svg width="500" height="200" <strong>viewBox="0 0 50 20"</strong> >

    <rect x="20" y="10" width="10" height="5"
          style="stroke: #000000; fill:none;"/>

</svg>
</span></span>

本示例创建<svg>一个宽度为 500 像素、高度为 200的元素。 的viewBox属性<svg>包含四个值。这些值定义了<svg>元素的viewbox。含义分别是视图框的x y width height

在这种情况下,视图框开始于(0,0),并且具有50宽*20高。这意味着,<svg>元素内部的500 x 200 像素空间的值,使用从0,0 到50,20的坐标系表示。换句话说,<svg>内部形状的坐标中的每 1 个单位对应于宽度的 500/50 = 10 个像素,高度的 200/20 = 10 个像素。这就是为什么 x 位置为 20,y 位置为 10 的矩形实际上位于200,100,其宽度 (10) 和高度 (5) 对应于 宽100 像素和 高50 像素。

其它文献解释:

The viewBox attribute defines the position and dimension, in user space, of an SVG viewport.

The value of the viewBox attribute is a list of four numbers: 

min-xmin-ywidth and height. The numbers separated by whitespace and/or a comma, which specify a rectangle in user space which is mapped to the bounds of the viewport established for the associated SVG element (not the browser viewport).

 

SVG 图形的viewport由 viewBox 属性以及 svg 标签中的宽度和高度属性指定。

如果不指定 widthheight,SVG 元素会占用可用的空间(就像 HTML 元素一样)。

如果没有给出测量单位,则显示系统的单位适用 - 像素适用于显示器上的浏览器。

<svg 宽度 = "1000" 高度 = "500">
 ...
</svg>

SVG宽度高度也可以 - 类似于 CSS - 以 em、ex、pt、cm、mm 和百分比指定。

SVG 坐标系的零点位于左上角。

下图是width="48" height="48" viewBox="0 0 48 48"的svg渲染效果

 同样的内容把viewBox减半后,下图是width="48" height="48" viewBox="0 0 24 24"的svg渲染效果

 0,0 代表viewport的左上坐标,24,24代表viewport在svg坐标系中的宽和高。svg元素的width="48" height="48"则是这个viewport放到用户坐标系中,被拉伸(映射)后的坐标。

 下面的蓝框就指定了viewbox视窗

如果我们用负值偏移图形的原点,则对象将向右/向下移出 viewBox。

增加宽度/高度会使对象变小,减少宽度/高度会放大 viewBox 中的对象。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

子燕若水

吹个大气球

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

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

打赏作者

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

抵扣说明:

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

余额充值