【问题标题】:Autoscaling an SVG embedded in HTML on window resize在窗口调整大小时自动缩放嵌入在 HTML 中的 SVG
【发布时间】:2013-04-11 06:44:17
【问题描述】:

我想在 HTML 页面中嵌入一些 SVG,以便在调整页面大小时自动调整大小(使用 SVG、CSS 或 JS),同时仍保留原始纵横比。

例如,使用 W3Schools 中的示例:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <circle cx="100" cy="50" r="40" stroke="black"
  stroke-width="2" fill="red"/>
</svg>

是否可以将 SVG 宽度设置为窗口宽度的 5%,并按比例缩放高度?

我已经尝试了一些方法,包括 preserveAspectRatio="xMinYMin meet" 并在 &lt;div&gt; 容器中将尺寸设置为 100%,但还没有实现。

有什么建议吗?

【问题讨论】:

    标签: html css svg


    【解决方案1】:

    您的 SVG 根元素需要一个 viewBox-attribute,它将定义 SVG 图像的整体大小:

    <svg version="1.1" viewBox="0 0 300 185">
    

    现在您可以通过 CSS 设置图像的宽度或高度,它会完美缩放。

    【讨论】:

    • 成功了。你知道viewBox的最后两个参数是怎么处理的吗?增加它们似乎会减小图像的大小。
    • 这些数字是图像的使用宽度和高度。在您上面的示例中,它将是圆+半径:cx+r=width (140) 和 cy+r=height (90)。您最好的选择是通过 Inkscape 等图形软件保存图像,该软件将计算整体尺寸并将 viewBox 属性写入文件。如果使用 Inkscape,请确保选择“Optimized Inkscape SVG”,这将产生更小的文件大小和易于理解的 XML 源代码。
    • 这个答案拯救了我的一天!
    猜你喜欢
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多