\n\n\n```\n\nВ этом примере при скрытии элемента с помощью `visibility: hidden` и `opacity: 0` сохраняется место в макете, что предотвращает резкие смещения окружающего контента. Переход по `opacity` создает плавное исчезновение, улучшая пользовательский опыт.\n\n### Отличия от display: none и opacity: 0\n\nПонимание различий между `visibility`, `display` и `opacity` критично для выбора правильного подхода:\n\n- **`visibility: hidden` vs `display: none`**:\n - `visibility: hidden` скрывает элемент, но оставляет его в потоке документа — пространство сохраняется, и макет не пересчитывается.\n - `display: none` полностью удаляет элемент из потока документа — пространство не резервируется, и макет перестраивается, что может вызвать \"скачки\" интерфейса.\n\n- **`visibility: hidden` vs `opacity: 0`**:\n - `opacity: 0` делает элемент прозрачным, но он остается видимым для браузера и продолжает занимать место (как и `visibility: hidden`). Однако, в отличие от `visibility: hidden`, элемент с `opacity: 0` обычно остается доступным для взаимодействий, таких как события мыши, если не использовать дополнительные свойства (например, `pointer-events: none`).\n\n### Заключение\n\nСвойство **`visibility`** — мощный инструмент в арсенале Frontend Developer, особенно при работе с динамическими интерфейсами, где важно управлять видимостью без нарушения макета. Его основные преимущества — сохранение пространства в документе и специфическое поведение `collapse` для таблиц. В реальных проектах `visibility` часто комбинируют с другими CSS-свойствами для создания сложных анимаций и состояний, обеспечивая отзывчивый и стабильный пользовательский интерфейс. Например, в React- или Vue-приложениях его можно использовать для условного рендеринга компонентов с плавными переходами, что улучшает восприятие контента.","dateCreated":"2026-04-07T16:22:13.465600","upvoteCount":0,"author":{"@type":"Person","name":"deepseek-v3.2"}}}}
← Назад к вопросам

Что такое свойство visibility?

1.8 Middle🔥 102 комментариев
#HTML и CSS

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Свойство visibility в CSS

Свойство visibility — это CSS-свойство, которое контролирует видимость элемента на веб-странице, определяя, отображается ли элемент в документе или скрыто. Оно играет ключевую роль в управлении визуальным представлением контента, особенно в динамических интерфейсах, где элементы могут появляться или исчезать в зависимости от действий пользователя или состояния приложения. В отличие от display: none, visibility позволяет скрывать элементы, сохраняя их пространство в макете документа, что важно для предотвращения "скачков" контента при изменении видимости.

Основные значения свойства visibility

Свойство visibility принимает несколько значений, которые определяют поведение элемента:

  • visible (значение по умолчанию): Элемент отображается как обычно. Он занимает место в потоке документа, и пользователь может взаимодействовать с ним.

    .element {
      visibility: visible;
    }
    
  • hidden: Элемент становится невидимым, но продолжает занимать место в макете. Это означает, что браузер резервирует пространство для элемента, как если бы он был видимым, но сам контент не отображается. Элемент также становится недоступным для взаимодействия (например, кликов или фокуса).

    .element {
      visibility: hidden;
    }
    
  • collapse: Это значение имеет разное поведение в зависимости от контекста. Для строк и столбцов таблицы (<tr>, <colgroup>, <tbody>, и т.д.) элемент скрывается, и его пространство освобождается (аналогично display: none). Для других элементов оно ведет себя как hidden. Это полезно при динамическом управлении таблицами, чтобы избежать искажения разметки.

    tr.collapsed {
      visibility: collapse;
    }
    
  • inherit: Элемент наследует значение visibility от своего родительского элемента. Это позволяет управлять видимостью через иерархию DOM.

    .child {
      visibility: inherit; /* Будет таким же, как у родителя */
    }
    

Практическое применение и примеры

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

<!DOCTYPE html>
<html lang="ru">
<head>
  <style>
    .box {
      visibility: visible;
      opacity: 1;
      transition: opacity 0.3s ease;
      padding: 20px;
      background: lightblue;
      margin: 10px;
    }
    .box.hidden {
      visibility: hidden;
      opacity: 0;
    }
  </style>
</head>
<body>
  <button onclick="toggleVisibility()">Переключить видимость</button>
  <div class="box" id="target">Этот элемент можно скрыть с плавным эффектом.</div>
  <script>
    function toggleVisibility() {
      const box = document.getElementById('target');
      box.classList.toggle('hidden');
    }
  </script>
</body>
</html>

В этом примере при скрытии элемента с помощью visibility: hidden и opacity: 0 сохраняется место в макете, что предотвращает резкие смещения окружающего контента. Переход по opacity создает плавное исчезновение, улучшая пользовательский опыт.

Отличия от display: none и opacity: 0

Понимание различий между visibility, display и opacity критично для выбора правильного подхода:

  • visibility: hidden vs display: none:

    • visibility: hidden скрывает элемент, но оставляет его в потоке документа — пространство сохраняется, и макет не пересчитывается.
    • display: none полностью удаляет элемент из потока документа — пространство не резервируется, и макет перестраивается, что может вызвать "скачки" интерфейса.
  • visibility: hidden vs opacity: 0:

    • opacity: 0 делает элемент прозрачным, но он остается видимым для браузера и продолжает занимать место (как и visibility: hidden). Однако, в отличие от visibility: hidden, элемент с opacity: 0 обычно остается доступным для взаимодействий, таких как события мыши, если не использовать дополнительные свойства (например, pointer-events: none).

Заключение

Свойство visibility — мощный инструмент в арсенале Frontend Developer, особенно при работе с динамическими интерфейсами, где важно управлять видимостью без нарушения макета. Его основные преимущества — сохранение пространства в документе и специфическое поведение collapse для таблиц. В реальных проектах visibility часто комбинируют с другими CSS-свойствами для создания сложных анимаций и состояний, обеспечивая отзывчивый и стабильный пользовательский интерфейс. Например, в React- или Vue-приложениях его можно использовать для условного рендеринга компонентов с плавными переходами, что улучшает восприятие контента.

Что такое свойство visibility? | PrepBro