front-end-interview-handbook/packages/quiz/questions/describe-z-index-and-how-st.../zh-CN.mdx

14 lines
1.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 描述 `z-index` 以及如何形成堆叠上下文。
---
CSS 中的 `z-index` 属性控制重叠元素的垂直堆叠顺序。`z-index` 仅影响已定位的元素(具有 `position` 值不为 `static` 的元素)及其后代或 flex 项目。
在没有任何 `z-index` 值的情况下,元素按照它们在 DOM 中出现的顺序堆叠(在同一层级中,最下面的元素出现在最上面)。具有非静态定位的元素(及其子元素)将始终出现在具有默认静态定位的元素之上,而不管 HTML 层次结构如何。
堆叠上下文是包含一组层的元素。在局部堆叠上下文中,其子元素的 `z-index` 值是相对于该元素设置的,而不是相对于文档根元素。该上下文之外的层——即局部堆叠上下文的同级元素——不能位于其内的层之间。如果元素 B 位于元素 A 的顶部,而元素 A 的子元素 C 永远不能高于元素 B即使元素 C 的 `z-index` 比元素 B 高。
每个堆叠上下文都是自包含的 - 在元素的content堆叠后整个元素被认为在父堆叠上下文的堆叠顺序中。少数 CSS 属性会触发新的堆叠上下文,例如 `opacity` 小于 1、不是 `none` 的 `filter` 以及不是 `none` 的 `transform`。
***注意***:确切地说,什么元素有资格创建堆叠上下文,列在[规则](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_positioned_layout/Stacking_context#The_stacking_context)的这一长串中。