I am trying to stretch an svg document inside an DOM in order to fit the window size.
like so:
<div id="y">
<div id="button"> click to zoom</div>
<embed id="x" src="s17.svg" >
<script>
var btn= document.getElementById("button");
btn.addEventListener('click',function(){
var z= document.getElementsByTagName("embed")[0];
var y = z.getSVGDocument();
y.lastChild.setAttribute("viewBox","0 0 "+window.innerWidth+" "+window.innerHeight);
},false);
</script>
</div>
css:
#x{
height:100%;
width:100%;
overflow:hidden;
}
#y{
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
overflow:hidden;
}
This isn't working... What am I doing wrong?
All browsers should be able to handle this just fine:
preserveAspectRatio="none"
to the svg element to make it stretch even if the css-viewport aspect ratio doesn't match the viewBox aspect ratio.If you don't want stretching then you can also do
preserveAspectRatio="xMidYMid slice"
(fill whole viewport, slicing away parts if necessary) orpreserveAspectRatio="xMidYMid meet"
(this is the default, center the svg in the viewport and maintain the aspect ratio).All browsers handle SVG support completely differently. I think your best bet is to use an
object
tag instead ofembed
, and you still have to do some hacking to get it to look right on each browser. This link and this link have some useful information for getting it to work cross-browser.