W3docs

CSS-свойство visibility

CSS-свойство visibility определяет, виден ли элемент пользователю или скрыт. Примеры и возможность попробовать самостоятельно.

CSS-свойство visibility управляет отображением элемента — видим он или скрыт — не изменяя при этом макет: скрытый элемент сохраняет то пространство, которое он занимал бы, будучи видимым. На этой странице рассматриваются три основных значения (visible, hidden, collapse), отличия visibility от display и opacity, влияние скрытия контента на доступность, а также примеры для каждого значения.

Как работает visibility

Наиболее используемым значением является hidden. При установке visibility: hidden элемент становится невидимым, однако по-прежнему занимает своё место в макете — окружающий контент не смещается, чтобы заполнить образовавшийся промежуток. Элемент также исключается из порядка перехода по Tab и не объявляется программами чтения с экрана, поэтому он действительно скрыт от вспомогательных технологий, а не только визуально.

Одна из необычных особенностей: visibility наследуется, но дочерний элемент может переопределить это значение. Если родительский элемент имеет visibility: hidden, потомок с visibility: visible снова станет видимым, даже несмотря на то что его предок скрыт.

Значение collapse имеет особую обработку для элементов, связанных с таблицами (<tr>, <col>, группы строк и столбцов). Для них оно полностью удаляет строку или столбец — так же, как это делает display: none — и таблица перестраивается, закрывая образовавшийся промежуток, однако ширина столбцов по-прежнему вычисляется так, будто строка присутствует. Для элементов, не связанных с таблицами, collapse ведёт себя так же, как hidden.

Внимание

Поддержка collapse для элементов таблиц в браузерах непоследовательна: некоторые движки обрабатывают его так же, как hidden (строка сохраняет пространство). Если нужно, чтобы строка исчезала во всех браузерах, используйте вместо этого display: none на элементе <tr>.

visibility vs. display vs. opacity

Все три свойства «скрывают» элемент, однако ведут себя по-разному — выбор неподходящего свойства является распространённой ошибкой.

СвойствоСохраняет пространство?В дереве доступности?Получает события?
visibility: hiddenДаНетНет
display: noneНет (схлопывается)НетНет
opacity: 0ДаДаДа

Используйте visibility: hidden, когда нужно зарезервировать место под элемент, но скрыть его содержимое (например, при переключении заглушки без смещения страницы). Используйте display: none, когда элемент должен исчезнуть и макет должен закрыть образовавшийся промежуток. Используйте opacity: 0 только тогда, когда нужен элемент, с которым по-прежнему можно взаимодействовать и который по-прежнему доступен программам чтения с экрана — например, элемент, который вы плавно показываете или скрываете.

Поскольку visibility поддерживает анимацию, его можно комбинировать с opacity для плавного исчезновения, завершающегося полностью скрытым, неинтерактивным элементом:

.fade {
  opacity: 1;
  visibility: visible;
  transition: opacity 0.3s, visibility 0s linear 0.3s;
}
.fade.is-hidden {
  opacity: 0;
  visibility: hidden;
}
Начальное значениеvisible
Применяется кВсем элементам (collapse применяется только к элементам, связанным с таблицами).
НаследуетсяДа.
АнимируетсяДа.
ВерсияCSS2
DOM SyntaxObject.style.visibility = "collapse";

Синтаксис

Синтаксис CSS-свойства visibility

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

Пример свойства visibility со значением "hidden":

Пример CSS-свойства visibility со значением 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>

Результат

CSS-свойство visibility

Пример свойства visibility со значениями "visible" и "hidden":

Пример CSS-свойства visibility со значениями visible и 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>

Пример свойства visibility со значением "collapse":

Пример CSS-свойства visibility со значением 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>

Значения

ЗначениеОписаниеПопробовать
visibleВ этом случае тег виден. Это значение по умолчанию для данного свойства.Попробовать »
hiddenЭто значение лишь визуально скрывает элементы.Попробовать »
collapseИспользуется с определёнными элементами таблиц (строками, группами строк, столбцами, группами столбцов) для полного удаления строк или столбцов. Для остальных элементов это значение имеет то же значение, что и "hidden".Попробовать »
initialУстанавливает свойство в значение по умолчанию.Попробовать »
inheritНаследует свойство от родительского элемента.
revertОткатывает свойство до унаследованного или начального значения в зависимости от применимости.Попробовать »
revert-layerОткатывает свойство до значения, заданного в предыдущем слое каскада.Попробовать »

Связанные свойства

  • CSS display — скрыть элемент и убрать его пространство из макета.
  • CSS opacity — сделать элемент прозрачным, сохранив возможность взаимодействия с ним.
  • CSS overflow — управлять контентом, выходящим за пределы своего блока.
  • CSS position — перемещать элементы за пределы нормального потока.

Практика

Практика
Какие значения может принимать CSS-свойство 'visibility'?
Какие значения может принимать CSS-свойство 'visibility'?
Was this page helpful?