files/en-us/web/svg/reference/attribute/visibility/index.md
The visibility attribute lets you control the visibility of graphical elements. With a value of hidden or collapse the current graphics element is invisible.
[!NOTE] If the
visibilityattribute is set tohiddenon a text element, then the text is invisible but still takes up space in text layout calculations.
Depending on the value of attribute {{SVGAttr("pointer-events")}}, graphics elements which have their visibility attribute set to hidden still might receive events.
[!NOTE] As a presentation attribute,
visibilityalso has a CSS property counterpart: {{cssxref("visibility")}}. When both are specified, the CSS property takes priority.
You can use this attribute with the following SVG elements:
<audio><canvas><iframe><video>visible
hidden
collapse
hidden.html,
body,
svg {
height: 100%;
}
<svg viewBox="0 0 220 120" xmlns="http://www.w3.org/2000/svg">
<rect
x="10"
y="10"
width="200"
height="100"
stroke="black"
stroke-width="5"
fill="transparent" />
<g stroke="seagreen" stroke-width="5" fill="skyblue">
<rect x="20" y="20" width="80" height="80" visibility="visible" />
<rect x="120" y="20" width="80" height="80" visibility="hidden" />
</g>
</svg>
{{EmbedLiveSample("Example 1", "250", "100")}}
The following example toggles the CSS visibility of the SVG image path.
<button id="nav-toggle-button">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
class="button-icon">
<path d="M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z" />
<path
d="M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"
class="invisible" />
<path d="M0 0h24v24H0z" fill="none" />
</svg>
<span> click me </span>
</button>
svg {
display: inline !important;
}
span {
vertical-align: 50%;
}
button {
line-height: 1em;
}
.invisible {
visibility: hidden;
}
const button = document.querySelector("button");
button.addEventListener("click", (evt) => {
button
.querySelector("svg > path:nth-of-type(1)")
.classList.toggle("invisible");
button
.querySelector("svg > path:nth-of-type(2)")
.classList.toggle("invisible");
});
{{EmbedLiveSample("Example 2", "100%", "80")}}
{{Specifications}}
{{Compat}}