解析 10种隐藏CSS元素的方法(1)

281 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情

在CSS中隐藏元素有多种方法,但它们影响可访问性、布局、动画、性能和事件处理的方式不同。

动画

一些CSS隐藏选项是全部或没有。元素要么是完全可见的,要么是完全不可见的,没有中间状态。其他的,如透明度,可以有一个范围的值,所以插值CSS动画成为可能。

可访问性

下面描述的每个方法都将在视觉上隐藏一个元素,但它可能隐藏也可能不隐藏辅助技术的内容。例如,屏幕阅读器仍然可以显示微小的透明文本。为了描述适当的操作,可能需要进一步的CSS属性或ARIA属性,例如ARIA -hidden="true"。

事件处理

隐藏将停止在该元素上触发事件,或者没有任何效果——也就是说,该元素不可见,但仍然可以单击或接收其他用户交互。

性能

在浏览器加载并解析HTML DOM和CSS对象模型后,页面分三个阶段呈现:

  1. 布局:生成每个元素的几何形状和位置
  2. 绘制:绘制出每个元素的像素
  3. 组合:以适当的顺序放置元素层

只引起构图变化的效果明显比影响布局的效果更流畅。在某些情况下,浏览器还可以使用硬件加速。

1. opacity and filter: opacity()

不透明度:N和过滤器:不透明度(N)属性可以传递一个0到1之间的数字,或者一个0%到100%之间的百分比,分别表示完全透明和完全不透明。

在现代浏览器中,这两者之间的实际差别很小,尽管如果同时应用了多种效果(模糊,对比度,灰度等),则应该使用过滤器。

不透明可以产生动画效果,并提供出色的性能,但要注意完全透明的元素仍然保留在页面上,并可能触发事件。

度规效果
浏览器支持很好,但是IE只支持不透明度0到1
可访问性如果设置为0或0%,则不读取内容
布局的影响?没有
渲染需要作文
性能最好,可以使用硬件加速
动画帧可能吗?是的
事件触发时隐藏?是的

2.color Alpha Transparency

不透明度影响整个元素,但也可以分别设置颜色、背景颜色和边框颜色属性。使用rgba(0,0,0,0)或类似的方法应用零alpha通道会使项目完全透明:

每个属性都可以单独动画,以创建有趣的效果。注意,透明度不能应用于具有图像背景的元素,除非它们是使用线性梯度或类似的方法生成的。

alpha通道可以设置为:

  • 透明的:完全透明(中间动画是不可能的)
  • Rgba (r, g, b, a):红色,绿色,蓝色和阿尔法
  • Hsla (h, s, l, a):色相、饱和度、明度和alpha
  • # RRGGBBAA而且# RGBA
度规效果
浏览器支持很好,但是IE只支持透明的而且rgba
可访问性内容仍可阅读
布局的影响?没有
渲染需要绘画
性能很好,但不如不透明度
动画帧可能吗?是的
事件触发时隐藏?是的

3.transform

transform属性可用于转换(移动)、缩放、旋转或倾斜元素。屏幕外的缩放(0)或平移(-999px, 0px)将隐藏元素:

transform提供了出色的性能和硬件加速,因为元素可以有效地移动到一个单独的层,并且可以在2D或3D中动画。原始布局空间保持原样,但完全隐藏的元素不会触发任何事件。

度规效果
浏览器支持
可访问性内容仍可阅读
布局的影响?不,原来的维度还在
渲染需要作文
性能最好,可以使用硬件加速
动画帧可能吗?是的
事件触发时隐藏?没有

4. clip-path

剪切路径属性创建一个剪切区域,该区域决定元素的哪些部分是可见的。使用诸如clip-path: circle(0)这样的值;将完全隐藏元素。

剪辑路径为有趣的动画提供了空间,尽管它只能在现代浏览器中使用。

度规效果
浏览器支持仅限现代浏览器
可访问性某些应用程序仍然可以读取内容
布局的影响?不,原来的维度还在
渲染需要油漆
性能合理的
动画帧可能吗?是的,在现代浏览器中
事件触发时隐藏?没有

5. visibility

visibility属性可以设置为visible或hidden来显示和隐藏一个元素:

除非使用折叠值,否则元素使用的空格将保持不变。

度规效果
浏览器支持优秀的
可访问性未读内容
布局的影响?不,除非collapse使用
渲染需要除非collapse使用
性能
动画帧可能吗?没有
事件触发时隐藏?没有