【问题标题】:Find svg viewbox that trim whitespace around找到修剪周围空白的svg视图框
【发布时间】:2015-05-14 04:16:55
【问题描述】:

假设我有一个绘制一些路径的 svg,我应该使用什么工具来找到一个完全适合这些路径的视图框,以便修剪周围的所有冗余空间?

【问题讨论】:

    标签: svg space trim viewbox


    【解决方案1】:

    您可以简单地将 svg 的 viewBox 设置为其边界框。

    function setViewbox(svg) {
      var bB = svg.getBBox();
      svg.setAttribute('viewBox', bB.x + ',' + bB.y + ',' + bB.width + ',' + bB.height);
      }
    
    document.querySelector('button').addEventListener('click', function() {
      setViewbox(document.querySelector('svg'));
      });
    svg {  border: 1px solid }
    <svg version="1.1" id="svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 500 300" enable-background="new 0 0 500 300" xml:space="preserve" width="250" height="150">
      <path fill="none" stroke="#B2E230" d="M413.7,276.5c0,0,67-37,116,0c-24.1-33,16.4-53,0-34s-100-2-75-38" transform="translate(-75,-75)" />
    </svg>
    <button>setViewbox</button>

    注意:它还会考虑路径的不可见锚点。

    【讨论】:

    • 谢谢您,先生,它有效! :D Anw,这似乎不适用于具有转换的 svg,例如:codepen.io/KwiZ/pen/pvxdNw。你有什么解决办法吗?
    • 您的解决方法在我的示例 codepen.io/KwiZ/pen/pvxdNw 中遇到了问题 :) 当我自己手动将 元素包裹在每个 周围并使用您的旧代码时,这很好。
    • @KwiZ 抱歉,removeChild() 放错了位置,现在可以与您的 codepen 一起使用
    • @Kaiido,似乎无法让这个工作jsbin.com/mukowi/1/edit?html,js,output。你能告诉我可能是什么问题吗?
    • @AbishekRSrikaanth 有趣的案例。当我有更多时间时,我会深入研究它,但乍一看,我会说问题在于您的路径的 x 位置是否定的。所以一个快速的解决方法是在从 vB.w 减去 vB.x 时添加一些检查(我的 sn-p 的 l24)if(vB.x&gt;0)vB.w-=vB.x if(vB.y&gt;0)vB.h-=vB.yjsfiddle.net/vbrnuoj2 但我会重写整个事情,因为我现在觉得它很丑......
    猜你喜欢
    • 2017-02-07
    • 1970-01-01
    • 2019-09-29
    • 2016-02-25
    • 2013-12-27
    • 1970-01-01
    • 2017-02-07
    • 2017-07-08
    • 1970-01-01
    相关资源
    最近更新 更多