- visibility: visible ( hidden ) | Как сделать HTML элемент невидимым | CSS
- Чем отличаются visibility: hidden; от display: none; и opacity: 0;
- Как сделать текст невидимым на HTML странице
- visibility: collapse; для таблицы и нет. Есть ли разница?
- 16 комментариев:
- Как скрыть столбцы в таблице HTML?
- 8 ответов
- Как скрыть столбцы в таблице HTML?
- 8 ответов
- visibility
- Try it
- Syntax
- Values
- Accessibility concerns
- Interpolation
- Notes
- Formal definition
- Formal syntax
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, а два или три? То скрыт будет только лишь один — последний (если «+») и классы не спасают. Для примера конечно пойдет, но в реале придется «городить».
Как скрыть столбцы в таблице HTML?
Я создал таблицу в ASPX. Я хочу скрыть один из столбцов на основе требования, но в здании таблицы HTML нет атрибута типа visible . Как я могу решить свою проблему?
8 ответов
@office302 office302 Применять этот стиль только для первого тд? Или вы хотите использовать только CSS — это можно сделать примерно так td:first-child < display:none; >
@Anuraj следует отметить, что: поддерживаются первый ребенок и т. Д.> IE 11 и Edge, в любом случае, хороший
Вы можете использовать селектор nth-child CSS, чтобы скрыть целый столбец:
Это работает в предположении, что ячейка столбца N (будь то a th или td ) всегда является N-м дочерним элементом своей строки.
Если вы хотите, чтобы номер столбца был динамическим, вы можете сделать это с помощью querySelectorAll или любой структуры, представляющей аналогичную функциональность, например jQuery здесь:
$('#myTable tr > *:nth-child(2)').hide();
@RickSmith Хороший вопрос. Обновил мой пост, чтобы избежать проблемы другим способом (используя дочерний селектор).
вы также можете использовать:
Разница между ними, которая «скрыта» скрывает ячейку, но она удерживает пробел, но с «коллапсом» пространство не удерживается, как отображение: none. Это важно при удалении целого столбца или строки.
Я обнаружил, что для тегов div коллапс также будет занимать место. Для тегов div вы должны использовать display: none; для того, чтобы действительно развалиться и не удерживать пространство.
visibility: collapse разработан специально для обработки показа / скрытия ячеек, поскольку при пересчете ширины / высоты ячейки между ними и display:none существует разница display:none . См. Developer.mozilla.org/en-US/docs/Web/CSS/visibility#Values
Кос ответ почти прав, но может иметь повреждающие побочные эффекты. Это вернее:
#myTable tr td:nth-child(1), #myTable th:nth-child(1)
CSS (каскадные таблицы стилей) будут атрибутами каскад для всех его дочерних элементов. Это означает, что *:nth-child(1) скроет первый td каждого tr И скрыть первый элемент всех детей td . Если у любого из ваших td есть вещи, такие как кнопки, значки, входы или выделения, первый будет скрыт (woops!).
Даже если у вас в настоящее время нет вещей, которые будут скрыты, отразите свое разочарование в будущем, если вам нужно добавить его. Не наказывайте свое будущее, подобное тому, что будет больно отлаживать!
Мой ответ только скроет первые td и th на всех tr в #myTable , сохраняя ваши другие элементы в безопасности.
Как скрыть столбцы в таблице HTML?
Я создал таблицу в ASPX. Я хочу скрыть один из столбцов на основе требования, но в здании таблицы HTML нет атрибута типа visible . Как я могу решить свою проблему?
8 ответов
@office302 office302 Применять этот стиль только для первого тд? Или вы хотите использовать только CSS — это можно сделать примерно так td:first-child < display:none; >
@Anuraj следует отметить, что: поддерживаются первый ребенок и т. Д.> IE 11 и Edge, в любом случае, хороший
Вы можете использовать селектор nth-child CSS, чтобы скрыть целый столбец:
Это работает в предположении, что ячейка столбца N (будь то a th или td ) всегда является N-м дочерним элементом своей строки.
Если вы хотите, чтобы номер столбца был динамическим, вы можете сделать это с помощью querySelectorAll или любой структуры, представляющей аналогичную функциональность, например jQuery здесь:
$('#myTable tr > *:nth-child(2)').hide();
@RickSmith Хороший вопрос. Обновил мой пост, чтобы избежать проблемы другим способом (используя дочерний селектор).
вы также можете использовать:
Разница между ними, которая «скрыта» скрывает ячейку, но она удерживает пробел, но с «коллапсом» пространство не удерживается, как отображение: none. Это важно при удалении целого столбца или строки.
Я обнаружил, что для тегов div коллапс также будет занимать место. Для тегов div вы должны использовать display: none; для того, чтобы действительно развалиться и не удерживать пространство.
visibility: collapse разработан специально для обработки показа / скрытия ячеек, поскольку при пересчете ширины / высоты ячейки между ними и display:none существует разница display:none . См. Developer.mozilla.org/en-US/docs/Web/CSS/visibility#Values
Кос ответ почти прав, но может иметь повреждающие побочные эффекты. Это вернее:
#myTable tr td:nth-child(1), #myTable th:nth-child(1)
CSS (каскадные таблицы стилей) будут атрибутами каскад для всех его дочерних элементов. Это означает, что *:nth-child(1) скроет первый td каждого tr И скрыть первый элемент всех детей td . Если у любого из ваших td есть вещи, такие как кнопки, значки, входы или выделения, первый будет скрыт (woops!).
Даже если у вас в настоящее время нет вещей, которые будут скрыты, отразите свое разочарование в будущем, если вам нужно добавить его. Не наказывайте свое будущее, подобное тому, что будет больно отлаживать!
Мой ответ только скроет первые td и th на всех tr в #myTable , сохраняя ваши другие элементы в безопасности.
visibility
The visibility CSS property shows or hides an element without changing the layout of a document. The property can also hide rows or columns in a .
Try it
To both hide an element and remove it from the document layout, set the display property to none instead of using visibility .
Syntax
/* Keyword values */ visibility: visible; visibility: hidden; visibility: collapse; /* Global values */ visibility: inherit; visibility: initial; visibility: revert; visibility: revert-layer; visibility: unset;
The visibility property is specified as one of the keyword values listed below.
Values
The element box is visible.
The element box is invisible (not drawn), but still affects layout as normal. Descendants of the element will be visible if they have visibility set to visible . The element cannot receive focus (such as when navigating through tab indexes).
The collapse keyword has different effects for different elements:
- For rows, columns, column groups, and row groups, the row(s) or column(s) are hidden and the space they would have occupied is removed (as if display : none were applied to the column/row of the table). However, the size of other rows and columns is still calculated as though the cells in the collapsed row(s) or column(s) are present. This value allows for the fast removal of a row or column from a table without forcing the recalculation of widths and heights for the entire table.
- Collapsed flex items and ruby annotations are hidden, and the space they would have occupied is removed.
- For other elements, collapse is treated the same as hidden .
Accessibility concerns
Using a visibility value of hidden on an element will remove it from the accessibility tree. This will cause the element and all its descendant elements to no longer be announced by screen reading technology.
Interpolation
When animated, visibility values are interpolated between visible and not-visible. One of the start or ending values must therefore be visible or no interpolation can happen. The value is interpolated as a discrete step, where values of the easing function between 0 and 1 map to visible and other values of the easing function (which occur only at the start/end of the transition or as a result of cubic-bezier() functions with y values outside of [0, 1]) map to the closer endpoint.
Notes
- Support for visibility: collapse is missing or partially incorrect in some modern browsers. It may not be correctly treated like visibility: hidden on elements other than table rows and columns.
- visibility: collapse may change the layout of a table if the table has nested tables within the cells that are collapsed, unless visibility: visible is specified explicitly on nested tables.