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

彻底掌握 CSS 定位:深入理解 relative、absolute、fixed 与 sticky 的原理与实战

一、前言:为什么要学定位?

  • 定位是 CSS 布局的核心之一。

  • 控制元素位置、层级、浮动、吸顶、悬浮、弹窗都离不开它。

  • 掌握定位 = 掌握网页布局的自由度。

二、定位的基础概念

1. 什么是定位(position)

  • 决定元素在页面中的位置计算方式。

  • 决定 top / right / bottom / left 是否生效。

  • 影响是否“脱离文档流”。

2. 文档流(normal flow)

  • 指浏览器默认的元素排列方式:从上到下、从左到右。

  • 元素一旦脱离文档流,不再影响其他元素的位置。

三、四种定位方式详解

1. relative — 相对定位《相对自身原来的位置》

  • 特点:

    • 相对于元素自身原始位置偏移;

    • 不脱离文档流;

    • 原本位置仍保留。

  • 用途:

    • 微调元素;

    • 为子元素的绝对定位提供参照。

  • 示例:

.parent { position: relative; }
.child { position: absolute; top: 0; right: 0; }

2. absolute — 绝对定位

  • 特点:

    • 脱离文档流;

    • 相对于最近的非 static 父元素定位;

    • 没有定位父时,默认相对于 body。

	默认情况下,所有元素的定位方式都是:position: static;非staticposition: relative;或 position: absolute;或 position: fixed;或 position: sticky;
  • 用途:

    悬浮框、弹窗、下拉菜单、气泡提示等。

  • 示例:

.menu {position: absolute;top: 50px;left: 0;
}

3. fixed — 固定定位

  • 特点:

    • 脱离文档流;

    • 相对于**视口(浏览器窗口)**定位;

    • 页面滚动时不会移动。

  • 用途:

固定导航栏、返回顶部按钮、浮动客服。

  • 示例:
.button {position: fixed;bottom: 20px;right: 20px;
}

4. sticky — 粘性定位

  • 特点:

    • 结合 relative + fixed 特性;

    • 在滚动到设定阈值前为相对定位;

    • 超过阈值后“粘住”视口。

  • 用途:

吸顶导航栏、章节标题、滚动索引。

  • 示例:
<div class="container"><div class="header">固定头部</div><div class="content"><div class="sticky">我是粘性标题</div><p>内容内容内容...</p><p>内容内容内容...</p><p>内容内容内容...</p><p>内容内容内容...</p><p>内容内容内容...</p></div>
</div>
.container {height: 300px;overflow: auto; /* 必须可滚动 */border: 2px solid gray;
}.sticky {position: sticky;top: 0; /* 滚动到顶部时粘住 */background: yellow;padding: 10px;
}

效果:

一开始 .sticky 跟着内容一起滚;

当它的顶部到达容器顶部时,就“贴住”了;

继续往下滚,当父容器滚完,它就跟着一起离开视口。

四、四种定位的对比总结

属性是否脱离文档流相对谁定位是否随滚动移动常见用途
relative❌ 否自身原位置✅ 是微调、父参考
absolute✅ 是最近定位父元素✅ 是弹窗、提示框
fixed✅ 是浏览器窗口❌ 否悬浮按钮
sticky❌(部分)最近滚动容器部分吸顶导航
http://www.dtcms.com/a/524219.html

相关文章:

  • mybatis基本使用
  • Linux网络的应用层协议HTTP
  • SQLite Group By 指令详解
  • 监理建设协会网站wordpress关注微信登陆
  • 常用串行通信协议核心区别(含CAN、SPI、I2C、UART、RS-485、Ethernet、USB)
  • LangChain1.0发布
  • 压缩与缓存调优实战指南:从0到1根治性能瓶颈(五)
  • 使用 RPM 包在 Linux 7 上安装 MySQL 8
  • 云服务器2008做网站wordpress用thinkphp
  • 仓颉标准库std源码深度解析:构建全场景智能应用的基石
  • C4D域力场的应用之粒子随风飘散解析
  • 自己做的网站别人怎么访问安康网站建设公司电话
  • uniapp小程序实现手动向上滑动窗口
  • vue3:uniapp全局颜色变量配置思路:使用js变量
  • wordpress调用 别的网站昆明seo网站排名
  • 网站建设模板素材重庆互联网大厂
  • 网络爬虫指南:从原理到实战
  • 小杰-自然语言处理(four)——transformer系列——注意力机制
  • Java SpringAOP --- AOP的使用,AOP的源码
  • 阿里云渠道商:如何设置阿里云的安全组规则?
  • 网站设计速成如何让百度快速收录网站文章
  • 北京平台网站建设多少钱学院网站建设的特色
  • 外贸soho建站多少钱山东省住房和城乡建设厅官方网站
  • 芯科科技推出智能开发工具Simplicity Ecosystem软件开发套件开启物联网开发的新高度
  • 报错: lfstackPack redeclared in this block / go版本混乱,清理旧版本
  • 和鲸科技入选《大模型一体机产业图谱》,以一体机智驱科研、重塑教学
  • Go语言:关于怎么在线学习go语言的建议
  • 树 B树和B+树
  • 【arXiv2025】Real-Time Object Detection Meets DINOv3
  • 绍兴网站建设专业的公司4000-262-怎么在百度上发帖推广