Свойство CSS `visibility`
Baseline Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна в браузерах с июля 2015 года.
Свойство visibility CSS показывает или скрывает элемент, не изменяя макет документа. Это свойство также может скрывать строки или столбцы в <table>.
Чтобы одновременно скрыть элемент и удалить его из макета документа, задайте свойству display значение none вместо использования visibility.
Попробуйте
visibility: visible;
visibility: hidden;
visibility: collapse;
<section class="default-example" id="default-example">
<div class="example-container">
<div class="transition-all" id="example-element">Hide me</div>
<div>Item 2</div>
<div>Item 3</div>
</div>
</section>
.example-container {
border: 1px solid #c5c5c5;
padding: 0.75em;
width: 80%;
max-height: 300px;
display: flex;
}
.example-container > div {
background-color: rgb(0 0 255 / 0.2);
border: 3px solid blue;
margin: 10px;
flex: 1;
}
#example-element {
background-color: rgb(255 0 200 / 0.2);
border: 3px solid rebeccapurple;
}
Синтаксис
/* Keyword values */ visibility: visible; visibility: hidden; visibility: collapse; /* Global values */ visibility: inherit; visibility: initial; visibility: revert; visibility: revert-layer; visibility: unset;
Свойству visibility задаётся одно из перечисленных ниже ключевых значений.
Значения
-
visible - Блок элемента видим.
- Блок элемента невидим (не отображается), но по-прежнему участвует в макете как обычно. Потомки элемента будут видимы, если для них задано
visibilityсо значениемvisible. Элемент не может получать фокус (например, при перемещении по индексам табуляции). -
collapse - Ключевое слово
collapseпо-разному действует на разные элементы:- Для строк, столбцов, групп столбцов и групп строк
<table>соответствующие строки или столбцы скрываются, а занимаемое ими пространство удаляется (как если бы к столбцу или строке таблицы применялось). Однако размеры остальных строк и столбцов вычисляются так, как если бы ячейки в свёрнутых строках или столбцах присутствовали. Это значение позволяет быстро удалить строку или столбец из таблицы, не вызывая перерасчёт ширины и высоты всей таблицы.display: none - Свёрнутые flex-элементы и аннотации ruby скрываются, а занимаемое ими пространство удаляется.
- Для остальных элементов
collapseдействует так же, какhidden.
- Для строк, столбцов, групп столбцов и групп строк
Доступность
Использование для элемента значения visibility hidden удаляет его из дерева доступности. В результате программы экранного доступа перестанут озвучивать этот элемент и все его дочерние элементы.
Интерполяция
При анимации значения visibility интерполируются между видимым и невидимым состояниями. Поэтому одним из начальных или конечных значений должно быть visible, иначе интерполяция невозможна. Значение интерполируется дискретными шагами: значения функции сглаживания между 0 и 1 соответствуют visible, а остальные значения функции сглаживания (возникающие только в начале или конце перехода либо в результате функций cubic-bezier() со значениями y за пределами [0, 1]) соответствуют ближайшей конечной точке.
Примечания
- В некоторых современных браузерах поддержка
visibility: collapseотсутствует или работает некорректно. На элементах, отличных от строк и столбцов таблицы, это значение может обрабатываться не так, какvisibility: hidden. - Если свойство применено к строкам таблицы, содержащей ячейки (
<td>и<th>), охватывающие одновременно видимые и свёрнутые строки, ячейка может отображаться неожиданным образом. Если ячейка, охватывающая несколько строк, определена в свёрнутой строке, браузеры не отображают её — так же, как если бы для ячеек в последующих строках было заданоvisibility: collapse. Если ячейка определена в видимой строке и охватывает свёрнутую строку, её содержимое не перераспределяется, но отображение самой ячейки зависит от браузера. Большинство браузеров уменьшают блочный размер ячейки на блочный размер скрытой строки. Из-за этого содержимое может оказаться больше ячейки в направлении блочного размера. В зависимости от браузера переполняющее содержимое либо обрезается, как если бы было заданоoverflow: hidden, либо выходит за границы и перекрывает следующую строку, как если бы было заданоoverflow: visible. В других браузерах ячейка отображается так, как если бы строка не была свёрнута, а все остальные ячейки строки скрывались так, как если быvisibility: collapseзадавалось для отдельных ячеек, а не для самой строки. -
visibility: collapseможет изменить макет таблицы, если в её ячейках есть вложенные таблицы, которые свёрнуты, кроме случаев, когда для вложенных таблиц явно заданоvisibility: visible.
Формальное определение
| Исходное значение | visible |
|---|---|
| Применяется к | всем элементам |
| Наследуется | да |
| Вычисленное значение | как задано |
| Тип анимации | дискретный |
Формальный синтаксис
visibility =
visible |
hidden |
collapse
Примеры
Простой пример
HTML
<p class="visible">The first paragraph is visible.</p> <p class="not-visible">The second paragraph is NOT visible.</p> <p class="visible"> The third paragraph is visible. Notice the second paragraph is still occupying space. </p>
CSS
.visible {
visibility: visible;
}
.not-visible {
visibility: hidden;
}
Пример с таблицей
HTML
<table>
<tbody>
<tr>
<td>1.1</td>
<td class="collapse">1.2</td>
<td>1.3</td>
</tr>
<tr class="collapse">
<td>2.1</td>
<td>2.2</td>
<td>2.3</td>
</tr>
<tr>
<td>3.1</td>
<td>3.2</td>
<td>3.3</td>
</tr>
</tbody>
</table>
CSS
.collapse {
visibility: collapse;
}
table {
border: 1px solid red;
}
td {
border: 1px solid gray;
}
Спецификации
| Спецификация |
|---|
| Модуль CSS Display, уровень 3 # visibility |
| Масштабируемая векторная графика (SVG) 2 # VisibilityControl |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari на iOS | Samsung Internet | WebView для Android | WebView на iOS | |
visibility |
1 |
12 |
1 |
4 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
4.4 |
1 |
collapse |
1До Chrome 62 свойствоvisibility: collapse действует так же, как hidden, для элементов <tr>, <thead>, <tbody> и <tfoot>, flex-элементов и аннотаций ruby, оставляя пустой промежуток. Оно не действует на элементы <col> и <colgroup>.До Chrome 92 свойство visibility: collapse поддерживает элементы <tr>, <thead>, <tbody> и <tfoot>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. Оно не действует на элементы <col> и <colgroup>.Начиная с Chrome 92 свойство visibility: collapse поддерживает элементы <tr>, <thead>, <tbody>, <tfoot>, <col> и <colgroup>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. |
12В Edge 79–91 свойствоvisibility: collapse поддерживает элементы <tr>, <thead>, <tbody> и <tfoot>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. Оно не действует на элементы <col> и <colgroup>.Начиная с Edge 92 свойство visibility: collapse поддерживает элементы <tr>, <thead>, <tbody>, <tfoot>, <col> и <colgroup>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. |
1Firefox не скрывает границы при скрытии элементов<col> и <colgroup>, если задано border-collapse: collapse.До Firefox 88 свойство collapse не поддерживается для аннотаций ruby. |
4До Opera 49 свойствоvisibility: collapse действует так же, как hidden, для элементов <tr>, <thead>, <tbody> и <tfoot>, flex-элементов и аннотаций ruby, оставляя пустой промежуток. Оно не действует на элементы <col> и <colgroup>.До Opera 78 свойство visibility: collapse поддерживает элементы <tr>, <thead>, <tbody> и <tfoot>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. Оно не действует на элементы <col> и <colgroup>.Начиная с Opera 78 свойство visibility: collapse поддерживает элементы <tr>, <thead>, <tbody>, <tfoot>, <col> и <colgroup>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. |
18До Chrome для Android 62 свойствоvisibility: collapse действует так же, как hidden, для элементов <tr>, <thead>, <tbody> и <tfoot>, flex-элементов и аннотаций ruby, оставляя пустой промежуток. Оно не действует на элементы <col> и <colgroup>.До Chrome для Android 92 свойство visibility: collapse поддерживает элементы <tr>, <thead>, <tbody> и <tfoot>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. Оно не действует на элементы <col> и <colgroup>.Начиная с Chrome для Android 92 свойство visibility: collapse поддерживает элементы <tr>, <thead>, <tbody>, <tfoot>, <col> и <colgroup>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. |
4Firefox для Android не скрывает границы при скрытии элементов<col> и <colgroup>, если задано border-collapse: collapse.До Firefox для Android 88 свойство collapse не поддерживается для аннотаций ruby. |
10.1До Opera для Android 46 свойствоvisibility: collapse действует так же, как hidden, для элементов <tr>, <thead>, <tbody> и <tfoot>, flex-элементов и аннотаций ruby, оставляя пустой промежуток. Оно не действует на элементы <col> и <colgroup>.До Opera для Android 65 свойство visibility: collapse поддерживает элементы <tr>, <thead>, <tbody> и <tfoot>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. Оно не действует на элементы <col> и <colgroup>.Начиная с Opera для Android 65 свойство visibility: collapse поддерживает элементы <tr>, <thead>, <tbody>, <tfoot>, <col> и <colgroup>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. |
1.0До Samsung Browser 8.0 свойствоvisibility: collapse действует так же, как hidden, для элементов <tr>, <thead>, <tbody> и <tfoot>, flex-элементов и аннотаций ruby, оставляя пустой промежуток. Оно не действует на элементы <col> и <colgroup>.До Samsung Browser 16.0 свойство visibility: collapse поддерживает элементы <tr>, <thead>, <tbody> и <tfoot>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. Оно не действует на элементы <col> и <colgroup>.Начиная с Samsung Browser 16.0 свойство visibility: collapse поддерживает элементы <tr>, <thead>, <tbody>, <tfoot>, <col> и <colgroup>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. |
4.4До WebView для Android 62 свойствоvisibility: collapse действует так же, как hidden, для элементов <tr>, <thead>, <tbody> и <tfoot>, flex-элементов и аннотаций ruby, оставляя пустой промежуток. Оно не действует на элементы <col> и <colgroup>.До WebView для Android 92 свойство visibility: collapse поддерживает элементы <tr>, <thead>, <tbody> и <tfoot>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. Оно не действует на элементы <col> и <colgroup>.Начиная с WebView для Android 92 свойство visibility: collapse поддерживает элементы <tr>, <thead>, <tbody>, <tfoot>, <col> и <colgroup>. Для flex-элементов и аннотаций ruby оно действует так же, как hidden, оставляя пустой промежуток. |
|||
hidden |
1 |
12 |
1 |
15 |
1 |
18 |
4 |
14 |
1 |
1.0 |
4.4 |
1 |
visible |
1 |
12 |
1 |
15 |
1 |
18 |
4 |
14 |
1 |
1.0 |
4.4 |
1 |
См. также
display- Атрибут
visibilityв SVG
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/visibility