This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The viewportElement property of the SVGElement interface represents the SVGElement which established the current viewport. Often the nearest ancestor <svg> element. null if the given element is the outermost <svg> element.
An SVGElement.
viewportElement
<svg id="outerSvg" width="200" height="200" xmlns="http://www.w3.org/2000/svg">
<svg id="innerSvg" x="10" y="10" width="100" height="100">
<circle id="circle" cx="50" cy="50" r="40" fill="blue"></circle>
</svg>
</svg>
const circle = document.getElementById("circle");
const innerSvg = document.getElementById("innerSvg");
const outerSvg = document.getElementById("outerSvg");
console.log(circle.viewportElement); // Output: <svg id="innerSvg">...</svg>
console.log(innerSvg.viewportElement); // Output: <svg id="outerSvg">...</svg>
console.log(outerSvg.viewportElement); // Output: null
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
viewportElement |
1 | 12 | 1.5 | ≤12.1 | 3 | 18 | 4 | ≤12.1 | 1 | 1.0 | 3 | 1 |
SVGElement.ownerSVGElement: Retrieves the nearest ancestor <svg> element for the current SVG element.
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/SVGElement/viewportElement