naheed
naheed

Reputation: 515

how to resize a large svg to fit inside a div

I have the following div inside <body>.

<div style="width:320px; height:480px;">
    <svg id="svg1"></svg>            
</div>

I want to fit a 640X480 svg inside this div. I have tried this:

var paper=Snap("#svg1");
Snap.load("somesvg.svg",function(f){ 
 paper.append(f);
 }); 
 paper.attr({ 
 width:320, height:480
 }) 

But the svg is cut off from the right size.

Upvotes: 21

Views: 29587

Answers (2)

Ian
Ian

Reputation: 13852

I was wondering about adjusting the viewBox for this, so something like...

<div style="width:320px; height:480px;">
    <svg id="svg1" width="100%" height="100%" viewBox="0 0 640 480" preserveAspectRatio="xMaxYMax"></svg>
</div>

jsfiddle http://jsfiddle.net/9zRR8/5/

Upvotes: 34

Paul LeBeau
Paul LeBeau

Reputation: 101868

The SVG will not scale because it does not have a viewBox defined. The viewBox tells the browser what the dimensions of the content are. Without it, there is no way to determine how much it should be scaled up or down to fit.

This is kind of a failing of svg-edit. It really should be adding one, ideally.

What you could try is loading the SVG into Inkscape or another SVG editor which should add a viewBox. Alternatively, you could add one manually, as per Ian's answer.

Upvotes: 6

Related Questions