css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position
属性控制,共有 5 种定位模式:static
(静态定位)、relative
(相对定位)、absolute
(绝对定位)、fixed
(固定定位)和 sticky
(粘性定位)。以下是基于 CSS 定位 的详细解析:
一、position: static
(静态定位)
特点:
- 默认值,元素按照文档流(正常布局)排列,
top
、right
、bottom
、left
等定位属性无效。 - 元素的位置由 HTML 文档中的顺序决定,不受其他定位模式影响。
应用场景:
- 大多数普通元素的默认布局,无需特殊定位时使用。
二、position: relative
(相对定位)
特点:
- 相对自身原有位置进行偏移,通过
top
、right
、bottom
、left
设置偏移量。 - 不脱离文档流,元素在文档流中的原始位置会被保留(占位),其他元素仍以原始位置布局。
- 不影响子元素的定位:若子元素设置
absolute
,子元素会相对于该元素的原始位置定位(而非偏移后的位置)。
示例:
.box {position: relative;top: 20px; /* 向下偏移 20px */left: 10px; /* 向右偏移 10px */
}
三、position: absolute
(绝对定位)
特点:
- 脱离文档流,元素不再占据原位置,其他元素会忽略它的存在。
- 相对于最近的已定位祖先元素(祖先元素的
position
不是static
,即relative
、absolute
、fixed
或sticky
)定位:- 若祖先元素均未定位,则相对于 浏览器视口(根元素
<html>
)定位。 - 若祖先元素有多层定位,以最近的一层定位祖先元素为基准。
- 若祖先元素均未定位,则相对于 浏览器视口(根元素
- 通过
top
、right
、bottom
、left
设置相对于基准元素的偏移量。 - 绝对定位会使元素具有行内块的特性 可以设置宽高
- 口诀:子绝父相
示例:
<div class="parent"> <!-- position: relative --><div class="child"> <!-- position: absolute -->子元素相对于父元素定位</div>
</div><style>
.parent {position: relative; /* 父元素设置相对定位,作为子元素的定位基准 */width: 200px;height: 200px;border: 1px solid #000;
}
.child {position: absolute;top: 50px;left: 50px;
}
</style>
用绝对定位实现水平垂直居中
.parent {position: relative;
}
.child {position: absolute;top: 50%;left: 50%;/*子元素的左上角出现在参照物的中间*/transform: translate(-50%, -50%); /* 同时处理水平和垂直方向 */
}
四、position: fixed
(固定定位)
特点:
- 完全脱离文档流,始终相对于浏览器视口定位,不随页面滚动而移动。
top
、right
、bottom
、left
以视口为基准,常用于实现导航栏、返回顶部按钮等固定位置的元素。- -固定定位会使元素具有行内块的特性 可以设置宽高
示例:
.fixed-navbar {position: fixed;top: 0;left: 0;width: 100%;background: #333;color: white;
}
五、position: sticky
(粘性定位)
特点:
- 混合定位模式,元素在正常文档流中时表现为相对定位,当滚动到指定阈值时表现为固定定位。
- 需要结合
top
、right
、bottom
、left
中的至少一个属性来触发粘性效果(例如top: 0
表示滚动到顶部时固定)。 - 兼容性:IE 浏览器不支持,现代浏览器(Chrome、Firefox 等)需添加
-webkit-
前缀。
示例:
.sticky-header {position: sticky;top: 0; /* 滚动到顶部时固定 */background: #f5f5f5;padding: 10px;
}
关键对比总结
定位模式 | 是否脱离文档流 | 定位基准 | top/left 作用 |
---|---|---|---|
static | 否 | 文档流默认位置 | 无效 |
relative | 否 | 自身原始位置 | 相对于自身偏移 |
absolute | 是 | 最近的已定位祖先元素或视口 | 相对于基准元素偏移 |
fixed | 是 | 浏览器视口 | 相对于视口固定位置 |
sticky | 部分(粘性时) | 正常流时为自身,粘性时为视口 | 滚动到阈值时固定 |
常见应用场景
- 模态弹窗:父元素
fixed
覆盖全屏,子元素absolute
居中显示。 - 吸顶导航栏:
sticky
或fixed
实现滚动时固定。 - 自定义下拉菜单:父元素
relative
,子菜单absolute
相对于父元素定位。 - 浮动元素布局:配合
z-index
控制层叠顺序(z-index
仅对定位元素有效)。
通过合理组合定位模式,可以实现复杂的页面布局效果。
六、z-index
在 CSS 中,z-index
用于控制定位元素(position
值为 relative
、absolute
、fixed
或 sticky
)的层叠顺序(堆叠层级),决定元素在页面三维空间中(垂直于屏幕方向)的显示顺序。数值越大的元素会覆盖在数值较小的元素上方。
基本用法
.element {position: relative; /* 或 absolute/fixed/sticky */z-index: 1; /* 数值可为整数、负数或 0 */
}
关键特性
-
仅对定位元素生效
z-index
只作用于设置了position
为非static
(即relative
/absolute
/fixed
/sticky
)的元素,否则属性无效。
-
层叠上下文(Stacking Context)
- 当元素形成层叠上下文时,其内部的
z-index
只在该上下文中生效,不会影响外部元素。 - 触发层叠上下文的常见条件:
position
为relative
/absolute
/fixed
且z-index
不为auto
(默认值)。position
为sticky
(任意z-index
)。display
为flex
/grid
的父元素(且子元素有定位)。opacity
值小于 1(opacity: 0.9
)。transform
值不为none
(如transform: scale(1)
)。
- 当元素形成层叠上下文时,其内部的
-
数值规则
- 数值越大,层级越高,覆盖数值小的元素。
- 支持负数(如
-1
),表示元素层级低于普通文档流元素。 - 相同
z-index
时,后渲染的元素覆盖先渲染的元素(DOM 结构中靠后的元素优先)。
层叠顺序优先级(从下到上)
- 背景和边框:父元素的背景和边框。
- 非定位元素:普通文档流中的元素(
position: static
)。 - 定位元素(
z-index: auto
或未设置):层级由 DOM 顺序决定,后出现的覆盖先出现的。 - 定位元素(
z-index
为具体数值):数值越大,层级越高。 - 浏览器默认层:如
select
元素、弹窗(alert
/confirm
)等始终在最上层。
示例:层级覆盖效果
<div class="parent"><div class="child1">Child 1 (z-index: 1)</div><div class="child2">Child 2 (z-index: 2)</div>
</div><style>
.parent {position: relative;width: 200px;height: 200px;border: 1px solid #000;
}
.child1, .child2 {position: absolute;width: 100px;height: 100px;opacity: 0.8;
}
.child1 {background: red;z-index: 1;
}
.child2 {background: blue;left: 50px;top: 50px;z-index: 2; /* 覆盖 Child 1 */
}
</style>
- 效果:蓝色方块(
z-index: 2
)覆盖在红色方块(z-index: 1
)上方。
常见问题与注意事项
-
层叠上下文的嵌套
- 若父元素形成层叠上下文(如设置了
z-index: 1
),则其所有子元素的z-index
仅在该上下文中比较,无法突破父元素的层级。
.parent {position: relative;z-index: 1; /* 形成层叠上下文 */ } .child {position: absolute;z-index: 100; /* 在父元素内部层级高,但无法超过未设置 z-index 的外部元素 */ }
- 若父元素形成层叠上下文(如设置了
-
z-index
与opacity
的冲突- 若元素设置了
opacity < 1
,则会触发层叠上下文,其子元素的z-index
仅在该上下文中生效。
- 若元素设置了
-
select
元素层级最高- 浏览器默认
select
元素层级高于z-index
控制的元素,若需覆盖select
,需借助iframe
或特殊 hack(如pointer-events: none
)。
- 浏览器默认
总结
- 核心作用:控制定位元素的层叠顺序,数值大的元素覆盖数值小的。
- 生效前提:元素必须设置
position: relative/absolute/fixed/sticky
。 - 最佳实践:
- 避免滥用
z-index
,优先通过 DOM 顺序控制层级。 - 明确层叠上下文边界,防止嵌套层级混乱。
- 数值建议使用小整数(如
1
、10
、100
),便于后期维护。
- 避免滥用
相关文章:
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...