W3docs

Proprietà CSS visibility

La proprietà CSS visibility definisce se un elemento è visibile o nascosto. Scopri esempi pratici e provali tu stesso.

La proprietà CSS visibility controlla se un elemento viene mostrato o nascosto senza modificare il layout — un elemento nascosto mantiene esattamente lo spazio che occuperebbe se fosse visibile. Questa pagina tratta i tre valori principali (visible, hidden, collapse), le differenze tra visibility e display e opacity, le implicazioni di accessibilità quando si nasconde un contenuto, e degli esempi eseguibili per ciascun valore.

Cosa fa visibility

Il valore più utilizzato è hidden. Quando si imposta visibility: hidden, l'elemento diventa invisibile ma continua a occupare il suo spazio nel layout — il contenuto circostante non si sposta per riempire il vuoto. L'elemento viene inoltre rimosso dall'ordine di tabulazione e non viene annunciato dagli screen reader, quindi è effettivamente nascosto anche dalla tecnologia assistiva, non solo visivamente.

Una caratteristica particolare: visibility è ereditata, ma un elemento figlio può sovrascriverla. Se un elemento padre ha visibility: hidden, un discendente con visibility: visible riapparirà anche se il suo antenato è nascosto.

Il valore collapse ha un comportamento speciale per gli elementi correlati alle tabelle (<tr>, <col>, gruppi di righe, gruppi di colonne). Su questi elementi, rimuove completamente la riga o la colonna — come farebbe display: none — in modo che il resto della tabella si ridisegni per colmare il vuoto, ma le larghezze delle colonne della tabella rimangono calcolate come se la riga fosse ancora presente. Sugli elementi non-tabella, collapse si comporta semplicemente come hidden.

Attenzione

Il supporto browser per collapse sugli elementi di tabella è inconsistente: alcuni motori di rendering lo trattano in modo identico a hidden (la riga mantiene lo spazio visivo). Se hai bisogno che una riga scompaia davvero su tutti i browser, utilizza display: none sull'elemento <tr>.

visibility vs. display vs. opacity

Queste tre proprietà "nascondono" tutte un elemento, ma si comportano in modo diverso — scegliere quella sbagliata è un errore comune.

ProprietàMantiene lo spazio nel layout?Presente nell'albero di accessibilità?Riceve eventi?
visibility: hiddenNoNo
display: noneNo (collassa)NoNo
opacity: 0

Usa visibility: hidden quando vuoi riservare lo spazio dell'elemento ma nasconderne il contenuto (ad esempio, alternare un segnaposto senza che la pagina salti). Usa display: none quando vuoi che l'elemento scompaia e che il layout si chiuda. Usa opacity: 0 solo quando vuoi un elemento ancora interattivo e ancora leggibile dagli screen reader — ad esempio, un elemento che stai facendo apparire o scomparire con una dissolvenza.

Poiché visibility è animabile, puoi combinarla con opacity per ottenere una dissolvenza in uscita che termina con un elemento completamente nascosto e non interattivo:

.fade {
  opacity: 1;
  visibility: visible;
  transition: opacity 0.3s, visibility 0s linear 0.3s;
}
.fade.is-hidden {
  opacity: 0;
  visibility: hidden;
}
Valore inizialevisible
Si applica aTutti gli elementi (collapse si applica solo agli elementi correlati alle tabelle).
EreditataSì.
AnimabileSì.
VersioneCSS2
Sintassi DOMObject.style.visibility = "collapse";

Sintassi

Sintassi della proprietà CSS visibility

visibility: visible | hidden | collapse | initial | inherit | revert | revert-layer;

Esempio della proprietà visibility con il valore "hidden":

Esempio della proprietà CSS visibility con il valore hidden

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      p {
        visibility: hidden;
      }
    </style>
  </head>
  <body>
    <h2>Visibility property example.</h2>
    <div>Here is some text for example.</div>
    <p>Text, which will not be displayed in browser.</p>
    <div>
      You see space above this sentence, but actually there is some text, which has visibility property with hidden value.
    </div>
  </body>
</html>

Risultato

Proprietà CSS visibility

Esempio della proprietà visibility con i valori "visible" e "hidden":

Esempio della proprietà CSS visibility con i valori visible e hidden

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .test1 {
        visibility: visible;
      }
      .test2 {
        visibility: hidden;
      }
    </style>
  </head>
  <body>
    <h2>Visibility property example</h2>
    <p class="test1">Lorem Ipsum is simply dummy text.</p>
    <p class="test2">Lorem Ipsum is simply dummy text.</p>
    <p>The space above is a hidden text.</p>
  </body>
</html>

Esempio della proprietà visibility con il valore "collapse":

Esempio della proprietà CSS visibility con il valore collapse

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .collapse {
        visibility: collapse;
      }
      table {
        border: 2px solid #666;
      }
      td {
        border: 1px solid #ccc;
      }
    </style>
  </head>
  <body>
    <h2>Visibility property example</h2>
    <p>Here the "collapse" value is applied.</p>
    <table>
      <tr>
        <td>10</td>
        <td class="collapse">100</td>
        <td>1000</td>
      </tr>
      <tr>
        <td>20</td>
        <td>200</td>
        <td>2000</td>
      </tr>
      <tr class="collapse">
        <td>30</td>
        <td>300</td>
        <td>3000</td>
      </tr>
      <tr>
        <td>40</td>
        <td>400</td>
        <td>4000</td>
      </tr>
    </table>
  </body>
</html>

Valori

ValoreDescrizioneProva
visibleIn questo caso il tag è visibile. Questo è il valore predefinito di questa proprietà.Play it »
hiddenQuesto valore nasconde gli elementi solo visivamente.Play it »
collapseUtilizzato con particolari elementi di tabella (righe, gruppi di righe, colonne, gruppi di colonne) per rimuovere intere righe o colonne. Questo valore ha lo stesso significato di "hidden" quando viene utilizzato con altri elementi.Play it »
initialImposta la proprietà al suo valore predefinito.Play it »
inheritEredita la proprietà dall'elemento padre.
revertRipristina la proprietà al suo valore ereditato o iniziale, a seconda di ciò che è applicabile.Play it »
revert-layerRipristina la proprietà al valore impostato nel livello precedente della cascata.Play it »

Proprietà correlate

  • CSS display — nasconde un elemento e rimuove il suo spazio dal layout.
  • CSS opacity — rende un elemento trasparente mantenendolo interattivo.
  • CSS overflow — controlla il contenuto che fuoriesce dal suo box.
  • CSS position — sposta gli elementi fuori dal flusso normale.

Pratica

Pratica
Quali sono i possibili valori della proprietà CSS 'visibility'?
Quali sono i possibili valori della proprietà CSS 'visibility'?
Was this page helpful?