从技术角度(没有隐喻),我很难确切地理解min-x和min-y在viewBox上的工作原理。
我花了很多时间在两个有用的资源上:
根据SVG1.1规范
“viewBox”属性的值是一个由四个数字组成的列表,用空格和/或逗号分隔,它们指定用户空间中的一个矩形,该矩形应该映射到给定元素建立的视图端口的边界,同时考虑到属性‘_
和:
“viewBox”属性的效果是用户代理自动提供适当的转换矩阵,以将用户空间中指定的矩形映射到指定区域(通常是视口)的边界。
和:
(注意:在某些情况下,用户代理除了规模转换外,还需要提供翻译转换。例如,在最外层的svg元素上,如果“viewBox”属性指定的值不是0 For或。)
因此,我的期望是定义viewBox与以下内容相同:
min-x和min-y viewBox属性放置在视图端口中。如果我们看看萨拉的两个例子,从这里开始,这似乎不是正在发生的事情。
在她的第一个示例(<svg width="800" height="600" viewbox="100 100 200 150">...</svg>)中,如下所示:
min-x / min-y放置在视图中然而,在她的第二个例子(<svg width="800" height="600" viewbox="-100 -100 400 300">...</svg>)中,它看起来是一个完全不同的顺序:
min-x min-y所指的方向相反。它不符合viewport原点--这与第一个示例不同。因此,我认识到我并不完全理解它,因为从技术上讲,在这两种情况下,它的工作方式应该是相同的。
最后,在Sara的例子中,我不明白为什么蓝色坐标系(用户坐标系)本身不移动到视口坐标系中的(100,100)或(-100,-100)。我以为viewBox应该翻译和缩放用户坐标系统?
编辑:
根据这就是答案的说法,min-x和min-y确实遵循了我的第一组步骤。viewBox原点根据min-x和min-y放置在视口中,然后翻译,使其原点位于视口原点的顶部。然后(前后)缩放以填充视图。
如果这是正确的,我很难理解为什么Sara的例子中的蓝色用户坐标系并不总是以它的原点位于viewport原点之上而结束。毕竟,viewBox应该修改用户坐标系。
发布于 2018-12-02 19:35:25
坐标viewBox 在x轴 (min-x=70px)上的原点偏移量。
<svg width="400" height="400" viewBox="70px, 0, 400px, 400px">

在图中,用户坐标的原点通过70px向右移动,从而使整个矩形视图区域viewBox (400 x 400px)沿着水平轴向右移动。
当发生这种情况时,捕获viewBox下的SVG文档片段的图像,然后带捕获片段的viewBox查看区域返回到固定的用户视图区,其原点(0,0)位于左上角。
图的坐标是用最后一次向左移动70 to重新计算的。形式上,当应用viewBox时,在视口的固定查看区域中,SVG文档的片段已经移到左边。

沿两轴的viewBox原点的偏移量
min-x=70px, min-y="70px"
<svg width="400" height="400" viewBox="70px, 70px, 400px, 400px">
为了清晰起见,在图片底部添加另一个红色矩形- 6。

在将原点传递到viewBox之后,一个从原点(70.70)开始具有宽度和高度计数的矩形400 × 400 px SVG文档片段将进入viewBox。
会发生图像捕获。接下来,viewBox (70,70)的起源与视口(0,0)的起源相结合。重新计算了这些数字的坐标。

因此,红色矩形5和6变得完全可见。所有不属于这一地区的东西都被切断了。例如,部分区域的有色圆圈,1,2和4。
使用viewBox变焦
SVG文档片段的规模取决于高宽比:viewport和viewBox。
如果viewport /viewBox = 1,则比例为1
如果viewport /viewBox与之不同,则其规模将呈增减方向变化。

规模的增加如何解释下面的数字
一个像素viewBox延伸到两个像素viewport

缩放svg图像1: 2
<svg width="400" height="400" version="1.1" viewBox="0 0 800 800">
viewport / viewBox = 1/2

viewBox捕获一个矩形片段800 x 800 px,即SVG 400 x 400 px的整个作用域,以及视图端口右侧和底部的附加400px。

也就是说,viewBox的两个像素被压缩为viewport的一个像素。因此,SVG图像减少了一半。
https://stackoverflow.com/questions/53582351
复制相似问题