svg - 当符号已设置大小和相对位置时缩放 SVG
问题描述
我已经坚持了几天,所以我想我会伸出手,看看是否有人遇到过类似的事情。我正在尝试将多个符号组合到一个 SVG 文件中。我能够组合文件上的符号,并且该图看起来完全符合我的要求。问题是生成的 SVG 不会自动调整大小。这是因为符号具有设定的宽度和高度。如果我删除符号上的宽度和高度,它们会调整大小,但我会丢失我想要的定位和大小比例。在 SVG 上设置宽度或高度不会影响符号的大小。
我希望能够设置 SVG 的宽度和高度,并且它会导致符号相应地调整大小,保持相对位置。如果您在浏览器中放大图像,您将获得相同的效果。我正在使用的符号有点过于复杂,无法用作示例,但这是同一问题的一个非常基本的示例。生成的图像不会调整为 SVG 中设置的 100% 宽度。任何帮助表示赞赏。
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%">
<symbol id="svg23" viewBox="0 0 20 20" height="50" width="50" >
<rect width="20" height="20" />
</symbol>
<symbol id="svg20" viewBox="0 0 30 30" height="50" width="50" >
<rect width="30" height="30" />
</symbol>
<use href="#svg23" />
<use href="#svg20" x="100" y="0" />
</svg>
解决方案
使用 viewBox 来控制 SVG 内部的相对位置是有意义的。然后,您可以将 SVG 的宽度设置为特定的值,或者如果它应该填充 100%,则将其省略。
<p>Width of 100%:</p>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 500 50">
<symbol id="svg23" viewBox="0 0 20 20" height="50" width="50" >
<rect width="20" height="20" />
</symbol>
<symbol id="svg20" viewBox="0 0 30 30" height="50" width="50" >
<rect width="30" height="30" />
</symbol>
<use href="#svg23" />
<use href="#svg20" x="100" y="0" />
</svg>
<p>Smaller (width of 200 px):</p>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="200px" viewBox="0 0 500 50">
<symbol id="svg23" viewBox="0 0 20 20" height="50" width="50" >
<rect width="20" height="20" />
</symbol>
<symbol id="svg20" viewBox="0 0 30 30" height="50" width="50" >
<rect width="30" height="30" />
</symbol>
<use href="#svg23" />
<use href="#svg20" x="100" y="0" />
</svg>
推荐阅读
- qtspim - 为什么它显示错误消息“异常发生在 0x00000000
- javascript - Array.push 在第二个嵌套的 For 循环内
- javascript - 如何解决两个相互重叠的接口链接标签?思科 neXt ui
- server - 如何通过USB连接两台笔记本电脑?
- asp.net - 如何在 asp.net core 中实现 in-url 路由?
- reactjs - 如何使用三元运算符显示一些文本,而不是在反应和打字稿中使用 if else 条件?
- python - 如何在 python 中重构这样的多头数据帧?
- python - 为什么通过 OpenCV (Python) 的视频输出如此缓慢(逐帧)?
- kubernetes - Websocket 不适用于 nginx-ingress 上的基本身份验证
- php - PHP:为什么真等于-1?