Какое свойство позволяет спрятать элемент, но сохранить занимаемое им пространство?
Продвинутые темы
Спрятать элемент, сохранив занимаемое место, позволяет свойство `visibility: hidden`. Элемент невидим, но остаётся в потоке (место сохраняется).
visibility: hidden
.el { visibility: hidden; }- Элемент невидим, но занимает своё место в потоке (соседи не сдвигаются).
- Не реагирует на клики (некликабелен).
Сравнение способов скрытия
visibility: hidden — сохраняет место
.el { visibility: hidden; } /* невидим, место занято */display: none — НЕ сохраняет место
.el { display: none; } /* исчез из потока, место не занимает */opacity: 0 — сохраняет место, но кликабелен
.el { opacity: 0; } /* прозрачен, место занято, РЕАГИРУЕТ на клики */Таблица различий
- `visibility: hidden` — Видимость: нет; Место в потоке: сохраняет; Клики: нет; В render tree: да
- `display: none` — Видимость: нет; Место в потоке: не занимает; Клики: нет; В render tree: нет
- `opacity: 0` — Видимость: нет; Место в потоке: сохраняет; Клики: да; В render tree: да
Когда что использовать
- Скрыть, сохранив место (чтобы layout не «прыгал») →
visibility: hidden. - Убрать полностью →
display: none. - Скрыть, но оставить кликабельным/анимируемым →
opacity: 0.
Коротко для собеседования
Спрятать элемент, сохранив место, — visibility: hidden (невидим, но занимает место в потоке, некликабелен). Отличие от display: none (убирает из потока, место не занимает) и opacity: 0 (прозрачен, место занято, но кликабелен). Используют, когда layout не должен «прыгать» при скрытии.