如何创建不创建换行符或水平空间的隐藏div?


354

我想要一个隐藏的复选框,该复选框不占用屏幕上的任何空间。

如果我有这个:

<div id="divCheckbox" style="visibility: hidden">

我没有看到该复选框,但仍会创建一个新行。

如果我有这个:

<div id="divCheckbox" style="visibility: hidden; display:inline;">

它不再创建新行,而是占用屏幕上的水平空间。

有没有办法让隐藏的div不占用空间(垂直或水平)?


这样的div有什么用吗?
Jonno_FTW 2010年

6
@Jonno:它是AJAX中常用的。假设您有一个带有显示三角形的项目列表。您希望在用户单击显示三角形时显示详细信息或子树。因此,您要做的是将<div id =“ theID” style =“ display:none;”>放入详细信息。然后,当用户单击三角形时,将三角形移到“中途”位置(指向东南)并触发AJAX请求以填写<div>。AJAX请求完成后,将三角形向南旋转并删除“ display:none;”。来自<div>的样式。script.aculo.us库可以完成很多工作。
Mike DeSimone 2010年

Answers:


715

采用 display:none;

<div id="divCheckbox" style="display: none;">
  • visibility: hidden 隐藏元素,但是它仍然占用布局中的空间。

  • display: none 从文档中完全删除元素,它不占用任何空间。


42
再次显示div(以防万一有人需要像我一样)<div id="divCheckbox" style="display: inline-block;">
anujin

14
@anujin:为什么inline-blockdisplaydiv 的默认值为block
MMM 2014年

有没有办法做相反的事情?要在当前显示的div不占用空间且不移动其他DOM元素的情况下将div从更改display: nonedisplay: inline-block或等效值?
bpromas

1
也许值得更新答案以包含隐藏的全局HTML属性,该属性自HTML5.1可用display: none尽管直接来自HTML,但与说的基本相同。但是,对display属性的任何使用都会覆盖hidden全局属性的行为。
Marius Mucenicu

54

HTML5发行以来,现在可以轻松做到:

<div hidden>This div is hidden</div>

注意:某些旧版浏览器不支持此功能,尤其是IE <11。

隐藏属性文档(MDN W3C


1
从语义上讲,这比用CSS隐藏起来更正确,对于可访问性更好,并且所有主要浏览器都支持它。它应该是2020
。– RobinMétral

29

使用style="display: none;"。另外,您可能不需要DIV,只需display: none在复选框上将样式设置为即可。


我需要在页面加载时向我隐藏提醒消息,并希望在单击按钮时再次显示它。尝试过,visibility: hidden但是那显示出空白。style="display: none;"就像一个小魅力:)
sohaiby 2015年

8

除了CMS答案外,您可能还需要考虑将样式放在外部样式表中,并将样式分配给ID,如下所示:

#divCheckbox {
display: none;
}

+1,这确实是一个好建议,但是如何仅显示一个复选框却又不影响所有其他复选框的可见性?
Owais Qureshi

1
@dotNetSoldier旧问题,但是这里应该有一个答案。您有一个名为invis的css类,可以使用JS通过ID从复选框或div中添加/删除它。
DanielST 2014年

8

由于您应该专注于CSS的可用性和通用性,而不是使用id来指向特定的布局元素(这会导致庞大或多个css文件),因此您可能应该在链接的.css文件中使用true类:

.hidden {
visibility: hidden;
display: none;
}

或极简主义者:

.hidden {
display: none;
}

现在,您可以通过以下方式简单地应用它:

<div class="hidden"> content </div>

这样,代码看起来更加干净!我喜欢上课而不是内联风格
Harry Cho 2015年

5

考虑使用<span>隔离标记样式的小片段而不破坏布局。这似乎比试图强制a <div>不显示自己更惯用-如果实际上无法以所需的方式设置复选框本身的样式。


4

通过鼠标单击显示/隐藏:

<script language="javascript">

    function toggle() {

        var ele = document.getElementById("toggleText");
        var text = document.getElementById("displayText");

        if (ele.style.display == "block") {

            ele.style.display = "none";
            text.innerHTML = "show";
        }
        else {

            ele.style.display = "block";
            text.innerHTML = "hide";
        }
    }
</script>

<a id="displayText" href="javascript:toggle();">show</a> <== click Here

<div id="toggleText" style="display: none"><h1>peek-a-boo</h1></div>

资料来源:这里


4

要防止复选框占用任何空间而不将其从DOM中删除,请使用hidden

<div hidden id="divCheckbox">

为了防止该复选框从占用任何空间,从DOM,使用移除它display: none

<div id="divCheckbox" style="display:none">

3

可视地隐藏元素,但将其保留在html中,可以使用:

<div style='visibility:hidden; overflow:hidden; height:0; width:0;'>
  [content]
</div>

要么

<div style='visibility:hidden; overflow:hidden; position:absolute;'>
  [content]
</div>

可能出什么问题了display:none?它将元素从html中完全删除,因此如果某些功能需要访问隐藏元素中的某些内容,则可能会使其功能失效。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.