Загрузка...
Загрузка...
visibility: hidden и display: none — это два способа скрыть элемент в CSS, но они работают по-разному и имеют разные последствия для макета страницы.
display: none и display: blockvisibility<div class="container">
<div class="box">Box 1</div>
<div class="box hidden-display">Box 2 (display: none)</div>
<div class="box">Box 3</div>
</div>
<div class="container">
<div class="box">Box 1</div>
<div class="box hidden-visibility">Box 2 (visibility: hidden)</div>
<div class="box">Box 3</div>
</div>
.box {
width: 100px;
height: 100px;
background-color: #3498db;
margin: 10px;
}
.hidden-display {
display: none;
}
.hidden-visibility {
visibility: hidden;
}
Результат:
display: none: Box 2 полностью исчезает, Box 3 сдвигается на место Box 2visibility: hidden: Box 2 невидим, но его место остается пустым, Box 3 не сдвигаетсяИспользуйте display: none, когда:
/* Модальное окно */
.modal {
display: none;
}
.modal.active {
display: block;
}
/* Мобильное меню */
.mobile-menu {
display: none;
}
@media (max-width: 768px) {
.mobile-menu {
display: block;
}
}
Используйте visibility: hidden, когда:
/* Плавное появление/исчезновение */
.fade-element {
visibility: hidden;
opacity: 0;
transition: visibility 0.3s, opacity 0.3s;
}
.fade-element.show {
visibility: visible;
opacity: 1;
}
/* Сохранение места для скрытого контента */
.tooltip {
visibility: hidden;
position: absolute;
}
.tooltip:hover {
visibility: visible;
}
.invisible-opacity {
opacity: 0;
/* Элемент невидим, но занимает место и остается интерактивным */
}
Разница:
opacity: 0 — элемент невидим, но остается интерактивным (можно кликать)visibility: hidden — элемент невидим и не интерактивен.sr-only {
position: absolute;
left: -9999px;
/* Элемент скрыт визуально, но доступен для скринридеров */
}
Этот метод используется для скрытия элементов от глаз, но оставления их доступными для скринридеров (screen readers).
| Свойство | Занимает место | Интерактивен | Доступен для скринридеров | Можно анимировать |
|---|---|---|---|---|
display: none | Нет | Нет | Нет | Нет |
visibility: hidden | Да | Нет | Нет | Да |
opacity: 0 | Да | Да | Да | Да |
/* Карточка с плавным появлением */
.card {
visibility: hidden;
opacity: 0;
transform: translateY(20px);
transition: visibility 0.3s, opacity 0.3s, transform 0.3s;
}
.card.visible {
visibility: visible;
opacity: 1;
transform: translateY(0);
}
/* Полностью скрытый элемент (не занимает места) */
.hidden {
display: none;
}
Важно:
Выбирайте метод скрытия в зависимости от ваших потребностей: используйте display: none для полного удаления из макета, visibility: hidden для сохранения места, и opacity: 0 если элемент должен оставаться интерактивным.