当前位置: 首页 > article >正文

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

 文章目录

  position 的五种类型及基本用法  

一、position 属性概述

二、position 的五种类型详解(初学者版)

1. static(默认值)

2. relative(相对定位)

3. absolute(绝对定位)

4. fixed(固定定位)

5. sticky(粘性定位)

三、定位元素的层级关系(z-index)

四、常见问题与注意事项

1. 为什么我的 absolute 元素没有按照预期定位?

2. 如何让 fixed 元素不遮挡其他内容?

3. sticky 在某些浏览器不工作?

4. 绝对定位导致父元素高度塌陷?

五、实践建议

  relative 与 absolute 嵌套规则  

一、relative 与 absolute 多层嵌套的定位规则

二、示例解析:三层嵌套布局

三、关键特性与注意事项

1. 定位基准链

2. 相对定位的特殊性

3. 高度塌陷问题

4. z-index 层级控制

四、实际应用场景

1. 下拉菜单

2. 卡片悬浮层

调试技巧

五、常见错误及修复

  absolute 与 absolute 嵌套规则  

一、嵌套规则:绝对定位的「定位基准链」

二、案例演示:两层absolute嵌套

HTML 结构

效果解析

三、进阶案例:三层嵌套(混合定位类型)

定位基准分析

四、常见场景:为什么需要嵌套absolute?

1. 精准控制多层悬浮元素

2. 复杂图标布局(如叠加徽标)

五、注意事项:避免踩坑!

1. 祖先元素必须是「已定位元素」

2. 层级控制:z-index 的作用

3. 父元素高度塌陷问题

解决方案:

六、总结:absolute嵌套的核心逻辑

  relative和relative嵌套规则  

一、嵌套规则:相对定位的「相对链」

二、案例演示:两层relative嵌套

HTML 结构

效果解析

三、进阶案例:多层嵌套的视觉效果

定位基准分析

四、常见场景:为什么需要嵌套relative?

1. 渐进式微调元素位置

2. 创建视觉层次感

五、注意事项:避免踩坑!

1. 相对定位不影响文档流

2. 与绝对定位混合使用时的区别

3. 性能考虑

六、总结:relative嵌套的核心逻辑

  三种组合的核心区别  ★

一、三种组合对比

二、组合对比详解

1. relative+relative:微调与层级

2. absolute+absolute:完全脱离文档流

3. relative+absolute:容器内精确定位

三、性能与维护性对比

四、最佳实践建议

1. 优先使用relative+absolute

2. 谨慎使用absolute+absolute

3. 巧用relative+relative

五、常见错误及解决方案

六、总结:如何选择组合?


 在日常工作中,我们经常要实现UI的效果图,比如实现下图这样的元素,就需要用到position属性:

虽然现在的组件库很多,但是一些特殊要求,就需要我们自己来完成,看完本文,你一定收获多多!


★  position 的五种类型及基本用法  ★

一、position 属性概述

在 CSS 中,position属性就像是网页元素的 “定位控制器”。它决定了元素在页面中如何摆放,以及如何与其他元素互动。理解这个属性是掌握网页布局的关键一步。

二、position 的五种类型详解(初学者版)

1. static(默认值)
  • 就像排队一样:static 是元素的默认状态,就像同学们在操场上按顺序排队,每个元素都乖乖地按照代码的顺序一个接一个排列。
  • 不能插队:设置了 static 的元素,你无法用topbottomleftright这些 “位置指令” 让它移动。它就待在该待的地方。
  • 示例
<div style="border:1px solid red;">我是一个普通的div,position默认是static
</div>
<div style="border:1px solid blue;">我也是,我们会按照代码顺序一个接一个排列
</div>

2. relative(相对定位)
  • 先站好队,再微调:relative 定位的元素首先会像 static 一样在正常的位置站好(保留原来的空间),然后你可以通过topbottomleftright让它稍微移动一点。
  • 不会影响别人:它移动之后,原来的位置还是会被保留,就好像它的 “影子” 还在那里,不会影响其他元素的位置。
  • 示例
<div style="border:1px solid gray; height:100px;"><div style="position:relative; left:50px; top:20px; background:yellow;">我原本应该在左上角,但现在向右移动了50px,向下移动了20px</div>
</div>

3. absolute(绝对定位)
  • 脱离队伍,单独行动:设置了 absolute 的元素会完全跳出正常的文档流,就像一个学生从队伍里走出来,站到了操场上的其他位置。
  • 以容器为参考:它的位置是相对于最近的一个 “有定位的祖先元素”(即 position 不是 static 的元素)。如果没有这样的祖先元素,就相对于整个页面(浏览器窗口)。
  • 会影响布局:因为它脱离了文档流,原来的位置不会被保留,后面的元素会 “挤上来” 填补空缺。
  • 示例
<div style="position:relative; border:1px solid purple; height:100px;"><div style="position:absolute; right:10px; bottom:10px; background:pink;">我相对于紫色容器的右下角定位</div>
</div>

4. fixed(固定定位)
  • 像海报一样贴在墙上:fixed 定位的元素会相对于浏览器窗口固定位置,就像你在墙上贴了一张海报,无论你怎么滚动页面,海报都不会动。
  • 完全脱离文档流:它不会在原来的位置留下空间,其他元素会当作它不存在。
  • 场景:常用于导航栏、返回顶部按钮、广告横幅等需要一直可见的元素。
  • 示例
<div style="position:fixed; bottom:20px; right:20px; background:green; color:white;">我是一个固定在右下角的按钮,无论怎么滚动页面我都在这里
</div>

5. sticky(粘性定位)
  • 平时正常,特殊时刻固定:sticky 定位的元素一开始会像 static 一样在正常的位置,但当页面滚动到某个特定位置时,它会突然 “粘” 在那里,就像被胶水粘住一样。
  • 需要触发器:你必须通过topbottom等属性告诉它什么时候开始 “粘住”。比如top:0表示当元素滚动到顶部时就固定在那里。
  • 示例
<div style="height:2000px;"> <!-- 创建一个很长的页面用于滚动 --><div style="position:sticky; top:0; background:blue; color:white;">我是一个粘性导航栏,平时我在正常位置,当你滚动到顶部时我会固定在这里</div>
</div>

三、定位元素的层级关系(z-index)

  • 谁在上谁在下:当元素重叠时,z-index 就像 “楼层” 一样,值越大的元素越 “高”,会覆盖在值小的元素上面。
  • 只对定位元素有效:z-index 只对设置了positionrelativeabsolutefixedsticky的元素有效。
  • 示例
<div style="position:absolute; left:50px; top:50px; z-index:1; background:red; width:100px; height:100px;">我是元素1,z-index是1
</div>
<div style="position:absolute; left:100px; top:100px; z-index:2; background:blue; width:100px; height:100px;">我是元素2,z-index是2,所以我会覆盖在元素1上面
</div>

四、常见问题与注意事项

1. 为什么我的 absolute 元素没有按照预期定位?
  • 检查它的祖先元素中是否有设置了position(除了 static)的元素。如果没有,它会相对于整个页面定位。
2. 如何让 fixed 元素不遮挡其他内容?
  • 可以给 body 元素添加padding-toppadding-bottom,为 fixed 元素留出空间。
3. sticky 在某些浏览器不工作?
  • 旧版浏览器(如 IE)不支持 sticky。可以使用 JavaScript 实现类似效果,或者添加前缀:position: -webkit-sticky; position: sticky;
4. 绝对定位导致父元素高度塌陷?
  • 当所有子元素都设置为 absolute 时,父元素会失去高度。可以通过设置父元素的高度,或者使用position: relative让父元素包含子元素。

五、实践建议

  • 动手练习:打开浏览器的开发者工具(F12),在任何网页上修改元素的 position 属性,观察效果。
  • 从简单到复杂:先掌握 relative 和 absolute,再学习 fixed 和 sticky。
  • 查看案例:在网上搜索 “CSS position 案例”,可以找到很多实际应用的例子。

★  relative 与 absolute 嵌套规则  ★

在实际项目中,页面布局中经常用嵌套结构来创建复杂布局,position的类型互相嵌套来完成这样的效果,以下详细的讲解:

一、relative 与 absolute 多层嵌套的定位规则

relativeabsolute定位元素多层嵌套时,子元素的定位基准是最近的已定位祖先元素(即position值不为static的元素)。这种嵌套结构常用于创建复杂布局,如下拉菜单、卡片组件等。

二、示例解析:三层嵌套布局

下面通过一个三层嵌套的例子来说明定位规则:

<div class="grandparent" style="position:relative; height:200px; background:#f0f0f0;"><div class="parent" style="position:absolute; top:50px; left:50px; width:150px; height:150px; background:#e0e0e0;"><div class="child" style="position:absolute; top:30px; right:20px; width:80px; height:80px; background:#d0d0d0;"><div class="grandchild" style="position:relative; top:10px; left:10px; width:50px; height:50px; background:#c0c0c0;">我是曾孙元素</div></div></div>
</div>

层级分析:

  1. 曾祖父元素(grandparent)

    • position: relative:建立定位上下文,但不偏移。
    • 作为后续绝对定位元素的参考基准。
  2. 祖父元素(parent)

    • position: absolute:相对于.grandparent定位。
    • top:50px; left:50px:从.grandparent的左上角向下、向右偏移 50px。
  3. 父元素(child)

    • position: absolute:相对于.parent定位。
    • top:30px; right:20px:从.parent的上边缘向下 30px,右边缘向左 20px。
  4. 子元素(grandchild)

    • position: relative:相对于自身正常位置定位。
    • top:10px; left:10px:从自身原始位置向下、向右偏移 10px。

三、关键特性与注意事项

1. 定位基准链
  • 绝对定位元素(如.child)会逐级向上查找最近的已定位祖先(.parent)。
  • 若所有祖先均为static,则相对于浏览器窗口定位。
2. 相对定位的特殊性
  • relative元素仍保留在文档流中,其偏移不会影响其他元素。
  • 多层relative嵌套时,每个元素仅相对于自身原始位置偏移。
3. 高度塌陷问题
  • 若父元素仅包含绝对定位子元素(如.parent),父元素高度会塌陷为 0。
  • 解决方案:

    css

    .parent {position: relative; /* 或设置明确高度 */min-height: 100px;
    }
    
4. z-index 层级控制
  • 嵌套元素的层级由最内层元素的z-index决定。
  • 示例:
    <div style="position:relative; z-index:1;"><div style="position:absolute; z-index:

相关文章:

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...