当前位置: 首页 > 知识库问答 >
问题:

svg viewbox无法调整大小

公羊绪
2023-03-14

我无法将svg的大小调整为20px到20px。下面是svg的原始代码大小,它是巨大的0 0 35.41 35.61:

<!doctype html>
    <html>
       <head>
         <meta charset="utf-8">
         <title>SVG</title>
      </head>
       <body>
       <h1>Testing SVG</h1>
          <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 35.41 35.61"><defs><style>.cls-1{fill:#000100;}</style></defs><title>B Tuerca BLACK</title><path class="cls-1" d="M362.88,771.63l-4.12-1.23a13.38,13.38,0,0,0-.81-2l2.12-3.93a1,1,0,0,0-.18-1.22l-2.5-2.5a1,1,0,0,0-1.22-.18l-3.78,2a13.39,13.39,0,0,0-2.46-1.05l-1.26-4.24a1,1,0,0,0-1-.74h-3.53a1,1,0,0,0-1,.74l-1.26,4.23a13.38,13.38,0,0,0-2.47,1.06l-3.78-2a1,1,0,0,0-1.22.18l-2.5,2.5a1,1,0,0,0-.18,1.22l2.12,3.93a13.36,13.36,0,0,0-.81,2l-4.12,1.23a1,1,0,0,0-.74,1v3.53a1,1,0,0,0,.74,1l4.12,1.23a13.36,13.36,0,0,0,.81,2l-2.12,3.92a1,1,0,0,0,.18,1.22l2.5,2.5a1,1,0,0,0,1.22.18l3.77-2a13.38,13.38,0,0,0,2.48,1.06l1.26,4.22a1,1,0,0,0,1,.74h3.53a1,1,0,0,0,1-.74l1.26-4.22a13.38,13.38,0,0,0,2.48-1.06l3.77,2a1,1,0,0,0,1.22-.18l2.5-2.5a1,1,0,0,0,.18-1.22l-2.12-3.92a13.36,13.36,0,0,0,.81-2l4.12-1.23a1,1,0,0,0,.74-1v-3.53A1,1,0,0,0,362.88,771.63Zm-17,11.19a8.43,8.43,0,1,1,8.43-8.43A8.44,8.44,0,0,1,345.91,782.81Z" transform="translate(-328.2 -756.57)"/></svg>

        </body>
      </html>

但是,然后我将viewbox值更改为“0 0 20 20”,而不指定svg本身的宽度和高度,并且大小仍然非常大:

<!doctype html>
        <html>
        <head>
         <meta charset="utf-8">
         <title>SVG</title>
         </head>
         <body>
           <h1>Testing SVG</h1>
           <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><defs><style>.cls-1{fill:#000100;}</style></defs><title>B Tuerca BLACK</title><path class="cls-1" d="M362.88,771.63l-4.12-1.23a13.38,13.38,0,0,0-.81-2l2.12-3.93a1,1,0,0,0-.18-1.22l-2.5-2.5a1,1,0,0,0-1.22-.18l-3.78,2a13.39,13.39,0,0,0-2.46-1.05l-1.26-4.24a1,1,0,0,0-1-.74h-3.53a1,1,0,0,0-1,.74l-1.26,4.23a13.38,13.38,0,0,0-2.47,1.06l-3.78-2a1,1,0,0,0-1.22.18l-2.5,2.5a1,1,0,0,0-.18,1.22l2.12,3.93a13.36,13.36,0,0,0-.81,2l-4.12,1.23a1,1,0,0,0-.74,1v3.53a1,1,0,0,0,.74,1l4.12,1.23a13.36,13.36,0,0,0,.81,2l-2.12,3.92a1,1,0,0,0,.18,1.22l2.5,2.5a1,1,0,0,0,1.22.18l3.77-2a13.38,13.38,0,0,0,2.48,1.06l1.26,4.22a1,1,0,0,0,1,.74h3.53a1,1,0,0,0,1-.74l1.26-4.22a13.38,13.38,0,0,0,2.48-1.06l3.77,2a1,1,0,0,0,1.22-.18l2.5-2.5a1,1,0,0,0,.18-1.22l-2.12-3.92a13.36,13.36,0,0,0,.81-2l4.12-1.23a1,1,0,0,0,.74-1v-3.53A1,1,0,0,0,362.88,771.63Zm-17,11.19a8.43,8.43,0,1,1,8.43-8.43A8.44,8.44,0,0,1,345.91,782.81Z" transform="translate(-328.2 -756.57)"/></svg>

         </body>
         </html>

然后我在主svg文件中添加了一个宽度20和高度20,结果的大小变小了,但是它现在被裁剪了。

<!doctype html>
        <html>
        <head>
         <meta charset="utf-8">
         <title>SVG</title>
         </head>
         <body>
           <h1>Testing SVG</h1>
           <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><defs><style>.cls-1{fill:#000100;}</style></defs><title>B Tuerca BLACK</title><path class="cls-1" d="M362.88,771.63l-4.12-1.23a13.38,13.38,0,0,0-.81-2l2.12-3.93a1,1,0,0,0-.18-1.22l-2.5-2.5a1,1,0,0,0-1.22-.18l-3.78,2a13.39,13.39,0,0,0-2.46-1.05l-1.26-4.24a1,1,0,0,0-1-.74h-3.53a1,1,0,0,0-1,.74l-1.26,4.23a13.38,13.38,0,0,0-2.47,1.06l-3.78-2a1,1,0,0,0-1.22.18l-2.5,2.5a1,1,0,0,0-.18,1.22l2.12,3.93a13.36,13.36,0,0,0-.81,2l-4.12,1.23a1,1,0,0,0-.74,1v3.53a1,1,0,0,0,.74,1l4.12,1.23a13.36,13.36,0,0,0,.81,2l-2.12,3.92a1,1,0,0,0,.18,1.22l2.5,2.5a1,1,0,0,0,1.22.18l3.77-2a13.38,13.38,0,0,0,2.48,1.06l1.26,4.22a1,1,0,0,0,1,.74h3.53a1,1,0,0,0,1-.74l1.26-4.22a13.38,13.38,0,0,0,2.48-1.06l3.77,2a1,1,0,0,0,1.22-.18l2.5-2.5a1,1,0,0,0,.18-1.22l-2.12-3.92a13.36,13.36,0,0,0,.81-2l4.12-1.23a1,1,0,0,0,.74-1v-3.53A1,1,0,0,0,362.88,771.63Zm-17,11.19a8.43,8.43,0,1,1,8.43-8.43A8.44,8.44,0,0,1,345.91,782.81Z" transform="translate(-328.2 -756.57)"/></svg>

         </body>
         </html>

我阅读了SVG文档,并且理解了如果您不指定宽度/高度,它将使用ViewBox的相同用户单元。这个问题是否与svg导出到的原始大小有关?

共有1个答案

上官锦
2023-03-14

由于SVG的布局方式,您不需要调整viewbox。只需将宽度高度设置为20即可根据需要显示:

html prettyprint-override"><!doctype html>
<html>
   <head>
     <meta charset="utf-8">
     <title>SVG</title>
  </head>
   <body>
   <h1>Testing SVG</h1>
      <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 35.41 35.61" width="20" height="20"><defs><style>.cls-1{fill:#000100;}</style></defs><title>B Tuerca BLACK</title><path class="cls-1" d="M362.88,771.63l-4.12-1.23a13.38,13.38,0,0,0-.81-2l2.12-3.93a1,1,0,0,0-.18-1.22l-2.5-2.5a1,1,0,0,0-1.22-.18l-3.78,2a13.39,13.39,0,0,0-2.46-1.05l-1.26-4.24a1,1,0,0,0-1-.74h-3.53a1,1,0,0,0-1,.74l-1.26,4.23a13.38,13.38,0,0,0-2.47,1.06l-3.78-2a1,1,0,0,0-1.22.18l-2.5,2.5a1,1,0,0,0-.18,1.22l2.12,3.93a13.36,13.36,0,0,0-.81,2l-4.12,1.23a1,1,0,0,0-.74,1v3.53a1,1,0,0,0,.74,1l4.12,1.23a13.36,13.36,0,0,0,.81,2l-2.12,3.92a1,1,0,0,0,.18,1.22l2.5,2.5a1,1,0,0,0,1.22.18l3.77-2a13.38,13.38,0,0,0,2.48,1.06l1.26,4.22a1,1,0,0,0,1,.74h3.53a1,1,0,0,0,1-.74l1.26-4.22a13.38,13.38,0,0,0,2.48-1.06l3.77,2a1,1,0,0,0,1.22-.18l2.5-2.5a1,1,0,0,0,.18-1.22l-2.12-3.92a13.36,13.36,0,0,0,.81-2l4.12-1.23a1,1,0,0,0,.74-1v-3.53A1,1,0,0,0,362.88,771.63Zm-17,11.19a8.43,8.43,0,1,1,8.43-8.43A8.44,8.44,0,0,1,345.91,782.81Z" transform="translate(-328.2 -756.57)"/></svg>
    </body>
  </html>
 类似资料:
  • 问题内容: 已经研究了一段时间,我似乎找不到使用scalatest plus调整窗口大小的方法。 我找到在线搜索的唯一方法或http://doc.scalatest.org/2.1.5/index.html#org.scalatest.selenium.WebBrowser上的文档 是executeScript(“ window.resizeTo(700,700);”) 但这对我没有反应(没有错误

  • 问题内容: 我正在尝试在python 2.7中创建一个tkinter项目,用户可以在其中调整窗口的大小,并且窗口中的所有内容都将随之缩放。这意味着画布,画布中的形状以及最重要的是PhotoImages将随窗口缩放。我的问题是我一生都无法正确调整图像大小。我知道并且为此目的而存在,但是首先 在50x50像素的图像中没有明显变化,对于zoom(2,2)也相同。重要的是要注意我知道PIL存在,但是出于本

  • 我正在使用multer将图像上传到服务器。我正在使用sharp调整图像的大小,然后发送到客户端。但是发生的情况是,一旦用户上传了图像,multer将其上传到服务器,夏普甚至调整了它的大小,但是如果同一个用户再次上传,multer上传了新文件,但是夏普并没有调整新上传的图像的大小,而是发送原来的调整过大小的图像。

  • 我想减少GridBagLayout中JTextField和JScrollPane的宽度和高度,但似乎通过设置文本字段列,宽度只能减少到JList中最长内容的长度。我不确定是否需要调整组件的两个或一个尺寸以匹配宽度。 我尝试了setPreferredSize()、setSize()和在文本字段上设置列长度,但它们似乎没有任何作用。

  • 问题内容: 我想要实现以下目标: 我能获得的最接近的是以下(伪)代码: 每当我想添加组件时,就将它们添加到内部容器中: ....等 我面临以下问题: 我让布局管理器负责所有UI元素的大小。所以最好不要使用任何.setxxSize()方法。一个JTextArea,包含大量文本,将使用所有需要的空间(垂直和水平)。完全没问题。每当调整框架的大小时,JTextArea都会增长,这仍然是可以的。但是每当我

  • 我正在尝试构建一个包含6个窗格(作为父级添加到GridPane布局中)的简单Java项目。我必须在开始时设置窗口大小,并通过参考根布局的宽度和高度,设法将它们均匀地拆分。 但我想要他们调整大小,因为我改变了窗口的大小(使用鼠标,现在他们得到固定的大小)。 下面是我的代码: