Этот вопрос очень мертвый, но я добавляю комментарий, потому что недавно я оказался в ситуации, в которой могут столкнуться другие. Мне нужно было скрыть элемент, чтобы он сохранил егоoffsetTop , и я display:noneдолжен был установить offsetTopзначение 0. Мое решение здесь состояло в том, чтобы использовать visibility: hiddenзатем установить ширину и высоту на 0. Как только мне нужно было сделать элемент видимым снова, я удалил три атрибута, используя Javascript. Немного хакерское решение, но оно хорошо работает почти во всех случаях использования.
rappatic
Ответы:
302
Попробуйте установить, display:noneчтобы скрыть и установить, display:blockчтобы показать.
не возможно удалить элемент из человека. используя эту опцию также. Прочитайте вопрос
Пранай Рана
26
Не все элементы должны быть display: block, некоторые должны быть установлены display: inline(например, <span>или <a>или <img>элементы DOM).
Мауро
2
@pranay вопрос говорит, чтобы скрыть их, чтобы не удалить их из DOM.
Мауро
6
@pranay: Вопрос не очень хорошо выражен, но Huusom решает проблему, с которой сталкивается пользователь.
Клаудио Реди
1
Улучшение: создайте класс CSS hiddenс именем display: none. Добавьте класс к элементу, чтобы скрыть его, удалить его показать. При удалении его displayсвойство восстанавливается до элемента по умолчанию.
К сожалению, это не работает для меня - с использованием дисплея: никто не оставляет пустое место.
mbuc91
15
Использовать display:noneэто хороший вариант, просто удалить элемент, НО он также будет удален для программ чтения с экрана . Есть также обсуждения, если это влияет на SEO. Есть хорошая, короткая статья на эту тему в A List Apart
Если вы действительно хотите скрыть, а не удалить элемент, лучше используйте:
div {
position: absolute;
left:-999em;}
Таким образом, это может быть также прочитано программами чтения с экрана.
Единственным недостатком этого метода является то, что этот DIV фактически отображается, и это может повлиять на производительность , особенно на мобильных телефонах.
если вы решите позиционировать что-то абсолютное, с которым вы можете в большинстве случаев работать visibility: hidden;, допустим, у вас есть другие абсолютные элементы, у которых не будет конфликта для пространства, только конфликт z-index. Просто чтобы скрыть элемент, с которым я бы пошелvisibility
Dejan.S
10
Смотри, вместо того, чтобы visibility: hidden;использовать display: none;. Первый вариант будет скрыт, но по- прежнему занимает место, а второй параметр будет скрыт и не займет никакого места.
Ответ на этот вопрос гласит: использовать display: none и display: block, но это не помогает тем, кто пытается использовать CSS-переходы для отображения и скрытия содержимого с помощью свойства видимости.
Это также сводило меня с ума, потому что использование дисплея убивает любые CSS-переходы.
Одним из решений является добавление этого в класс, который использует видимость:
overflow:hidden
Чтобы это работало, это зависит от макета, но оно должно содержать пустой контент внутри div, в котором он находится.
Если вы играете с видимостью: скрытый и видимость: видимый и установите свое положение элемента: исправлено, у вас не будет этой проблемы, это похоже на магию
Джон Балвин Ариас
6
дисплей: ни один не решение, это полностью скрывает элементы со своим пространством.
Это полезно при работе с анимацией. Потому что мы скрываем элемент за пределами видимой области, используя что-то вроде transform: translateX(-100%). Мы не хотимdisplay: none
zhuhang.jasper
3
display:noneспрятаться и установить, display:blockчтобы показать.
Он просит удалить его визуально, «как будто их нет в DOM». Не об удалении их из фактического DOM.
Арве Систад
вопрос состояния не удалять их из DOM только для того, чтобы они исчезли. as though they are not in the DOM at all (but without actually removing them from the DOM)
Мауро
@pranay: visibility: hiddenтолько останавливает отображение содержимого, но по-прежнему использует вертикальное / горизонтальное пространство, display: none удаляет вертикальное / горизонтальное пространство для элемента.
Мауро
Нет, это не так. видимость: скрытая; делает элемент невидимым, но все равно занимает место. дисплей: нет; заставляет документ вести себя так, как будто его там никогда не было.
Олли Ходжсон
1
Затем удалите этот ответ.
BalusC
2
Вот другой способ вернуть их после отображения: нет. не используйте display: block / inline и т. д. Вместо этого (если используется javascript) установите для свойства css display значение '' (т. е. пустое)
offsetTop
, и яdisplay:none
должен был установитьoffsetTop
значение 0. Мое решение здесь состояло в том, чтобы использоватьvisibility: hidden
затем установить ширину и высоту на 0. Как только мне нужно было сделать элемент видимым снова, я удалил три атрибута, используя Javascript. Немного хакерское решение, но оно хорошо работает почти во всех случаях использования.Ответы:
Попробуйте установить,
display:none
чтобы скрыть и установить,display:block
чтобы показать.источник
display: block
, некоторые должны быть установленыdisplay: inline
(например,<span>
или<a>
или<img>
элементы DOM).hidden
с именемdisplay: none
. Добавьте класс к элементу, чтобы скрыть его, удалить его показать. При удалении егоdisplay
свойство восстанавливается до элемента по умолчанию.вместо этого используйте стиль
источник
Использовать
display:none
это хороший вариант, просто удалить элемент, НО он также будет удален для программ чтения с экрана . Есть также обсуждения, если это влияет на SEO. Есть хорошая, короткая статья на эту тему в A List ApartЕсли вы действительно хотите скрыть, а не удалить элемент, лучше используйте:
Таким образом, это может быть также прочитано программами чтения с экрана.
Единственным недостатком этого метода является то, что этот DIV фактически отображается, и это может повлиять на производительность , особенно на мобильных телефонах.
источник
visibility: hidden;
, допустим, у вас есть другие абсолютные элементы, у которых не будет конфликта для пространства, только конфликтz-index
. Просто чтобы скрыть элемент, с которым я бы пошелvisibility
Смотри, вместо того, чтобы
visibility: hidden;
использоватьdisplay: none;
. Первый вариант будет скрыт, но по- прежнему занимает место, а второй параметр будет скрыт и не займет никакого места.источник
Ответ на этот вопрос гласит: использовать display: none и display: block, но это не помогает тем, кто пытается использовать CSS-переходы для отображения и скрытия содержимого с помощью свойства видимости.
Это также сводило меня с ума, потому что использование дисплея убивает любые CSS-переходы.
Одним из решений является добавление этого в класс, который использует видимость:
Чтобы это работало, это зависит от макета, но оно должно содержать пустой контент внутри div, в котором он находится.
источник
Рассказ о
display:none
иvisibility: hidden
visibility:hidden
означает, что тег не виден, но для него выделено место на странице.display:none
значит полностью скрывает элементы со своим пространством. (хотя вы все равно можете взаимодействовать с ним через DOM)источник
Переключение
display
не допускает плавных переходов CSS. Вместо этого переключите и thevisibility
и themax-height
.источник
transform: translateX(-100%)
. Мы не хотимdisplay: none
display:none
спрятаться и установить,display:block
чтобы показать.источник
as though they are not in the DOM at all (but without actually removing them from the DOM)
visibility: hidden
только останавливает отображение содержимого, но по-прежнему использует вертикальное / горизонтальное пространство, display: none удаляет вертикальное / горизонтальное пространство для элемента.Вот другой способ вернуть их после отображения: нет. не используйте display: block / inline и т. д. Вместо этого (если используется javascript) установите для свойства css display значение '' (т. е. пустое)
источник
это скрывает содержимое, а также не оставляет пустого пространства.
источник
выше моих знаний это возможно 4 способами
<button style="display:none;"></button>
#buttonId{ display:none; }
$('#buttonId').prop('display':'none');
&$("#buttonId").css('opacity', 0);
источник
дисплей: ни одна из них не является наилучшей, чтобы избежать пробелов на странице
источник
Используйте,
!important
если вы вынуждены переопределить существующие стили CSS.источник