svg - 为什么添加正 View 框 min-x, min-y 值会产生负平移效果?

标签 svg

我刚刚经历了 THIS fiddle 和代码如下所示:

<svg width=200 height=200 viewbox="0 0 225 225" >
    <path d="M220, 220
            A200, 200, 0, 0, 0, 20, 20
            L 20, 220
            Z"
    fill = "lightskyblue">
    </path>
</svg>

现在,当我使用 View 框并将值更改为 viewbox="100 100 225 225" 时它具有执行以下操作的效果:
transform:translate(-100px, -100px);

好吧,我相信当我指定 100作为 min-x, min-y viewbox 的值效果应该是这样的
transform:translate(100px, 100px);
但相反,效果类似于:
transform:translate(-100px, -100px);

为什么这样 ?有人可以解释一下吗?

最佳答案

通过将 minX 和 minY 设置为 100,您所做的是告诉 SVG 渲染器您的 SVG 的左上角从 (100,100) 开始。该点应该在 SVG 视口(viewport)的左上角。

这就像你决定你的尺子从 10 厘米开始。 12 厘米标记似乎是 2 厘米而不是 12 厘米。换句话说,再左(下)10 厘米。

查看以下示例 SVG。我已经标记了一个区域,我们将在后面的示例中设置视口(viewport)和 viewBox。

<svg width="600" height="600">

  <!-- mark the area that will become the viewport -->
  <rect x="100" y="100" width="300" height="200" fill="linen"/>

  <!-- add some other content -->
  <circle cx="120" cy="120" r="20" fill="red"/>
  <circle cx="200" cy="200" r="50" fill="red"/>
  <circle cx="380" cy="270" r="50" fill="red" fill-opacity="0.3"/>

</svg>


如果我们现在设置 viewBox到奶油色区域并相应地设置视口(viewport)(SVG widthheight ),您将看到会发生什么。

<svg width="300" height="200" viewBox="100 100 300 200">

  <!-- mark the area that will become the viewport -->
  <rect x="100" y="100" width="300" height="200" fill="linen"/>

  <!-- add some other content -->
  <circle cx="120" cy="120" r="20" fill="red"/>
  <circle cx="200" cy="200" r="50" fill="red"/>
  <circle cx="380" cy="270" r="50" fill="red" fill-opacity="0.3"/>

</svg>


您可以看到大约 100,100 的红色小圆圈现在位于视口(viewport)的左上方。

希望这能让你更清楚。

关于svg - 为什么添加正 View 框 min-x, min-y 值会产生负平移效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38959598/

相关文章:

javascript - 来自 d3.js html 的 getIntersectionList

javascript - d3 — 逐步绘制大型数据集

android - 为 android 简化矢量绘图

python-3.x - SVG 字形转 SVG/TTF/OTF 字体

css - 如何从根据动态父 div 缩放的路径构建反向 svg 掩码

javascript - 在悬停时从起点到终点填充 svg

javascript - 如何使用Jquery高亮svg map ?

javascript - AngularJS SVG 路径指令

javascript - 如何为 svg 矩形设置正确的笔画宽度

javascript - CSS 样式转换 vs svg 转换