在jQuery中我是否可以隐藏元素,但在隐藏元素时不更改DOM?我隐藏了某个元素但是当它被隐藏时,它下面的元素会向上移动。我不希望这种情况发生。我希望空间保持不变,但随意显示/隐藏的元素。
我可以这样做吗?
答案 0 :(得分:279)
使用:
而不是hide()
css('visibility','hidden')
hide()
将display
样式设置为none
,这样就会从文档流中完全删除该元素,并使其不占用空间。
visibility:hidden
保持空间不变。
答案 1 :(得分:38)
尝试将visibility
设置为hidden
:
$("#id").css("visibility", "hidden");
答案 2 :(得分:19)
display: none;
会将其从内容流中删除,因此您会看到其他内容移动到留下的空白区域。 (display: block;
将其带回流程中,将所有内容排除在外。)
visibility: hidden;
会将其保留在占用空间的内容流中,但只是让它不可见。 (visibility: visible;
将再次显示它。)
如果您希望内容流保持不变,则需要使用visibility
。
答案 3 :(得分:14)
在另一个答案中,注意到jQuery的fadeTo
在完成时未设置display:none
,因此也可能在此处提供解决方案,而不是使用fadeOut
,例如:
答案 4 :(得分:7)
在我看到opacity: 0
技巧之前,我之前使用过 visibility: hidden
。
但在很多情况下opacity: 0
会出现问题,因为可让您与元素进行互动,即使您无法看到它! (正如DeadPassive所指出的那样。)
通常这不是你想要的。但也许偶尔你会这样?