javascript - 用正确的 viewBox 值替换宽度和高度属性
问题描述
这个问题有助于理解 viewBox 的用途,但并不完全相同。
目标是用相应的 viewBox 属性替换 SVG 元素的宽度和高度属性。我们的代码需要设置 viewBox,而不是设置宽度和高度。
有没有一种算法方法可以做到这一点?
例如,下面的 SVG 元素在替换为 0 0 6 6 的 viewBox 属性时看起来不一样。
原来的
<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='6' height='6'>
<rect width='6' height='6' fill='#eee'/>
<g id='c'>
<rect width='3' height='3' fill='#e6e6e6'/>
<rect y='1' width='3' height='2' fill='#d8d8d8'/>
</g>
<use xlink:href='#c' x='3' y='3'/>
</svg>
已编辑
<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox="0 0 6 6">
<rect width='6' height='6' fill='#eee'/>
<g id='c'>
<rect width='3' height='3' fill='#e6e6e6'/>
<rect y='1' width='3' height='2' fill='#d8d8d8'/>
</g>
<use xlink:href='#c' x='3' y='3'/>
</svg>
解决方案
TL;DR:你不能,那不是viewBox
。
一个 SVG 画布可以被认为是一个无限的绘图表面。viewBox
告诉浏览器哪个部分应该可见。这个可见区域将被缩放和定位以适合元素的内容区域。默认值viewBox
通常是 x 和 y 为 0,而宽度和高度与元素的像素尺寸相匹配。但是,viewBox
不会改变这些维度。
SVG 元素的高度和宽度会改变元素的内容区域。该viewBox
区域被缩放以适合该内容区域。如果没有设置高度和宽度,它们将是一些方便的大小,具体取决于浏览器的实现,并且viewBox
即使它们看起来在某些情况下也不依赖。
推荐阅读
- algorithm - 了解屏幕上像素的显示
- google-cloud-platform - 我们如何在google cloud deploy中使用cloud build privatePool
- c - 如何创建 n 个线程,每个线程创建 n - 1 个线程
- spring-boot - Spring WebClient - 如果在 doOnError 中引发异常,则停止重试
- snowflake-cloud-data-platform - LAST_DAY('WEEK') 忽略 WEEK_OF_YEAR_POLICY 会话参数
- bash - 数据块 /dbfs 上的“树”命令
- c# - 使用 Visual Studio 代码时如何查找符号的定义?
- sql - 在最初使用多格式逻辑文件的 RPGLE 程序中检索 DB2 记录的最佳实践是什么?
- python-3.x - 如何将“和”搜索运算符添加到 odoo XML-RPC api 调用?
- html - 如何在多个网格上制作内容?