visibility
        
        
          
                Baseline
                
                  Widely available
                
                
              
        
        
        
          
                
              
                
              
                
              
        
        
      
      This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
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 visibility attribute is set to hidden on a text element, then the text is invisible but still takes up space in text layout calculations.
Depending on the value of attribute pointer-events, graphics elements which have their visibility attribute set to hidden still might receive events.
Note:
As a presentation attribute, visibility also has a CSS property counterpart: visibility. When both are specified, the CSS property takes priority.
Elements
You can use this attribute with the following SVG elements:
- <a>
- <audio>
- <canvas>
- <circle>
- <ellipse>
- <foreignObject>
- <iframe>
- <image>
- <line>
- <path>
- <polygon>
- <polyline>
- <rect>
- <text>
- <textPath>
- <tspan>
- <video>
Usage notes
| Value | visible|hidden|collapse | 
|---|---|
| Default value | visible | 
| Animatable | Yes | 
- visible
- 
This value indicates that the element will be painted. 
- 
This value indicates that the element will not be painted. Though it is still part of the rendering tree, i.e., it may receive pointer events depending on the pointer-eventsattribute, may receive focus depending on thetabindexattribute, contributes to bounding box calculations and clipping paths, and does affect text layout.
- collapse
- 
This value is equal to hidden.
Examples
>Example 1
<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>
Example 2
The following example toggles the CSS visibility of the SVG image path.
HTML
<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>
CSS
svg {
  display: inline !important;
}
span {
  vertical-align: 50%;
}
button {
  line-height: 1em;
}
.invisible {
  visibility: hidden;
}
JavaScript
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");
});
Result
Specifications
| Specification | 
|---|
| CSS Display Module Level 3> # visibility> | 
| Scalable Vector Graphics (SVG) 2> # VisibilityControl> | 
Browser compatibility
Loading…
See also
- displayattribute
- CSS visibilityproperty