发布时间:2026/9/7 16:05:17
freeCodeCamp 响应式网页设计课程实战:用 CSS Absolute 定位将元素锁定到父容器 freeCodeCamp 响应式网页设计课程实战用 CSS Absolute 定位将元素锁定到父容器【免费下载链接】freeCodeCampfreeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free.项目地址: https://gitcode.com/GitHub_Trending/fr/freeCodeCamp本篇基于 freeCodeCamp 开源课程中的挑战文档 587d781e367417b2b2512acb.mdLock an Element to its Parent with Absolute Positioning完整讲解 CSSposition: absolute绝对定位的核心机制、最近的已定位祖先元素这一关键细节以及如何用top/right偏移量把元素锁定在父容器的指定角落。读完本文你将掌握绝对定位与相对定位的本质区别、定位参照系的查找规则并能独立编写通过课程测试断言的完整 CSS 代码。挑战定位它在 Responsive Web Design 课程中的位置该挑战属于 freeCodeCamp 课程目录curriculum中Responsive Web Design超级模块下的Applied Visual Design模块。可以从仓库中的两份结构文件确认这一层级关系超级模块定义 responsive-web-design.json 将applied-visual-design列为第三个 block顺序为 basic-html-and-html5 → basic-css → applied-visual-design → applied-accessibility → responsive-web-design-principles → css-flexbox → css-grid模块级挑战顺序文件 applied-visual-design.json 按challengeOrder数组精确排列了全部 50 个挑战其中本挑战587d781e367417b2b2512acb恰好排在一个完整的定位Positioning小节中间顺序挑战 ID标题前一个587d781e367417b2b2512ac9Change an Elements Relative Position前前一个587d781e367417b2b2512acaMove a Relatively Positioned Element with CSS Offsets本挑战587d781e367417b2b2512acbLock an Element to its Parent with Absolute Positioning后一个587d781e367417b2b2512accLock an Element to the Browser Window with Fixed Positioning课程设计者把relative→absolute→fixed三种定位方式连续编排意味着本挑战默认读者已经掌握CSS 盒模型与 normal flow正常文档流的概念以及position: relative配合top/bottom/left/right偏移量的用法。核心原理absolute 定位如何锁定元素absolute 与 relative 的本质区别按照挑战文档的 --description-- 部分position属性的下一个选项是absolute它把元素锁定在相对于其父容器的位置。它与relative定位的关键区别在于relative 定位元素仍然留在正常文档流中周围的其他元素仍把它想象在默认位置只是视觉上被偏移absolute 定位元素被完全移出正常文档流周围的元素会忽略它的存在如同它不再占据空间。因此使用 absolute 定位后原本紧跟在表单后面的内容会上移来填补空缺——这是绝对定位最常见的副作用也是课程后续 fixed 定位挑战587d781e367417b2b2512acc.md中其他元素不再知道它在哪里可能需要在别处调整布局这句话所强调的布局调整问题。关键细节参照系是最近的已定位祖先挑战文档特别指出一个容易被忽略的细节nuanceabsolute 定位是相对于其最近的已定位positioned祖先元素锁定的。如果你忘记给父元素添加 position 规则通常用position: relative;实现浏览器会继续沿祖先链向上查找最终默认回退到body标签。这意味着定位参照系的查找规则是从 absolute 元素自身开始逐级向上遍历 DOM 祖先链找到第一个position值不是static如relative、absolute、fixed的祖先以它作为定位基准若整条祖先链上都没有已定位元素则回退到body即视口/初始包含块。这条规则解释了为什么课程在挑战的起始代码seed里预先写好了section { position: relative; }——它正是为了把定位参照系钉在section上避免#searchbar以 body 为基准而跑到页面外的意外角落。挑战任务把 #searchbar 锁定到 section 的右上角题目要求文档 --instructions-- 部分给出的任务是将#searchbar元素锁定在其section父元素的右上角。声明它的position为absolute并分别设置top和right偏移量为 50 像素。注意这里用的是topright组合而非left把元素贴到右上角就是距离顶部 50px、距离右侧 50px。起始代码seed挑战编辑器中初始提供的代码如下style #searchbar { } section { position: relative; } /style body h1Welcome!/h1 section form idsearchbar label forsearchSearch:/label input typesearch idsearch namesearch input typesubmit namesubmit valueGo! /form /section /body其中#searchbar选择器内部留空等待学习者填写三条声明section { position: relative; }已提前给出作为绝对定位的参照容器。完整解法在#searchbar规则块中补全position、top、right三个声明后最终代码为style #searchbar { position: absolute; top: 50px; right: 50px; } section { position: relative; } /style body h1Welcome!/h1 section form idsearchbar label forsearchSearch:/label input typesearch idsearch namesearch input typesubmit namesubmit valueGo! /form /section /body效果搜索表单脱离文档流视觉上悬浮在section内容区距顶 50px、距右 50px 处section本身因为子元素不再占位其高度只由剩余内容决定。测试断言课程如何验证你的答案freeCodeCamp 的测试代码运行在预览页面的浏览器环境中通过window.getComputedStyle()读取元素的计算后样式而非你写的 CSS 原文逐项断言。文档 --hints-- 部分包含三条断言正好对应解法中的三条声明断言 1position必须为absoluteconst searchbarElement document.querySelector(#searchbar); const searchbarStyle window.getComputedStyle(searchbarElement); assert.equal(searchbarStyle?.position, absolute);断言 2top偏移必须为50pxconst searchbarElement document.querySelector(#searchbar); const searchbarStyle window.getComputedStyle(searchbarElement); assert.equal(searchbarStyle?.top, 50px);断言 3right偏移必须为50pxconst searchbarElement document.querySelector(#searchbar); const searchbarStyle window.getComputedStyle(searchbarElement); assert.equal(searchbarStyle?.right, 50px);这里有两个值得注意的工程细节断言比较的是字符串50px带单位因为计算样式的长度值统一以px字符串形式返回测试通过document.querySelector(#searchbar)按 ID 选中目标元素因此 HTML 中不能改动idsearchbar只能修改style内容。同样的验证模式也出现在前一挑战 Change an Elements Relative Position 与后一挑战 Lock an Element to the Browser Window with Fixed Positioning 中可以看出 freeCodeCamp 对定位类挑战采用了一套统一的计算样式断言测试策略。挑战文件的元数据结构Front Matter 字段解读从 challenge-schema.js 校验规则可以看到这类课程挑战文件challengeType: 0即传统代码挑战的 YAML front matter 各字段含义如下本挑战文件即为一个标准实例字段本挑战取值说明id587d781e367417b2b2512acb挑战全局唯一 ID与 applied-visual-design.json 中challengeOrder的条目对应titleLock an Element to its Parent with Absolute Positioning挑战标题challengeType0挑战类型编号schema 要求为 0–33 的整数videoUrl外部视频地址配套教学视频链接forumTopicId301060关联的官方论坛讨论帖编号schema 中定义为可选数值字段dashedNamelock-an-element-to-its-parent-with-absolute-positioning用于 URL 的 kebab-case 短名schema 要求匹配 slug 正则文件正文则由# --description--、# --instructions--、# --hints--、# --seed--含## --seed-contents--、# --solutions--等固定分节标记组成这些标记正是 freeCodeCamp 课程解析器识别的内容区块。常见误区与后续学习路线误区一absolute 元素相对父元素定位是自动的。如前所述参照系必须是已定位祖先。若移除 seed 中预先给出的section { position: relative; }#searchbar的参照系将向上回溯至bodytop: 50px; right: 50px会变成相对整个页面视口/文档的定位表单很可能飞出section的可见区域。误区二把left当成贴到左边。CSS 偏移量的语义是距离该侧的距离left: 50px表示距左边 50px元素向右移而贴右上角应使用right。这一远离参考边的心智模型在前一挑战 Move a Relatively Positioned Element with CSS Offsets 中已被专门讲解left偏移使元素向右移动top偏移使元素向下移动。误区三忽略脱离文档流后的布局塌陷。#searchbar被移出 normal flow 后section内不再有可见子元素占据空间。在实际项目中常需要给父容器显式设置高度或改用其他占位手段这一点课程在后继的 fixed 定位挑战中再次提醒其他元素不再知道它被放在哪里可能需要在此处之外的地方做布局调整。后续路线完成本挑战后课程紧接着要求用position: fixed; top: 0; left: 0把导航栏锁定到浏览器视口fixed 定位挑战随后进入float与z-index章节处理多列布局与层叠上下文问题。小结本挑战用不到十行 CSS 浓缩了绝对定位的三个核心知识点position: absolute将元素移出文档流周围元素忽略其占位定位参照系是最近的已定位祖先缺省回退到body——给父容器加position: relative是控制参照系的标准做法top/right/bottom/left偏移量表示距离对应边缘的距离测试环境通过getComputedStyle以50px之类的计算值字符串进行严格断言。挑战源文件位于 curriculum/challenges/english/blocks/applied-visual-design/587d781e367417b2b2512acb.md可直接在仓库中查看其 description、instructions、hints、seed 与 solutions 的完整原文也可结合 curriculum/schema/challenge-schema.js 理解课程文件的字段约束。【免费下载链接】freeCodeCampfreeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free.项目地址: https://gitcode.com/GitHub_Trending/fr/freeCodeCamp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/9/7 16:00:15

笔记本无法关机?电源灯亮风扇转的完整排查与修复方案

我前几天接到一个朋友的求助,说他的笔记本按了关机,屏幕都黑了,但电源灯还亮着,风扇也一直在转,跟没关一样。最后只能长按电源键强制断电。我相信遇到过这个问题的朋友不止他一个,这期内容我就把这个故障的…

2026/9/7 16:00:15

AMD Ryzen 7 9700X烤机测试:九州风神AG600G2散热性能深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/7 17:00:22

Scikit-learn模型评估实战:从数据划分到指标选型

做机器学习这行时间长了,你会发现一个特别有意思的现象:很多人花大把时间调模型、攒特征,却对模型评估这件事不太上心。模型训练完了print一下accuracy,看着0.95就觉得大功告成,然后到了真实场景里被现实狠狠教育一顿。…

2026/9/7 17:00:22

虚拟歌手翻唱技巧:从气息控制到录音混音的全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/7 17:00:22

Kafka与Cassandra构建实时数据管道的架构设计与实践

1. 为什么把 Cassandra 和 Kafka 放在一起用 做大数据开发这几年,有一个组合让我踩过的坑最多,但收益也最大,那就是 Kafka 和 Cassandra 一起搭实时数据管道。第一次真正把它用到生产环境,是给一个车联网项目做轨迹数据采集&#…

2026/9/7 17:00:22

Geneformer虚拟扰动分析:从Transformer到虚拟基因敲除与SHAP解释

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/7 16:55:22

Linux系统信息查看全攻略:跨发行版命令详解与实战

入行这么多年,我接触过的服务器没有一千也有八百台,从最早的物理机到后来的云主机,从 CentOS 6 到现在的 Ubuntu 24.04、Debian 12,每次接手一台新机器,第一件事永远是同一件:把系统信息摸清楚。这个问题看…

2026/9/7 0:47:43

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/7 0:14:19

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/7 0:14:17

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/7 0:03:36

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

2026/9/7 0:03:36

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

2026/9/7 0:03:36

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/6 19:33:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/6 10:19:40

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…