什么是CSS优先级?
CSS优先级是浏览器决定哪个CSS规则应用于元素的一套算法。当多个规则选择同一元素并设置相同属性时,优先级高的规则胜出。
层叠的三大支柱
重要性(Importance) -
!important声明特殊性(Specificity) - 选择器的权重
源次序(Source Order) - 代码出现的顺序
优先级计算示例
核心概念
z-index属性用于控制元素的层叠顺序,决定哪个元素显示在前面,哪个显示在后面。但它的生效是有前提条件的。 z-index生效的必要条件。层叠上下文是HTML元素的三维概念,决定了元素在z轴上的显示顺序。
要让z-index起作用,元素必须满足以下条件之一:
position: absoluteposition: relativeposition: fixedposition: sticky
注:当元素的
position属性为默认值static时,z-index属性不会生效。
z-index值的使用规则
数值含义
正整数:数值越大,元素越靠前显示(如
z-index: 9999)0:默认层级
负整数:数值越小,元素越靠后(如
z-index: -1)
值类型说明
/* 具体数值 - 推荐使用 */
z-index: 10;
z-index: 100;
/* auto - 默认值,相当于z-index: 0 */
z-index: auto;
/* 不推荐:不要将auto当作数值来理解 */
/* ❌ 错误理解:auto可定义为一个值 */
/* ✅ 正确理解:auto是默认值,相当于0 */🔧 实际应用示例
/* 固定在页面顶部的导航栏 */
.header {
position: fixed;
z-index: 1000; /* 确保在其他内容之上 */
top: 0;
left: 0;
width: 100%;
}
/* 侧边栏 */
.sidebar {
position: fixed;
z-index: 999; /* 低于header但高于主内容 */
left: 0;
top: 60px;
}
/* 主内容区域 */
.main-content {
position: relative;
z-index: 1; /* 在正常文档流中 */
}
/* 背景装饰元素 */
.background-decoration {
position: absolute;
z-index: -1; /* 在所有内容之后 */
}需要注意的陷阱
1. 层叠上下文
当父元素创建了层叠上下文时,子元素的z-index只在该上下文内有效。
2. 深层嵌套问题
/* 即使z-index很高,也可能被其他元素遮挡 */
.parent {
position: relative;
z-index: 1;
}
.child {
position: relative;
z-index: 9999; /* 只在parent的层叠上下文内有效 */
}3. Flex和Grid布局
在Flex和Grid容器中,即使元素的position为static,也可以使用z-index。
💡 最佳实践建议
使用有意义的数值:建议使用10、100、1000这样的数值,为将来调整留出空间
避免极端数值:不要随意使用9999这样的极端数值
建立层级规范:为项目建立统一的z-index层级管理规范
考虑层叠上下文:理解层叠上下文对z-index的影响
📝 总结
z-index是CSS中控制层叠顺序的重要属性,但需要配合position属性使用。理解其工作原理和注意事项,能够帮助我们更好地控制网页元素的显示层次,创建出层次清晰、交互友好的用户界面。