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

leo*_*ora 331 html hidden

我希望有一个隐藏的复选框,不占用屏幕上的任何空间.

如果我有这个:

<div id="divCheckbox" style="visibility: hidden">
Run Code Online (Sandbox Code Playgroud)

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

如果我有这个:

<div id="divCheckbox" style="visibility: hidden; display:inline;">
Run Code Online (Sandbox Code Playgroud)

它不再创建新行,但占用屏幕上的水平空间.

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

CMS*_*CMS 684

使用 display:none;

<div id="divCheckbox" style="display: none;">
Run Code Online (Sandbox Code Playgroud)
  • visibility: hidden 隐藏元素,但它仍占用布局中的空间.

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

  • 再次显示div(以防万一有人需要) - `<div id ="divCheckbox"style ="display:inline-block;">` (40认同)
  • @anujin:为什么`inline-block`?div的默认`display`值是`block`! (14认同)
  • 可能值得更新答案以包含全局 HTML 属性 [hidden](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden),该属性自 [HTML5.1]( https://www.w3.org/TR/html51/editing.html#the-hidden-attribute),虽然直接来自 HTML,但基本上与“display: none”相同。但是,对“display”属性的任何使用都会覆盖“hidden”全局属性的行为。 (2认同)

C_B*_*C_B 47

HTML5发布以来,现在可以简单地做到:

<div hidden>This div is hidden</div>
Run Code Online (Sandbox Code Playgroud)

注意:某些旧浏览器不支持此功能,最明显的是IE <11.

隐藏属性文档(MDN,W3C)

  • 我的印象是这个页面上还有很多其他选项 (17认同)
  • 很好,但请不要把链接放到w3schools(全球范围内不准确),而是使用MDN:https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden (7认同)
  • 这比使用 CSS 隐藏在语义上更正确,更易于访问,并且所有主要浏览器都支持它。这应该是 2020 年公认的答案。 (5认同)

tva*_*son 29

使用style="display: none;".此外,您可能不需要拥有DIV,只需将样式设置display: none为复选框即可.


Zet*_*Two 8

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

#divCheckbox {
display: none;
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*ave 7

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

.hidden {
visibility: hidden;
display: none;
}
Run Code Online (Sandbox Code Playgroud)

或者极简主义者:

.hidden {
display: none;
}
Run Code Online (Sandbox Code Playgroud)

现在您只需通过以下方式应用它:

<div class="hidden"> content </div>
Run Code Online (Sandbox Code Playgroud)


THN*_*THN 6

要仅在视觉上隐藏元素但将其保留在 html 中,您可以使用:

<div style='visibility:hidden; overflow:hidden; height:0; width:0;'>
  [content]
</div>
Run Code Online (Sandbox Code Playgroud)

或者

<div style='visibility:hidden; overflow:hidden; position:absolute;'>
  [content]
</div>
Run Code Online (Sandbox Code Playgroud)

可能会出现什么问题display:none?它从 html 中完全删除该元素,因此如果需要访问隐藏元素内容,某些功能将被破坏。


Ric*_*her 5

考虑使用<span>隔离小部分标记进行样式设置而不会破坏布局.这似乎比试图强制<div>不显示自己更具惯用性- 如果实际上复选框本身无法按照您想要的方式设置样式.


Mah*_*ini 5

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

<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>
Run Code Online (Sandbox Code Playgroud)

来源:这里


sma*_*c89 5

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

<div hidden id="divCheckbox">
Run Code Online (Sandbox Code Playgroud)

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

<div id="divCheckbox" style="display:none">
Run Code Online (Sandbox Code Playgroud)