visibility — CSS — Дока
- Кратко
- Пример
- Как пишется
- Подсказки
- На практике
- Дмитрий Семиградский советует
- Алёна Батицкая советует
Кратко
Скопировано
Свойство visibility
прячет элемент от глаз пользователя. Практически так же, как это делает opacity
. И в том, и в другом случае элемент не виден, но механизм работы этих свойств разный.
Если при помощи opacity
можно гибко изменять прозрачность элемента и делать его, например, видимым на 33%, то свойство visibility
имеет только два состояния: видимый и невидимый.
Пример
Скопировано
<article> <p>Эрнесту Хемингуэю приписывают авторство...</p> <p>Многие писатели упражнялись в жанре сверхмалой прозы...</p> <p>В этом жанре можно написать и автобиографию...</p></article>
<article> <p>Эрнесту Хемингуэю приписывают авторство...</p> <p>Многие писатели упражнялись в жанре сверхмалой прозы...</p> <p>В этом жанре можно написать и автобиографию...</p> </article>
.visibility-hidden { visibility: hidden;}
.visibility-hidden {
visibility: hidden;
}
Открыть демо в новой вкладкеОбратите внимание, что скрытый параграф всё равно влияет на поток документа и занимает отведённое ему место.
Как пишется
Скопировано
У свойства visibility
всего два используемых значения:
visible
— значение по умолчанию, элемент видим.hidden
— элемент не виден на странице, но занимает отведённое ему место, влияет на поток документа.
Важный момент: при значении hidden
элемент становится невидимым для программ чтения с экрана (скринридеров), а также на него нельзя будет попасть при навигации с помощью клавиатуры. Стоит помнить об этом при разработке, если вам важна доступность сайта.
Ещё есть устаревшее значение collapse
, которое нужно только при работе с таблицами. Современными браузерами оно не поддерживается и обрабатывается как hidden
.
Так же можно применять в качестве значения стандартные ключевые слова: inherit
, initial
и unset
.
Подсказки
Скопировано
💡 Свойство нельзя анимировать при помощи transform
😒
💡 Спрятанный элемент скрывается из так называемого accessability tree — становится недоступен для скринридеров и не может получить фокус при перемещении с помощью клавиатуры.
На практике
Скопировано
Дмитрий Семиградский советует
Скопировано
🛠 Важная особенность свойства, что оно, в отличие от display
или opacity
, не просто прячет родителя, а наследуется на все дочерние элементы. Это значит, что это поведение можно переписать и вложенный элемент с
visibility
будет видно. Это можно использовать для кастомизации разметки, сгенерированной сторонней библиотекой:
Алёна Батицкая советует
Скопировано
🛠 Обычно, когда я хочу точно-точно спрятать элемент, чтобы он не получал фокус ни при каких обстоятельствах и не был виден даже скринридерам, но при этом хочу плавно показать его по какому-то триггеру, то указываю одновременно несколько transition
:
.parent { padding: 15px; border: 1px solid currentColor;}.block { visibility: hidden; opacity: 0; transition: visibility 0s linear 300ms, opacity 300ms;}.parent:hover .block { visibility: visible; opacity: 1; transition: visibility 0s linear 0s, opacity 300ms;}
.parent {
padding: 15px;
border: 1px solid currentColor;
}
.
block {
visibility: hidden;
opacity: 0;
transition: visibility 0s linear 300ms, opacity 300ms;
}
.parent:hover .block {
visibility: visible;
opacity: 1;
transition: visibility 0s linear 0s, opacity 300ms;
}
<div> <div>Я простой текст. Наводишь курсор и я показываюсь</div></div>
<div>
<div>Я простой текст. Наводишь курсор и я показываюсь</div>
</div>
Открыть демо в новой вкладкеЕсли вы нашли ошибку, отправьте нам пул-реквест!
Во время отправки формы что-то пошло не так. Попробуйте ещё раз?
←
opacity
ctrl + alt + ←
→
clip
ctrl + alt + →
Порой при разработке веб-страниц иногда требуется «спрятать» конкретные элементы. Вы, конечно, можете просто удалить эти элементы из HTML-разметки. Но это не выход из положения. Чтобы сохранить элемент, но скрыть его, необходимо использовать CSS или HTML hidden.
Два самых распространенных способа скрыть элемент — это свойства CSS «display» и «visibility». На первый взгляд, кажется, что оба свойства делают одно и то же. Но каждое из них имеет свои отличительные особенности, о которых следует знать.
При использовании visibility: hidden элемент не отображается в браузере. Но скрытый элемент все еще занимает место в дизайне страницы. Это выглядит так, будто вы сделали элемент невидимым, но он все еще остается на своем месте и занимает пространство.
Если вы размещаете на веб-странице тег DIV и используете CSS, чтобы придать ему размер 100 на 100 пикселей, свойство visibility: hidden делает блок невидимым на экране. Но текст, следующий за ним, будет размещаться таким образом, словно этот блок все еще присутствует на странице.
Я бы использовал hidden HTML input, чтобы сначала спрятать этот элемент, а затем вернуть его обратно при наведении курсора. Это один из примеров использования этого свойства.
Display
В отличие от свойства visibility, при использовании которого элемент остается в потоке документа, display: none полностью убирает элемент из документа. Он больше не занимает места даже несмотря на то, что он еще находится в исходном коде. Элемент действительно удаляется из потока документа. Но если вы неправильно используете это свойство, оно может полностью разрушить страницу!
Я часто использую display: none, когда тестирую веб-страницу. Когда мне нужно ненадолго скрыть какую-либо область страницы, чтобы я смог протестировать другую. Но необходимо помнить, что скрытый элемент нужно вернуть обратно на веб-страницу до того, как она будет добавлена на сайт. Сделать это нужно потому, что элемент, удаленный из потока документа данным методом не виден поисковикам. В прошлом этот способ использовался хакерами, чтобы влиять на рейтинг в поисковых системах. Поэтому элементы hide HTML, которые не отображаются, могут восприниматься Google как негативный сигнал.
Свойство display:none полезно при создании адаптивного сайта, в котором присутствуют элементы, доступные только для одного размера экрана, но не для других.
Также можно использовать display: none, чтобы скрыть элемент, а затем вернуть его обратно при помощи медиа-запросов. Это корректное использование свойства display: none, поскольку вы не пытаетесь скрыть что-либо с целью совершения нарушений.
Дайте знать, что вы думаете по этой теме материала в комментариях. За комментарии, отклики, подписки, лайки, дизлайки огромное вам спасибо!
Сергей Бензенкоавтор-переводчик
Видимость — Tailwind CSS
Основное использование
Делание элементов невидимыми
Использовать невидимый
, чтобы скрыть элемент, но сохранить его место в DOM, влияя на расположение других элементов (сравните с скрытым
из показать документацию).
01
02
03
<дел> <дел>01дел> <дел>02дел>03
Сворачиваемые элементы
Используйте свернуть
, чтобы скрыть строки таблицы, группы строк, столбцы и группы столбцов, как если бы для них было установлено значение
, но без влияния на размер других строк и столбцов.
Это позволяет динамически переключать строки и столбцы, не влияя на макет таблицы.
Показаны все строки
Счет № | Клиент | Сумма |
---|---|---|
#100 | Издательство подвесок | 2000,00 $ |
#101 | Промышленное сглаживание по Крюгеру | 545,00 $ |
#102 | Дж. Петерман | 10 000,25 долл. США |
Скрытие строки с помощью «свернуть»
Счет № | Клиент | Сумма |
---|---|---|
#100 | Издательство подвесок | 2000,00 $ |
#101 | Промышленное сглаживание по Крюгеру | 545,00 $ |
#102 | Дж.![]() | 10 000,25 долл. США |
Скрытие строки с помощью `hidden`
Счет № | Клиент | Сумма |
---|---|---|
#100 | Издательство подвесок | 2000,00 $ |
#101 | Промышленное сглаживание по Крюгеру | 545,00 $ |
#102 | Дж. Петерман | 10 000,25 долл. США |
<таблица>Счет № Клиент Сумма #100 Публикация кулонов 2000 долларов США #101 Промышленное сглаживание Крюгера $545,00 таблица> #102 Дж. Питерман
10 000,25 долл. США
Сделать элементы видимыми
Используйте visible
, чтобы сделать элемент видимым. Это в основном полезно для отмены невидимой утилиты
при разных размерах экрана.
01
02
03
<дел> <дел>01дел> <дел>02дел>03