CSS visibility — сховати елемент: hidden, visible, collapse


Властивість visibility визначає, чи буде елемент приховано. Властивість призначена для відображення або приховування елемента, включаючи рамку навколо нього і фон. Під час приховування елементу, хоча він і стає прихованим, місце, яке він займає, залишається за ним. Якщо передбачається вивід різних елементів в одне і те ж місце екрану, для обходу цієї особливості слід використовувати абсолютне позиціонування або скористатися властивістю display.

Властивість visibility

Властивість visibility також приховує рядки і колонки таблиці (<table>). Якщо треба не тільки приховати елемент, але й також повністю прибрати його з потоку - використовуйте властивість display.

автор: Svitlana

visibility чи display: none?

Три способи сховати елемент роблять різні речі:

  • visibility: hidden — елемент невидимий, але місце за ним лишається: сусіди не зсуваються;
  • display: none — елемента ніби немає: місце звільняється, макет перебудовується;
  • opacity: 0 — елемент прозорий, але живий: далі ловить кліки й фокус.

visibility успадковується, і в цьому її унікальний трюк: усередині прихованого батька можна показати окрему дитину, поставивши їй visibility: visible. Із display: none такого не зробити.

Значення collapse призначене для рядків і колонок таблиць: рядок зникає, як із display: none, але браузер не перераховує ширину колонок — таблиця не смикається.

Для екранних читачів visibility: hidden ховає елемент так само надійно, як і візуально. Якщо сховати треба лише візуально, а читачам лишити (підписи, службові заголовки) — це окремий прийом .visually-hidden через clip-path і розмір 1×1 піксель.

автор: NagarD

Порада

Навіть невидимі елементи займають місце на сторінці. Використовуй css властивість display для створення невидимих елементів, які не займають простір на макеті сторінки, або використайте абсолютне позиціонування, щоб накласти новий елемент над прихованим!

автор: Svitlana
Нотатка

Специфікація flexbox передбачає, що visibility: collapse; діє на гнучкий елемент так як і на рядок або колонку таблиці.

автор: Svitlana

Синтаксис

visibility: visible|hidden|collapse|initial|inherit;

Властивість visibility може отримувати 5 значень:

visible

Відображає елемент як видимий.

автор: Svitlana

hidden

Елемент стає невидимим. На відмінно від властивості display:none, продовжує займати місце на макеті сторінки.

автор: Svitlana

collapse

Тільки для таблиць. Робить комірку чи рядок невидимою, при цьому, на відмінно від властивості display:none макет таблиці не змінюється.

Це значення не підтримується браузером Internet Explorer.

Якщо це значення застосовується не до таблиці, то результат його використання буде таким же, як hidden.

автор: Svitlana

initial

Встановлює властивість у значення без задання.

автор: Svitlana

inherit

Вказує на спадковість властивостей від свого батьківського елемента.

автор: Svitlana

Значення без задання: visible
Наслідує: Так
Анімується: Так
JavaScript синтаксис: object.style.visibility="hidden"

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 4 12 4
visible, hidden 1.0 1.0 1.0 4.0 12.0 4.0
collapse 1.0 1.0 4.0 9.5 12.0 8.0
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
visible, hidden 1.0 1.0 1.0
collapse Не підтримується 1.0 4.0

Приклади

+ запропонувати свій приклад у пісочниці

Демонстрація роботи властивості

HTML

<div class="info">
	<p>За допомогою властивості <code>visibility</code> ми можемо визначити, чи буде елемент приховано.</p>
	<p>Нижче, для контейнера другого блоку (жовтого кольору) задано значення <em>hidden</em>, що приховало його зі сторінки.</p>
</div>

<div class="wrapper">
	<div class="block one">
		<div class="content">
			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
			tempor incididunt ut labore et dolore magna aliqua.</p>
		</div>
	</div>
	<div class="block two">
		<div class="content">
			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
			tempor incididunt ut labore et dolore magna aliqua.</p>
		</div>
	</div>
</div>

CSS

* {
	box-sizing: border-box;
}

body {
	font-family: monospace;
	font-size: 17px;
}

.info {
	padding: 4px 6px;
}

code {
	font-weight: 700;
	color: #444;
	border-bottom: 2px solid #666;
}

.wrapper {
	display: flex;
	justify-content: space-around;
}

.block {
	width: 25%;
	height: 150px;
	background-color: gold;
	position: relative;
	font-size: 13px;
	padding: 4px;
}

.content {
	visibility: visible;
}

.block.two {
	visibility: hidden;
}
автор: Svitlana

Приклад роботи властивості visibility

HTML

<div class="block">
  <span>Тицяй</span>
  <span>на</span>
  <span>елементи,</span>
  <span>щоб</span>
  <span>змінити</span>
  <span>значення</span>
  <span>застосовані</span>
  <span>для</span>
  <span>властивості</span>
  <span>visibility...</span>
</div>

CSS

.block {
  background-color: #eee;
  padding: 16px;
  line-height: 1.4;
  font-family: monospace;
  font-size: 20px;
}

.block span {
  display: inline-block;
  padding: 2px 8px;
  background-color: orange;
  margin-bottom: 8px;
  border-radius: 8px;
  color: #252525;
  cursor: pointer;
  transition: all 0.1s linear;
  visibility: visible;
}

.block span:hover {
  background-color: gray;
  color: #fff;
}

JS

window.onclick = function (e) {
  e.target.style.visibility = 'hidden';
};
//# sourceURL=pen.js
автор: Svitlana

Простий приклад, який показує як сховати елемент за допомогою властивості visibility.

HTML

<p>Секретне слово: <span>слово</span> (але Ви його не побачите!)</p>

CSS

body {
  font-family: sans-serif;
  font-size: 25px;
  color: #666;
  text-align: center;
  padding-top: 36px;
  line-height: 1.4;
}

span {
  visibility: hidden;
}
автор: Svitlana

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід