2013-04-02 25 views
2

我正在尝试创建一个相当复杂的SVG界面,由几个图形层组成。在SVG元素内拉伸特定图层

我想通过使用viewBox属性来调整浏览器窗口的大小时,拉伸一些图层(即SVG中的“g”元素)。同一个SVG中的其他图层应该分别缩放或处理。这就是我遇到问题的地方。

我本来希望能够做到以下几点:

<svg> 
    <g name="stretchable" width="900px" height="500px" viewBox="0px 0px 900px 500px"> 
     ...insert stretchable shapes here... 
    </g> 
    <g name="non-stretchable"> 
     ...insert other shapes here... 
    </g> 
</svg> 

...然后只拉伸“拉伸” G元素,通过操纵viewBox属性。但显然,viewBox属性不适用于g元素。

是否有任何其他方式来拉伸SVG中的特定“g”元素,而不必拉伸整个SVG?

回答

2

为什么不使用<svg>元素而不是<g>元素。它确实允许使用viewBox属性。

如果这样做不好,您可以随时尝试向<g>元素添加transform =“scale(x,y)”,其中x和y是您需要计算的数值比例因子。

顺便说一句<g>元素不支持宽度或高度属性或虽然<svg>元素。

+0

优秀的解决方案!尤其是变换/缩放之一。我一直在使用比例尺,但总是认为它是一个单值属性(始终保持宽高比)。我没有意识到你可以添加两个值来获得拉伸行为。我已经计算了比例因子并进行了大量的变换字符串操作,因此我将选择transform =“scale(x,y)”的建议。当然,它的作用就如同元素上的魅力。万分感谢! – cosimo