您可以使用getBBox()
來獲取任何SVG元素的邊界框。然後可以使用它在svg
根元素上設置viewBox
屬性。
您不必擔心縮放,因爲preserveAspectRatio
屬性會照顧到這一點。您可能也有興趣SVG views。
下面是一個很好的測量示例。這將放大到藍色方塊2秒後,平移和縮放,當你點擊藍色一個紅色的方形,並再次縮小,當你點擊紅色正方形:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<rect id="blue" x="0" y="0" width="100" height="100" fill="blue"/>
<rect id="red" x="100" y="100" width="50" height="50" fill="red"/>
<animate id="pan" attributeName="viewBox" begin="blue.click" dur="1s" fill="freeze"/>
<set attributeName="viewBox" to="0 0 200 200" begin="red.click"/>
<script><![CDATA[
setTimeout(function(){
var rect = document.getElementById('blue').getBBox();
document.documentElement.setAttribute('viewBox', rect.x + ' ' + rect.y + ' ' + rect.width + ' ' + rect.height);
}, 2000);
var pan = document.getElementById('pan');
var rect = document.getElementById('red').getBBox();
pan.setAttribute('to', rect.x + ' ' + rect.y + ' ' + rect.width + ' ' + rect.height);
]]></script>
</svg>
大,由於墨卡託 - 即看起來很棒。 –
@Jim我現在增加了一個小例子來說明。 – mercator
再次非常感謝。 –