对SVG viewBox、宽度、高度等感到困惑

2024-03-09

如果我对 SVG 的理解是正确的,那么以下两个 SVG 描述将产生相同的图像,但事实并非如此。 (注意:这两个代码列表仅在其坐标值方面有所不同svg标签。更具体地说,对于每个(x, y第一个列表中的 ) 对有一个 (x-205, y-55)在第二个列表中配对。)

<!DOCTYPE html>
<html>
  <head><title>title</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>

    <svg xmlns="http://www.w3.org/2000/svg" version="1.1"
     x="0" y="0" width="210" height="60" viewBox="0 0 210 60">

      <g style="stroke: black; fill: none;">
        <path d="M 5 5 Q 105 55 205 55"/>
      </g>

    </svg>

  </body>
</html>
<!DOCTYPE html>
<html>
  <head><title>title</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>

    <svg xmlns="http://www.w3.org/2000/svg" version="1.1"
     x="-205" y="-55" width="210" height="60" viewBox="-205 -55 5 5">

      <g style="stroke: black; fill: none;">
        <path d="M -200 -50 Q -100 0 0 0"/>
      </g>

    </svg>

  </body>
</html>

事实上,至少根据 Firefox 的说法,它们看起来完全不同。我所期望的两者的渲染效果都是 Firefox 为第一个渲染效果所提供的(即,一条从左向右轻轻向下倾斜的曲线,初始斜率为 -1/2,最终斜率为 0)。我对 FF 为第二个规范生成的内容感到完全困惑,因为,AFAICT,第二个规范是第一个规范的矢量 (-205, -55) 的简单批发(“刚性”)翻译。

为什么两个显示器看起来不一样?


有关 viewBox 的详细信息,请参阅本文中的(唯一)图:https://web.archive.org/web/20140119030353/https://software.intel.com/en-us/html5/blogs/viewbox-a-window-into-the-soul-of-svg https://web.archive.org/web/20140119030353/https://software.intel.com/en-us/html5/blogs/viewbox-a-window-into-the-soul-of-svg,为了方便起见,内联如下:

那张图抵得上1000字的解释。

宽度和高度参数(又称为 W3C 术语中的视口)是不同的东西。但你并没有改变上面例子中的那些。有一个稍微复杂的算法来确定 SVG 的宽度和高度是否实际执行任何操作,因为它们可以被覆盖,例如被<object>将 SVG 嵌入 HTML 页面的标签。还有更多极端情况的解释:http://www.w3.org/TR/SVG/coords.html#ViewportSpace http://www.w3.org/TR/SVG/coords.html#ViewportSpace。有关此视口问题的更直观(也许更平易近人)的解释,您还可以查阅 Inkscape 手册http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Web-SVG-Positioning.html http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Web-SVG-Positioning.html(顺便说一句,有一个扩展可用于从 Inkscape 中直观地设置 viewBoxhttp://pernsteiner.org/inkscape/viewbox/ http://pernsteiner.org/inkscape/viewbox/您实际上不必像 Inkscape 手册[仍然]所说的那样直接编辑 XML。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对SVG viewBox、宽度、高度等感到困惑 的相关文章

  • 在 JavaScript 中动态创建 SVG 链接

    我正在从 JavaScript 动态创建 SVG 元素 它对于像矩形这样的视觉对象工作得很好 但是我在生成功能性的 xlinks 时遇到了麻烦 在下面的示例中 第一个矩形 静态定义 在单击时可以正常工作 但其他两个 用 JavaScript
  • 如何在 CSS 中用 SVG 图标替换 Web 字体(Font Awesome)?

    我注意到在我的 CSS 文件中 有一些使用 Font Awesome Web 字体的规则 如下所示 ul fancy li before category page ul li before display none font style
  • d3.forcesimulation() 链接距离

    我在堆栈上查看了不同的链接距离 似乎为了改变链接距离 您需要实现一个函数 然后传递它来动态分配链接距离 如下所示 function linkDistance d return d distance 然后我认为我可以传递给 svg 但返回函数
  • HTML 中包含的带有“img”标签的 SVG 是否可以链接到带有“image”标签的外部图像?

    我在服务器上的同一位置有以下文件 image svg 和文件 bitmap png
  • 矩形相当于文本的文本锚点表示属性吗?

    是否有一个与文本的文本锚点表示属性等效的矩形 我希望能够从左侧 右侧或根据情况定位矩形 我知道这可以通过一些简单的计算来完成 但我只是想知道是否已经存在内置的东西 文本锚点演示属性上的链接 https developer mozilla o
  • 具有多个路径的 SVG 剪辑路径的悬停事件

    我有一个 SVG 演示图像 其中包含多个正在剪辑动画 GIF 的圆圈 当用户将鼠标悬停在每个圆圈上时 是否可以观察每个圆圈的悬停事件 例如左上角的圆圈或右中角的圆圈 另外 当这些圆圈悬停时 是否可以操纵这些圆圈上的颜色叠加 EDIT 理想情
  • 每 x 秒对 SVG 元素进行动画处理

    介绍 我了解一些基本的动画技术SVG两者同时使用Javascript和 DOM
  • 从左到右显示 SVG 动画

    我有两个 SVG 图像 我想将它们设置为动画 如下所示 首先显示Full Screen文本从左到右 然后用第二个 SVG 覆盖该单词Screen显示整个第二个 SVG 因此 最后我将得到第二个 svg 中的单词 Full 黑色空间 以及单词
  • 如何在 Imagick 中读取 SVG 字符串?

    我有一个包含 svg 元素标记的字符串
  • 使用 CSS 更改悬停时的 SVG 链接对象填充

    我的页面上有一个 SVG 对象链接 a href target blank gmail a 我正在尝试使用 SVG 文件中的以下代码更改悬停时的填充颜色 问题是 悬停效果仅在我删除
  • 更改svg中半圆的背景颜色

    我想在此 svg 代码上创建上弦月和第三弦月
  • D3.js分组条形图

    I am making a bar chart using D3 js like this source statcan gc ca http www statcan gc ca pub 12 593 x 2007001 figures f
  • 如何以 JavaScript 编程方式获取旋转的 svg 文本边界

    我正在动态渲染 SVG 图像并创建旋转文本 如果旋转的文本与其他文本重叠 我需要删除该文本 但我无法测量旋转的文本来创建边界并检查下一个标签文本区域 我创建了 3 个 SVG 元素来解释 SVG 1 显示重叠的文本 SVG 2 显示重叠的旋
  • 镀铬中的 SVG 条带

    I am using a svg file to produce a smooth gradient when I noticed some serious banding issues in Google Chrome 20 Even s
  • SVG 图标像素对齐?

    在此图像中 左侧 黑色 垃圾桶是图标字体 它的字体大小是 16px 这使得图标在 100 的时间里看起来都很清晰 两个蓝色垃圾桶是 SVG 它们具有完全相同的标记 其中之一happened一个是像素对齐的 另一个不是 我怎样才能强制我的 S
  • 如何使用 Selenium webdriver 测试对 SVG 对象的点击?

    我正在尝试编写代码来检查单击 SVG 对象的功能 例如此 URL 上的美国州 http www amcharts com svg maps map usa 这可行 但是有更好的方法吗 不需要物理移动鼠标的东西 robert new Robo
  • 限制在三角形内

    我正在寻找一段通用代码 javascript 它可以与 jquery UI 一起使用来限制三角形内 div 的移动 拖动 与此类似 http stackoverflow com questions 8515900 how to constr
  • 自定义 SVG 未加载到我的图像标签中

    目前我正在尝试将自定义 svg 组件加载到图像标签内 但由于某种原因 我无法看到地图组件内的 svg 图像 我的自定义 SVG 文件如下所示 我在 SVG 中加载另一个图像
  • Safari 滚动条和 SVG

    问题 Safari 无法正常工作 而是使用滚动条渲染我的 SVG 图像 问题的改进版本 如何填充设定的宽度并根据 Safari 中的宽高比计算高度 感谢普罗格兹 相关代码 SVG File viewBox 0 0 800 800 未指定高度
  • 为什么将 x 和 y 设置为 0 时 svg 文本会消失?

    我刚刚开始阅读有关svg我提出了以下问题 我正在创建一个简单的svg with a text里面如下图所示 从我的阅读中我了解到x and y of the text标签声明文本在标签内的位置svg space 为什么当我同时设置x and

随机推荐