- visibility
- Try it
- Syntax
- Values
- Accessibility concerns
- Interpolation
- Notes
- Formal definition
- visibility: visible ( hidden ) | Как сделать HTML элемент невидимым | CSS
- Чем отличаются visibility: hidden; от display: none; и opacity: 0;
- Как сделать текст невидимым на HTML странице
- visibility: collapse; для таблицы и нет. Есть ли разница?
- 16 комментариев:
- Cкрытие элементов в CSS
- Применение свойств display и visibility
- Прозрачность элемента
- Скрытая и видимая области
- За пределами блока
- Применение свойства overflow
- Курсор
visibility
В visibility показывает собственность CSS или скрывает элемент без изменения макета документа. Свойство также может скрывать строки или столбцы в .
Try it
Чтобы скрыть элемент и удалить его из макета документа , установите для свойства display значение none вместо использования visibility .
Syntax
/ * Значения ключевых слов * / visibility: visible; visibility: hidden; visibility: collapse; / * Глобальные значения * / visibility: inherit; visibility: initial; visibility: revert; visibility: revert-layer; visibility: unset;
Свойство visibility указывается в качестве одного из значений ключевых слов, перечисленных ниже.
Values
Видима коробка с элементами.
Поле элемента невидимо (не нарисовано), но все равно влияет на макет как обычно. Потомки элемента будут видны, если для них visibility установлена на visible . Элемент не может получить фокус (например, при навигации по индексам вкладок ).
collapse ключевое слово имеет различные эффекты для различных элементов:
- Для строк , столбцов, групп столбцов и групп строк строки или столбцы скрыты, а занимаемое ими пространство удаляется (как если бы display : none них не был применен к столбцу / строке Таблица). Однако размер других строк и столбцов по-прежнему рассчитывается так, как если бы присутствовали ячейки в свернутых строках или столбцах. Это значение позволяет быстро удалить строку или столбец из таблицы без принудительного пересчета ширины и высоты для всей таблицы.
- Свернутые элементы flex и аннотации ruby скрываются,а место,которое они занимали бы,удаляется.
- Для других элементов collapse обрабатывается так же, как hidden .
Accessibility concerns
Использование hidden значения visibility для элемента приведет к его удалению из дерева доступности . Это приведет к тому, что элемент и все его дочерние элементы больше не будут объявляться технологией чтения с экрана.
Interpolation
При анимации значения видимости интерполируются между visible и not-visible . Поэтому одно из начальных или конечных значений должно быть visible , иначе интерполяция невозможна. Значение интерполируется как дискретный шаг, где значения временной функции от 0 до 1 сопоставляются с visible и другими значениями временной функции (которые возникают только в начале/конце перехода или в результате cubic-bezier() функции со значениями y за пределами [0, 1]) сопоставляются с более близкой конечной точкой.
Notes
- Поддержка visibility: collapse отсутствует или частично неверен в некоторых современных браузерах. Это может быть неправильно обработано как visibility: hidden на элементах, кроме строк и столбцов таблицы.
- visibility: collapse может изменить макет таблицы, если таблица содержит вложенные таблицы внутри свернутых ячеек, если только visibility: visible явно не указана для вложенных таблиц.
Formal definition
visibility: visible ( hidden ) | Как сделать HTML элемент невидимым | CSS
Чем отличаются visibility: hidden; от display: none; и opacity: 0;
Рассмотрим в чём различие нижеперечисленных свойств, какое из них лучше подходит для того, чтобы сделать невидимый блок.
ВНИМАНИЕ! Не все примеры работают в браузере Google Chrome. Мне было лень прописывать свойству animation префиксы -webkit- .
С transform: scale(0, 0); элемент полностью сужен, а значит и недоступен. Он продолжает занимать то же пространство, что и при transform: scale(1, 1); .
С height: 0; коробка блока равна сумме margin + padding + border [см. боксовая модель HTML]. Если они не заданы, у блока останется его блочность, иначе говоря, строчные элементы, следующие после него, будут писаться с новой строки. Содержимое тега доступно, но, поскольку блок не имеет высоты, на него наезжают нижестоящие элементы (см. тут второй пример). Скрыть содержимое можно с помощью свойства overflow .
Свойство clip работает только в паре с position: absolute; . При clip: rect(0, 0, 0, 0); элемент обрезан со всех сторон и аналогичен display: none; .
При display: none; веб-страница формируется так, словно элемента вместе с его содержимым нет.
На CSS можно добиться поставленного результата несколькими способами. Так, например, отображения, аналогичного display: none; , коли добавить position: absolute; или position: fixed; .
Как сделать текст невидимым на HTML странице
И Google, и Яндекс наказывают за текст, который пользователи никогда не увидят. У них есть свои браузеры, а значит технология, которая позволяет выявить это. То есть нужно подумать каким образом и в каком случае скрытый текст будет виден посетителю веб-проекта, например, в результате нажатия на кнопку (см. как сделать такую кнопку) или в виде всплывающего сообщения.
Я так и не поняла приемлема ли ситуация, когда человек видит логотип, а поисковый робот надпись с названием сайта:
Следует учесть, что скрытый текст не всегда добавляется с целью обмана. Например, если на вашем сайте имеется контент, к которому сложно получить доступ поисковым системам (JavaScript, изображения, Flash-файлы и т. п.), вы можете добавить текстовое описание для этих элементов, чтобы сделать сайт более удобным для индексирования. [support.google.com]
Помимо способов, описанных выше, текст можно сделать прозрачным. Его можно выделить:
visibility: collapse; для таблицы и нет. Есть ли разница?
visibility: collapse; для всех элементов, кроме тегов таблицы работает аналогично visibility: hidden; , что полезно для долгого transition . Этим способом был реализован этот вариант таб-вкладок.
#raz div < visibility: collapse; transition: 0s 999999s; >#raz input:nth-of-type(1):focus ~ div < visibility: visible; transition: 0s; >#raz input:nth-of-type(2):focus ~ divисчезающий текст
visibility: collapse; для тегов tr , col , thead , tfoot , tbody перестраивает таблицу, при этом учитывая размеры удалённых элементов. Не поддерживается Гугл Хром. Для остальных могут быть проблемы, когда между ячейками одна и та же граница.
Если объединить ячейки столбца и строки
visibility: hidden; visibility: collapse; display: none;
16 комментариев:
Анонимный Любопытная информация. Спасибо. NMitra Пожалуйста. Возможно я что-то упустила — это всё, что смогла вспомнить. MagentaWAVE NMitra, вы уж меня если что простите, но я понять не могу смысл использовать для простого сокрытия объектов такие свойства как transition, animation и opacity. Зачем тогда display и visibility? И зачем для visibility:hidden — применять position:absolute если есть display:none?
И еще одно, мне почему-то кажется что если нужно точно указать «детеныша» элемента то вместо «+» лучше ставить «>», т.е. не #element:hover + div , а #element:hover > div (Посмотрите примеры в Хроме(последний), у меня чего-то ничего не происходит с DIVом при нажатии на кнопочки)
Кстати, не кажется ли вам, что id лучше применять к единичным элементам на странице, а если однотипных элементов много, то лучше пользоваться class?
Заранее спасибо. MagentaWAVE Простите, каюсь, про то что ничего не происходит погорячился — все нормально. Еще раз простите 🙂 NMitra Посмотрите меню http://shpargalkablog.ru/2012/06/vypadayushcheye-menyu-css.html (заключительный образец, где пункты выезжают). С display его не сделать. Грубо говоря, transition нужен для реализации эффектов, своего рода «украшательства».
Я навожу на элемент и у меня прячется div. Если поставить «>», то будет так: навожу на div и он прячется.
Однозначно, id на странице должен быть только один. В примерах я имела ввиду, что это один и тот же элемент.
Да мне и прощать нечего, это нормальные хорошие вопросы, кот орые могут возникнуть у каждого. MagentaWAVE Спасибо, за пояснения, но как и для чего используется transition я знаю, по-этому и интересовался сутью использования его для скрытия элемента.
«Я навожу на элемент и у меня прячется div. Если поставить «>», то будет так: навожу на div и он прячется.» — это если div не есть дочерним элементом, ну а если у вас в конструкции не один div, а два или три? То скрыт будет только лишь один — последний (если «+») и классы не спасают. Для примера конечно пойдет, но в реале придется «городить».
Cкрытие элементов в CSS
В CSS для скрытия элементов используется свойство display со значением none . При этом элемент не просто скрыт, он как бы удаляется со страницы вместе с содержимым. А его место автоматически занимают другие элементы.
Свойство visibility со значением hidden также скрывает элемент, но область ранее им занимаемая остается за ним: другие элементы не могут там располагаться. Значение collapse свойства visibility служит для скрытия элементов таблиц.
Свойства display и visibility применимы ко всем элементам.
Применение свойств display и visibility
Скроем пингвина разными методами.
Пингвин скрыт и его место занял текст.
Пингвин скрыт, но область, ранее им занимаемая, осталась за ним.
Прозрачность элемента
Свойство opacity предназначено для указания степени прозрачности элемента. Свойство принимает значение от 0 до 1 .
1 — это значение по умолчанию, ему соответствует нормальному отображению элемента — он непрозрачен.
Соответственно при значении 0 — элемент становится невидим — он прозрачен. Вот таким способом можно скрыть элемент.
Свойство применимо ко всем элементам
Полупрозрачный пингвин!
Полупрозрачный пингвин!
Скрытая и видимая области
Для абсолютно позиционированных элементов применимо свойство clip . Оно обозначает ту область элемента, которая будет видна. Оставшаяся часть отображаться не будет.
Необходимая (видимая) часть элемента определяется заданием координат с помощью ключевых слов top , right , bottom и left , которые указывают расстояния от краев элемента до границ видимой области.
Форма видимой области — это всегда прямоугольник.
За пределами блока
Свойство overflow используется в тех случаях, когда содержимое блока превышает его размеры.
Свойство применимо к блочным элементам.
По умолчанию, если содержимое блока превышает его размеры, то оно будет отображено полностью, но выйдет за границы блока.
При значении hidden свойства overflow будет отображена та часть содержимого, которая вместится в границы блока. Соответственно оставшаяся часть будет скрыта.
Также, при превышении габаритами контента размеров блока, можно воспользоваться полосами прокрутки: при значении scroll свойства overflow они будут присутствовать всегда, а при значении auto будут добавлены при необходимости.
Пингвин превышает ширину блока, поэтому выходит за его границу.
Применение свойства overflow
В следующем примере воспользуемся свойством overflow со значениями hidden и auto .
Курсор
Свойство cursor ничего не скрывает. Однако оно дает возможность изменить вид (тип) курсора при наведении мыши на элемент.
То есть (если можно так сказать) текущий курсор будет скрыт, а заданный появится.
Свойство применимо ко всем элементам.
Пингвина в примере скорее всего занимает какой-то вопрос. О чем он думает? Я хочу задать для пингвина курсор в виде стрелки со знаком вопроса, воспользовавшись свойством cursor со значением help .