Skip to content

CSS 基础

使用 CSS 隐藏页面元素的方法有哪些?有什么区别?

方法描述触发重排触发重绘影响鼠标事件
display: none完全从文档流中移除元素,不占空间。
visibility: hidden元素仍占据空间,只是看不见。不会阻止通过代码触发的事件,但阻止鼠标事件。
transform: scale(0)使用变换将元素缩放到0,从视觉上完全隐藏,但仍占据原来的空间。可能仍可通过代码触发事件。
opacity: 0元素完全透明,但仍然占据空间和可交互。用户可以通过鼠标或键盘触发事件。

其中除了 display: none 是直接移出元素外,其他方式影响鼠标事件是由于元素无法获得焦点。

简述 CSS 中的重绘和重排

特性Repaint (重绘)Reflow (重排)
定义元素的外观改变,但不影响其布局。元素的布局或尺寸发生变化,可能会影响周围元素的布局。
触发条件更改颜色、背景色、可见性、边框样式等不影响布局的属性。更改尺寸、位置、显示(display)、边框厚度、内容变化(如文本改变或图片加载)等影响布局的属性。
性能影响相对较低,因为只需要重新绘制元素,不需要重新计算布局。性能影响较大,因为需要重新计算元素的位置和尺寸,可能会连锁影响其他元素的布局。
性能优化使用合成层(例如通过 will-change、transform)隔离频繁重绘的元素。最小化 DOM 操作,合并多次样式修改,利用 CSS3 属性如 transform 进行动画,避免触发重排。

Released under the MIT License.