十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

freeCodeCamp CatPhotoApp 实战:用 Bootstrap `text-center` 类让 `h2` 标题居中(含题目断言与源码拆解)

freeCodeCamp CatPhotoApp 实战:用 Bootstrap `text-center` 类让 `h2` 标题居中(含题目断言与源码拆解) freeCodeCamp CatPhotoApp 实战用 Bootstraptext-center类让h2标题居中含题目断言与源码拆解【免费下载链接】freeCodeCampfreeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free.项目地址: https://gitcode.com/GitHub_Trending/fr/freeCodeCamp本篇技术指南以 freeCodeCamp 课程 Responsive Web Design 前身的 CatPhotoApp 练习Center Text with Bootstrap挑战 IDbad87fee1348bd8acde08812为骨架讲清 Bootstrap 3 中text-center这一排版工具类的用法、多 class 叠加的 HTML 书写规则以及该练习在 freeCodeCamp 仓库中如何以 Markdown 结构组织、如何被 schema 校验并转成可自动评分的交互练习。读完本文你将掌握在纯 CSS 之外借助 Bootstrap 框架工具类完成居中排版的最小可行方案并能读懂 freeCodeCamp 课程文件--description--/--hints--/--seed--/--solutions--的内在机理。挑战定位Bootstrap 练习块中的第三步在 freeCodeCamp 课程目录中这道题位于curriculum/challenges/english/blocks/bootstrap/目录下文件名即挑战短名bad87fee1348bd8acde08812.md挑战源文件。整个 Bootstrap 教学块由 curriculum/structure/blocks/bootstrap.json 描述从challengeOrder数组可以还原出这一练习在课程流中的准确位置它排在 Use Responsive Design with Bootstrap Fluid Containers引入container-fluid容器与 Make Images Mobile Responsive引入img-responsive之后是块的第三个练习紧随其后的是按钮、网格等进阶内容。也就是说做这道题时页面里已经引入了container-fluid布局容器头部也已有h2元素本练习的任务非常纯粹只给h2加一个text-center类把标题文字水平居中。该块隶属的 SuperBlock 在 curriculum/structure/superblocks/front-end-development-libraries.json 中登记与jquery、sass、react、redux等块并列因此阅读源码时你会看到blocks: [bootstrap, ...]的顺序定义。为什么居中靠一个类就能完成Bootstrap 工具类原理题目描述中有一句关键提示Now that were using Bootstrap, we can center our heading element to make it look better. 这里的were using Bootstrap在本仓库中体现为块的依赖声明。在 curriculum/structure/blocks/bootstrap.json 的required字段中可以看到required: [ { link: https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css } ]即本块的所有练习页面都会在运行时注入Bootstrap 3.3.7的完整样式表CSS 框架通过 CDN 加载。text-center正是 Bootstrap 提供的大量工具类/工具类utility class之一它内部极简地封装了一条规则text-align: center;。这一点解释了整个练习的设计哲学凡是框架自带工具类能覆盖的常规排版居中、颜色、间距、响应式图片等就优先复用工具类而不是为每个页面手写重复的 CSS 声明。Bootstrap 的 class 命名把样式意图直接写进 HTML开发者阅读标签时即可立刻感知其视觉行为这也是后续 Ditch Custom CSS for Bootstrap源文件练习扔掉自定义 CSS 改用框架类的伏笔。动手实现给h2添加text-center类题目给出的任务只有一句add the classtext-centerto yourh2element并特别强调了一条 HTML 基础规则同一个元素上可以叠加多个 class只需用空格分隔它们。h2 classred-text text-centeryour text/h2一步步修改练习的起始代码--seed--中--seed-contents--部分是一段完整的 CatPhotoApp 页面其中h2目前带着上一步自定的红色文字类h2 classred-textCatPhotoApp/h2只需在class属性内追加text-center保持red-text不动h2 classred-text text-centerCatPhotoApp/h2类名的次序对渲染结果没有影响——HTML 的class属性是空白分隔的类名列表CSS 工具类彼此独立先后顺序不改变各自的样式声明。这里同时展示了 Bootstrap 工具类与自定义样式类.red-text控制颜色如何共存于同一元素上互不干扰。参考解答以下为练习内置的标准答案取自该文件的--solutions--部分供对照验证它与起始代码的唯一差异就是把text-center追加到h2的 class 列表中link hrefhttps://fonts.googleapis.com/css?familyLobster relstylesheet typetext/css style .red-text { color: red; } h2 { font-family: Lobster, Monospace; } p { font-size: 16px; font-family: Monospace; } .thick-green-border { border-color: green; border-width: 10px; border-style: solid; border-radius: 50%; } .smaller-image { width: 100px; } /style div classcontainer-fluid h2 classred-text text-centerCatPhotoApp/h2 pClick here for a href#cat photos/a./p a href#img classsmaller-image thick-green-border srchttps://cdn.freecodecamp.org/curriculum/cat-photo-app/relaxing-cat.jpg altA cute orange cat lying on its back./a img srchttps://cdn.freecodecamp.org/curriculum/cat-photo-app/running-cats.jpg classimg-responsive altTuxedo cats running on dirt ground. pThings cats love:/p ul licatnip/li lilaser pointers/li lilasagna/li /ul pTop 3 things cats hate:/p ol liflea treatment/li lithunder/li liother cats/li /ol form actionhttps://freecatphotoapp.com/submit-cat-photo labelinput typeradio nameindoor-outdoor Indoor/label labelinput typeradio nameindoor-outdoor Outdoor/label labelinput typecheckbox namepersonality Loving/label labelinput typecheckbox namepersonality Lazy/label labelinput typecheckbox namepersonality Crazy/label input typetext placeholdercat photo URL required button typesubmitSubmit/button /form /div注意起始代码里第二张图片已经带有img-responsive、外层div已带container-fluid这些都是前两道练习的成果本练习刻意不要求改动它们以便学习者将注意力集中于文本居中这一单一知识点。自动评分在验证什么读懂--hints--断言freeCodeCamp 练习不是靠肉眼判分的每道题的--hints--段落存放运行时执行的断言。本练习只有两条源码如下assert.isTrue(document.querySelector(h2)?.classList?.contains(text-center));assert.isTrue(document.querySelector(h2)?.classList?.contains(red-text));两条断言共同验证了一个完整的需求边界值得逐层拆解document.querySelector(h2)在练习页面的 DOM 里选中第一个也是唯一一个h2元素验证修改作用在正确的目标上?.classList?.contains(...)利用可选链optional chaining安全地访问元素上由浏览器生成的DOMTokenList再调用contains判断是否包含指定类名——这正是按类名给元素加样式的标准 DOM 检查手段第一条断言h2必须包含text-center否则判不通过第二条断言h2仍然包含red-text——这一条极易被粗心学习者破坏如果只追求居中而把classred-text整段替换成classtext-center虽然视觉上标题居中但断言会失败。它提醒我们新增工具类应当叠加而非替换已有类除非题目明确要求移除旧类。两段断言配合起来恰好完整定义了练习的验收标准居中达成、原有样式保留。这也是阅读任何 freeCodeCamp 练习--hints--时的通用方法论——把每条assert翻译成页面必须满足的一个不变式。课程文件的内部结构Markdown 分区与 schema 校验这份.md表面是 Markdown内部却是一种结构化的挑战描述语言由# --...--分隔符划分成若干语义分区前导 YAML frontmatter 提供元数据--- id: bad87fee1348bd8acde08812 title: Center Text with Bootstrap challengeType: 0 forumTopicId: 16771 dashedName: center-text-with-bootstrap ---id全局唯一挑战标识也用于 curriculum/structure/blocks/bootstrap.json 的challengeOrder中按序引用title挑战展示名challengeType: 0表示这是一个浏览器内直接运行、以 HTML/CSS 代码作答的课程型练习type 0 为该类 HTML 练习dashedName用于生成 URL 与文件命名。正文部分按序出现# --description--题干、# --hints--自动断言、# --seed--下的## --seed-contents--学员起始代码与# --solutions--参考解答。这套格式并非仓库中随意约定的文本而是由 curriculum/schema/challenge-schema.js 中的 Joi 校验严格约束的例如从源码可以看到solutions被声明为数组的数组、且每项至少包含一个文件challenge-schema.js 第 365 行而tests对应 hints 转换后的运行时断言必须带text与testString字段。也就是说任何人向本仓库提交新练习时只要字段缺失或类型不符就会被 schema 校验直接拦截。从引擎角度理解整道题的流转路径是解析器按--description-- / --hints-- / --seed-- / --solutions--分区抽取内容 → schema 校验元数据与结构合法性 → 前端把--seed--渲染成可编辑的起始代码、把--hints--编译为运行时断言、用--solutions--供学员查看参考答案。因此本文展示的红字标题居中这个小改动背后是一整套可复用的练习内容管道。多 class 叠加的通用性与延伸建议h2 classred-text text-center这种自定义类 框架工具类叠加的写法是使用任何 CSS 框架Bootstrap、Tailwind 等时的核心习惯。可以从中提炼三条可持续的实践原则语义与工具分离red-text这类自定义类承载这行文字应是品牌红的语义text-center这类工具类承载水平居中的通用排版意图二者职责不同所以能安全叠加空间分隔、不要逗号HTML 规定 class 之间只能用空格分隔写逗号会把整串当做一个类名导致全部样式失效——这是新手最常见的语法错误之一叠加优于覆盖除非题目/需求明确移除某类否则新增工具类时应保留原有类名避免破坏既有样式与相关断言。练习完成后还可以沿两条线索在本仓库中继续深挖在块内延续在 curriculum/challenges/english/blocks/bootstrap/ 中对比相邻文件例如 Ditch Custom CSS for Bootstrapbad87fee1347bd9aedf08845.md的起始代码里h2仍带classred-text text-center可见该居中效果在整个 CatPhotoApp 系列里被持续沿用直到后续练习逐步把自定义类替换为text-primary等 Bootstrap 语义类——这本身就是工具类思维进阶的活教材。在块间对照同一 SuperBlock 下的 jQuery、React 等块练习复用了完全一致的 Markdown 分区与 schema 校验机制front-end-development-libraries.json 就是浏览它们全貌的索引入口。一句话收束本练习的收获给h2补上text-center这一小步实际上完成了从手写居中 CSS到认读并复用一个成熟 CSS 框架工具类的思维切换——它让开发者体会到常规排版需求不必每次都从零编写规则框架提供的最小可复用单元工具类就是答案本身。【免费下载链接】freeCodeCampfreeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free.项目地址: https://gitcode.com/GitHub_Trending/fr/freeCodeCamp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表