CSS学习(3)隐藏元素的方式

76 阅读2分钟

前言

  • 隐藏页面中某个元素的方法有哪些?

隐藏元素方案

首先什么叫隐藏元素,大家第一反应就是display:none,元素就被隐藏了。

没错,这确实是隐藏元素的一种,但是过于片面。实际上我们可以把隐藏元素分为3大类:

  1. 完全隐藏:元素从渲染树中消失,不占据空间。
  2. 视觉上的隐藏:屏幕中不可见,占据空间。
  3. 语义上的隐藏:读屏软件不可读,但正常占据空间。

完全隐藏

  1. display: none

  2. HTML5 新增的 hidden 属性,相当于display: none

<div hidden></div>

视觉上隐藏

视觉上的隐藏,就是说元素还占据着位置,只是视觉上不可见而已。

  1. opacity: 0将透明度设置为0

  2. visibility: hidden

这也是大家比较熟知的一种方式,通过CSS中的visibility属性来隐藏元素,使其不可见,但是仍然会占位。

  1. 绝对定位

这种方式以前用的比较多,设置posoitionabsolutefixed,通过过设置top、left等值,将其移出可视区域。例如:

posoition: absolute;
left: -999px;
top: -999px;
  1. 设置margin

通过设置margin值,将其移出可视区域范围(可视区域占位)。例如:

margin-left: -9999px;
  1. 设置宽高为0

这也是比较常见的一种方式,简单说就是将元素的margin、border、padding、height和width等影响元素盒模 型的属性设置成0,如果元素内有子元素或内容,还应该设置其overflow: hidden来隐藏其子元素。

width: 0;
height: 0;
overflow: hidden;
  1. 裁剪元素

隐藏元素的另一种方法是通过剪裁它们实现,具体是通过clip-path属性,这个属性比较新,浏览器兼容性也会比 较差,但是了解一下还是非常有必要的。例如:

clip-path: polygon(0px 0px,0px 0px,0px 0px,0px 0px);

语义上隐藏

aria-hidden属性

通过设置aria-hidden属性为true使读屏软件不可读,但是元素仍然占据空间并且可见。

<div aria-hidden="true"></div>

总结

  • 隐藏页面中某个元素的方法有哪些?

隐藏元素可以分为3大类

完全隐藏:元素从渲染树中消失,不占据空间。

视觉上的隐藏:屏幕中不可见,占据空间。

语义上的隐藏:读屏软件不可读,但正常占据空间。

完全隐藏的方式有:设置disploy:none、为元素设置hidden属性。

视觉上隐藏的方式有:设置opacity属性为0、绝对定位的left和top值设置为-999px、设置margin-left值 为-999px、设置宽高为0、裁剪元素。

语义上的隐藏方式为将aria-hidden属性设置为true使读屏你件不可读。