首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的SVG在更改viewBox属性时不进行缩放

为什么我的SVG在更改viewBox属性时不进行缩放
EN

Stack Overflow用户
提问于 2020-05-04 13:27:45
回答 2查看 34关注 0票数 1

当我将viewBox更改为

代码语言:javascript
复制
0 0 500 500

如下面的示例所示,SVG仍然呈现其“原始”大小为129x129 (在500x500空间内)。

为什么SVG内部的路径不是相对于viewBox扩展的呢?

代码语言:javascript
复制
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500">
      <defs>
        <style>
          .cls-1{fill:#d9d9d9;}.cls-2{fill:#fff;}.cls-3{fill:#222221;}
        </style>
      </defs>
      <path class="cls-1" d="M420.94,366.76a62.55,62.55,0,1,0-62.54-62.55,62.55,62.55,0,0,0,62.54,62.55" transform="translate(-358.4 -241.67)" />
      <polygon class="cls-2" points="36.49 32.43 20.89 48.48 20.89 88.25 62.2 88.25 62.2 32.16 36.49 32.43" />
      <path class="cls-3" d="M394.31,271.33l-17.16,17.16v38.72a5.23,5.23,0,0,0,5.23,5.23h40.51V271.33Zm-.16,5.65v9a2.33,2.33,0,0,1-2.33,2.33h-9ZM419,328.57H382.38a1.37,1.37,0,0,1-1.36-1.36V290.27h10.8a4.27,4.27,0,0,0,4.26-4.27V275.21H419Z" transform="translate(-358.4 -241.67)" />
      <polygon class="cls-2" points="88.3 32.43 103.9 48.48 103.9 88.25 62.59 88.25 62.59 32.16 88.3 32.43" />
      <path class="cls-3" d="M447.58,271.33H419v61.11h40.51a5.23,5.23,0,0,0,5.23-5.23V288.49Zm.16,5.65,11.35,11.35h-9a2.33,2.33,0,0,1-2.33-2.33Zm11.77,51.59H422.88V275.21h22.93V286a4.27,4.27,0,0,0,4.26,4.27h10.79v36.94a1.35,1.35,0,0,1-1.35,1.36" transform="translate(-358.4 -241.67)" />
      <rect class="cls-3" x="62.08" y="20.66" width="0.93" height="79.11" />
    </svg>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-04 13:59:42

通过更改viewBox,您可以更改边框,即svg元素中可用的空间。如果需要更改图标的大小,请添加宽度。

代码语言:javascript
复制
//console.log(box.getBBox())
代码语言:javascript
复制
svg{border:solid; width:100px;}
代码语言:javascript
复制
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 125 125">
      <defs>
        <style>
          .cls-1{fill:#d9d9d9;}.cls-2{fill:#fff;}.cls-3{fill:#222221;}
        </style>
      </defs>
      <g id="box">
      <path class="cls-1" d="M420.94,366.76a62.55,62.55,0,1,0-62.54-62.55,62.55,62.55,0,0,0,62.54,62.55" transform="translate(-358.4 -241.67)" />
      <polygon class="cls-2" points="36.49 32.43 20.89 48.48 20.89 88.25 62.2 88.25 62.2 32.16 36.49 32.43" />
      <path class="cls-3" d="M394.31,271.33l-17.16,17.16v38.72a5.23,5.23,0,0,0,5.23,5.23h40.51V271.33Zm-.16,5.65v9a2.33,2.33,0,0,1-2.33,2.33h-9ZM419,328.57H382.38a1.37,1.37,0,0,1-1.36-1.36V290.27h10.8a4.27,4.27,0,0,0,4.26-4.27V275.21H419Z" transform="translate(-358.4 -241.67)" />
      <polygon class="cls-2" points="88.3 32.43 103.9 48.48 103.9 88.25 62.59 88.25 62.59 32.16 88.3 32.43" />
      <path class="cls-3" d="M447.58,271.33H419v61.11h40.51a5.23,5.23,0,0,0,5.23-5.23V288.49Zm.16,5.65,11.35,11.35h-9a2.33,2.33,0,0,1-2.33-2.33Zm11.77,51.59H422.88V275.21h22.93V286a4.27,4.27,0,0,0,4.26,4.27h10.79v36.94a1.35,1.35,0,0,1-1.35,1.36" transform="translate(-358.4 -241.67)" />
      <rect class="cls-3" x="62.08" y="20.66" width="0.93" height="79.11" />
      </g>
    </svg>

票数 1
EN

Stack Overflow用户

发布于 2020-05-04 15:45:58

较小的viewbox值将产生更大的“缩放”,因为SVG中的单位将在viewbox中占更大的比例。例如,让我们使用两个不同的viewbox值查看SVG中矩形的y值:

<rect class="cls-3" x="62.08" y="20.66" width="0.93" height="79.11" />

viewbox="0 0 500 500":矩形y与视图框高度之比为20.66/500

viewbox="0 0 250 250":矩形y与视箱高度之比为20.66/250

在第二个例子中,y占viewbox高度的比例更大。这表明图像会显得更大。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61593364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档