美文网首页CSSWeb前端之路程序员
三种隐藏 HTML 元素的方式

三种隐藏 HTML 元素的方式

作者: Wenliang | 来源:发表于2017-02-05 03:08 被阅读3120次

在网页应用中,显示/隐藏某个元素或组件是一件经常要做的事情,尤其是在目前比较流行的单页应用中。

总体而言,有 3 种方式来实现

  1. CSS 的 display: none;
  2. CSS 的 visibility: hidden;
  3. HTML5 的 hidden 属性(boolean)

它们之间有相同点和不同点。相同点很简单,都能使添加了这个属性的元素及其子元素『不被看见』。这篇文章着重来比较一下它们之间的差异。


display: none;

添加了这个属性的元素:

  • 不占据页面空间(不影响布局),因为这个属性不是让这个元素『不可见』,而是压根没有把它渲染出来
  • 依旧可以通过 DOM API 来获取到
    • 比如把它变成 display: block;

visibility: hidden;

添加了这个属性的元素:

  • 仍占据页面空间(影响布局),仅仅让元素变“透明”,不画出来罢了
  • 依旧可以通过 DOM API 来获取到
    • 比如把它变成 visibility: visible;

HTML5 hidden

E.g. <p hidden>hello, world!</p>
添加了这个属性的元素:

  • 不占据页面空间(不影响布局),未被渲染出来
  • 什么情况下使用?
    • 当这个元素和当前页面状态不相关时
    • 这个元素仅仅用来被页面中的其它元素重复使用,提供某种信息,而非直接展示给用户使用时
    • 总之,当此元素不应该被用户获取到时使用。(因此,不能把此元素链接给某个 href 上)
  • 对比 display: none; 的优势在于,如果使用 display: none;,想要恢复显示时,该恢复成哪个值呢?block 吗?flex 吗?不好确定。但是使用 HTML5 的 hidden 属性就不存在这个问题了。
  • 在易用性(Accessibility)方面,标注了 hidden 的元素不会被读屏器读到。
  • 由于这个属性其实是用 CSS 实现的,所以,如果你给带有 HTML hidden 属性的元素,添加了 CSS display 属性,这个 display 属性会覆盖掉 HTML hidden 属性。
  • 有英文阅读能力的同学可以去 W3C文档 查看更详细的解释和用例

文档上摘取的用例之一:

<h1>The Example Game</h1>
<section>
  <h2>Login</h2>
  <form>
    ...
    <!-- 调用 login() 当用户的身份被成功检测时 -->
  </form>
  <script>
    function login() {
      // switch screens
      document.getElementById('login').hidden = true;
      document.getElementById('game').hidden = false;
    }
  </script>
</section>
<section hidden>
  ...
</section>

总结

每种用法都有自己的优势和劣势,需要根据具体的业务场景来选择用哪一种方式。
如有错误或遗漏,欢迎指出,谢谢!

相关文章

  • 三种隐藏 HTML 元素的方式

    在网页应用中,显示/隐藏某个元素或组件是一件经常要做的事情,尤其是在目前比较流行的单页应用中。 总体而言,有 3 ...

  • 创建元素的三种方式

    创建元素的三种方式

  • 【JS】20--Core DOM

    1. 节点关系 三种类型的节点 元素类型 文本类型 属性类型 操作html的三种方式 html方式 DOM核心方式...

  • JQuery高级篇

    1.动画 三种方式显示和隐藏元素 1.默认显示和隐藏方式:show([speed,[easing],[fn]])h...

  • 11_JQuery高级

    JQuery 高级 1. 动画 1. 三种方式显示和隐藏元素 1. 默认显示和隐藏方式 1. show([spee...

  • CSS display显示

    显示 CSS的display属性指定了HTML元素的显示方式,visibility属性指定一个元素应可见还是隐藏。...

  • DOM的事件处理方式

    DOM的事件处理方式通常有三种方式: 在HTML中的事件处理方式 DOM元素对象的属性事件绑定处理方式 DOM元素...

  • 微信小程序开发学习总结(三) CSS样式

    一.CSS三种样式表。 在HTML中引入CSS共有三种方式:行内样式就是把样式写在HTML元素里面,用style属...

  • html元素的隐藏

    通过js操作css样式的隐藏 function hide(e, reflow) { if (reflow) { e...

  • html元素隐藏的几种方式与动画

    一、隐藏的几种方式: 1、Vue的v-if、小程序的wx:if说明:物理级别的显示与隐藏;即:直接处理DOM节点动...

网友评论

    本文标题:三种隐藏 HTML 元素的方式

    本文链接:https://www.haomeiwen.com/subject/rxwsittx.html