「经历」
我学习前端已经5年多了,当时学前端是没有系统化学习的。一开始边看文档,连滚带爬学HTML和CSS排版
WEB开发这个过程让我深入感觉到那时候前端的革命性变化。庞大的前端知识扑面而来,也没有想到前端已经发展到这样一个地步。这段时间让我深刻领会到前端的博大精深,并且被前端这个技术领域深深的吸引住了。
最近我发现,现在学习技术容易了很多。有各种技术文章、手摸手教学、线上培训课程和视频,甚至还有全免费的线上学习课程和练习。相比以前从看文档,连滚带爬的在项目中试错式的学习真的是容易多了。
「前言」
我们都深刻知道,如果想在前端走的更远更久,基础知识必须是要牢固的。最近发现一个《FCC前端集训营》 。于是忍不住就去研究了一下。我发现里面的课程确实很全面,而且还有实时和实战编程练习。就算是对于零基础的同学,也是可以开始学习编程的。
使用《FCC前端集训营》,每一个知识学习完成后会给大家发放一个证书,然后每一个关键学习点之后,还有项目实战。
无论这些证书是否对我们在中国的企业有一定的价值。但是能获得多一个证书,没有什么不好的呀。废话不多说了,我们这里就开始勇闯第一课《基础HTML与HTML5入门》!
「规则」
每一篇文章的大概内容:
- 首先我们每一篇文章会尽量包含一个大知识点中的N个关卡。每一个知识点的关卡数量不一,所以有时候可能会拆分成几篇文章来讲说。
- 每一个关卡当中的知识点在freeCodeCamp中有一定的知识材料。但是在一起闯关的文章当中也会做一些详细的知识补充和一些有趣的理解方式。
- 每一个较难的关卡,都会在文章当中做详细的思路,多种实现方式等等的讲说,让我们在每一个关卡中能带走更多深层的知识点。
FCC使用教程
课程内容
FCC一共有6大课程,一共大约1800个小时的内容和练习。如果是新人,推荐从第一个开始一个一个闯关学习。如果是老司机,是来这里学习你需要的知识,那可以随意选择你需要的课程开始学习。
- 响应式Web设计(300个小时)
- 算法和数据结构(300个小时)
- 前端库和框架(300个小时)
- 数据可视化(300个小时)
- API和微服务(300个小时)
- 信息安全和质量保证(300个小时)
- 最后还有一个是数千个小时的面试题可以提供给我们使劲的刷哦!
进入关卡
我们先从左边 👈 部分的内容开始说明:
简单讲说了这个关卡涉及的知识点
描述关卡的挑战内容
本关卡的所有目标,点击测试代码的时候,完成的会出现 ✅,没有全部 ✅那就是还有部分我们没有实现哦。所有 ✅才能通关。
接下来就是说明中间的代码区:
代码区,用于编写我们这个关卡的代码。
错误输出区域,当我们点击测试代码后,如果有错误就会显示在这里。
最后,最右边的部分是代码被编译后的效果,也就是我们在代码去编写的代码最终会在浏览器呈现出来的效果。
提交代码/测试成功后:
「知识」闯关基础知识点
HTML是什么?
HTML 的全称是 HyperText Markup Language(超文本标签语言),它是一种用来描述网页结构的标签语言。
它采用一种特殊的语法或符号来组织网页的内容,元素通常都有开始标签和结束标签,例如标题、段落、列表。
HTML5是什么?
HTML5超文本标记语言是一种用于描述网页结构的标记语言。它使用特殊的语法或符号来组织有关页面的信息并将其提供给浏览器。元素通常具有围绕内容并赋予内容含义的开始和结束标签。例如,可以在文本周围放置不同的标记选项,以显示它是标题,段落还是列表。
基础知识弄懂了,我们马上就来开始闯关吧!GO GO GO!
「第一关」向HTML元素与世界问好
关卡名:
Say Hello to HTML ElementsPassed
知识点
- 这一关我们看到代码区域有
<h1>hello</h1>
这一段代码,这个就是所谓的HTML元素了! - HTML中每一个标签都需要开始与结束标签:
<h1>
为开始,</h1>
为结束。 - 开始与结束标签的区别,就是结束标签多了/(斜杠)。
过关目标
- 修改开始标签
<h1>
与关闭标签</h1>
之间的内容。 - 把内容从Hello改为Hello World。
学会了什么?
这关卡主要教会我们:
- HTML中的开始与结束标签的格式与规范
- 标签的内容是什么
- 如何修改标签内容
答案
「第二关」使用H2元素加入副标题
关卡名:
Headline with the h2 Element
接下来的几个关卡中,我们会慢慢的一步一步的搭建一个HTML5的 “猫星人图片的网页应用”。
知识点
h2元素是常用的副标题,其实就是比h1字体要小的标题,用过WPS或者word文档的童鞋应该秒懂了。
这些标题标签会告诉浏览器去显示一些默认的标题样式
h1一般用于网页大标题,而h2就是用于副标题。
其实在HTML当中还有很多自带的标题元素,例如h3,h4,h5和h6,每一个代码一个等级的副标题,这里数字越大,标题的大小就越小哦。
过关目标
在h1标签后面(第二行)加入一个h2标签。
并且在h2元素中加入CatPhotoApp的文字内容。
过关条件
创建一个h2元素
- h2元素必须有一个结束标签
- h2元素必须含有"CatPhotoApp"的文字内容
- h1元素必须含有"Hello World"的文字内容
学会了什么?
这关卡主要教会我们:
4. 什么是副标题
5. HTML有哪些副标题
6. 如何加入副标题
答案
「第三关」段落元素加入信息内容
关卡名:
Inform with the Paragraph Element
知识点
- p是paragragh(段落)的缩写,就是我们在写文章中的段落一样,一般都是用来放信息内容的。
- 我们可以用
<p>
我是一个p标签</p>
,这样的方式来加入段落元素。
过关目标
- 在我们的h2元素下方加入p元素。
- 在p元素的内容中加入文字"Hello Paragraph"。
- 注意:HTML的规范中说明,所有标签的英文字母都必须使用小写!
过关条件
- 代码中必须有一个规范的p元素。
- p元素中必须含有文字"Hello Paragraph"。
- p元素必须有一个结束标签。
学会了什么?
这关卡主要教会我们:
- p元素是什么
- 如何加入信息内容段落
答案
「第四关」加入“占位”文字
关卡名:
Fill in the Blank with Placeholder Text
知识点
- 开发者们用一个传统,就是在没有内容的时候,排版时都会用统一的占位文字“lorem ipsum text”。很多人很好奇,为什么都用这个?
- Lorem ipsum从15世纪开始就被广泛地使用在西方的印刷、设计领域中,在电脑排版盛行之后,这段被传统印刷产业使用几百年的无意义文字又再度流行。由于这段文字以“Lorem ipsum”起头,并且常被用于标题的测试中,所以一般称为Lorem ipsum,简称为Lipsum。
过关目标
- 把p元素的内容替换成这一段占位文字:“Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.”
过关条件
- p元素需要含有“kitty ipsum text”的首几个单词。
学会了什么?
这关卡主要教会我们:
- 什么是“lorem ipsum text”
- 为什么“lorem ipsum text”经常用于设计和排版的占位文案
答案
「第五关」清除HTML代码注释
关卡名:
Uncomment HTML
知识点
- 代码注释是为了在代码中留下备注的一种常用写法。通常为了给自己和其他开发者留下有意义的备注,让大家可以更容易的懂得代码的作用或者含义。
- 代码注释是不会影响代码的运行,或者是显示出来给到用户看到的。
- 代码注释还有一个非常使用的目的,就是屏蔽代码。被注释的代码就不会被编译器运行,这样被注释的代码就不会生效了。
- 不同语言有不同的注释写法,HTML的注释写法开始是
。例如:
<!-- <p> abc </p> -->
。
过关目标
- 此关卡的代码都被注释掉了,所以所有的代码都没有生效。
- 我们需要清除掉这里的注释,让h1,h2和p元素生效。
过关条件
- 页面预览区需要可以看到h1元素内容
- 页面预览区需要可以看到h2元素内容
- 页面预览区需要可以看到p元素内容
- 页面中没有遗漏结束注释标签–>
学会了什么?
这关卡主要教会我们:
- 什么是代码注释
- 代码注释有什么作用
- 如何清除代码注释
答案
「第六关」局部HTML代码注释
关卡名:
Comment out HTML
知识点
- 上一关我们看到可以把整个代码注释掉,但是其实很多时候我们可能需要注释掉局部的代码,或者是多段代码。
- 使用方式也是一样的,在想开始注释的地方加入
<!---,然后结束的地方加入-->
。
过关目标
- 注释掉整个h1元素和p元素,h2元素要生效。
过关条件
- h1元素应该被注释掉,页面看不到该元素效果
- p元素应该被注释掉,页面看不到该元素效果
- 页面预览区需要可以看到h2元素内容
- 每一段注释都应该有结束注释标签–>
- h1,h2和p元素在代码中的顺序不能变
学会了什么?
这关卡主要教会我们:
- 如何局部注释代码
答案
「第七关」删除HTML元素
关卡名:
Delete HTML Elements
知识点
- 场景:因为手机的屏幕高度可呈现的空间不多,所以我们要把h1元素删除掉。
- ⚠️注意:
删除代码和注释代码都有一个一样的原则。就是开始与结束的标签不能缺了其中之一,要不代码就会报错。所以删除元素的时候也要注意元素的开始与结束标签的完整性。
过关目标
- 删除掉代码中的h1元素,让我们的页面更加整洁和更有空间感。
过关条件
- h1元素应该被完整的被删除
- 页面预览区需要可以看到h2元素内容
- 页面预览区需要可以看到p元素内容
学会了什么?
这关卡主要教会我们:
- 如何正确的删除元素
答案
「第八关」HTML5元素
关卡名:
Introduction to HTML5 Elements
知识点
- HTML5给我们带来了更多具备丰富代表性的HTML标签。这些标签包括main(主要内容)、header(头部)、footer(脚步)、nav(导航)、video(视频)、article(文章)、section(区域/分段内容)和更多。
- 这些标签给HTML的结构带来了更多可描述性的意义。就好像人体也有很多代表性的结构与区域名称,比如说:肱骨、股骨、腕骨、肩胛和不规则骨等等。
- 人体的骨头要分类,也是为了让医生更好的在大量的骨头中找到或者描述到具体的那种骨头。那HTML5中的这些丰富的标签也是一样的。他们可以更好的帮助搜索引擎找到对应的内容,加入这些标签也让我们的网页做到更好的搜索引擎优化(SEO)。
什么是搜素引擎?
我们可以把搜索引擎看作是一本很大很大的书中的目录。我们想想在现代的互联网中,全世界有多少个网站或者网页应用?如果没有一个目录让我们可以搜索,我们怎么可以找到我们想看的内容或者网站?可以说基本是不可能的!
搜索引擎怎么运作?
那搜索引擎的目录是怎么生成的呢?这个世界有一种很厉害的虫,那就是"爬虫"。每天搜索引擎的公司会派出成千上万的爬虫军队出去,在互联网上到处找网站,然后进入每一个网站中阅读里面的内容。然后收集回来的内容会经过做过滤和分析,然后建立关键词等等,最后生成一个搜索目录。我们经常用的搜索引擎包括:百度搜索,谷歌搜索,搜狗搜素,360搜素等等。
用其中一个标签来举例,一个main元素中嵌套了两个子元素:
<main>
<h1>Hello World</h1>
<p>Hello Paragraph</p>
</main>
注意:这些HTML5的标签的作用和适用性会在后面的“Applied Accessibility(应用无障碍)”的课程中详细讲说。
过关目标
- 在原有的p元素下方添加一个新的p元素,并且加入这段内容
Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
- 然后用一个main元素两个p元素包裹起来。
过关条件
- 应该有2个p元素,每个都有文字内容
- 每个p元素都有结束标签
- 第二个p元素的内容含有“Purr jump eat…”这段文字
- 代码中必须含有main元素
- main元素中必须含有两个p子元素
- main元素开始必须在第一个p元素之前
- main元素结束必须在第二个p元素之后
学会了什么?
这关卡主要教会我们:
- 学到了更多丰富的HTML5标签
- 学会使用main元素
- 学会嵌套元素
答案
「第九关」网站中插入图片
关卡名:
Add Images to Your Website
知识点
- 我们可以通过使用img元素为我们的网页插入图片,然后使用元素中的src属性来指定图片地址。
⚠️ 注意:img元素是不需要结束标签的,它是属于自动关闭型元素。
- W3C规范中,所有img必须填写alt属性(alt是“Alternative”的缩写,就是“替代”的意思)。当一个图片无法加载或者显示时,alt属性的值就会替代这个图片显示出来。
- 另外alt对于搜索引擎优化是有一定的帮助的,因为这个属性是用来描述一个图片的。如果这个图片是一只猫,对于搜索引擎的爬虫会针对图片的Alt取得关于这个图片的描述。这样搜索引擎才能知道这个图片大概是什么。
⚠️ 注意:
- 如果图片是单纯为了装饰的,那alt就留空:alt=""
- 尽量不要在alt属性中加入特殊字符(或者符号),除非是必须的
一个完整的img元素例子如下:
<img src="https://www.your-image-source.com/your-image.jpg" alt="Author standing on a beach with two thumbs up.">
过关目标
- 在
main
元素中的p元素之前添加img元素。 img
元素的src属性的值指向https://bit.ly/fcc-relaxing-cat
- 给予
img
元素的alt
属性一个合适的名字:比如“Kitty” (小猫咪的意思)
过关条件
- 页面中必须有一个img元素。
- img元素中的src属性指向一个猫咪的图片地址。
- img元素中的alt属性值不能为空。
学会了什么?
这关卡主要教会我们:
- 如何使用img图片元素
- 懂得使用src属性
- 懂得使用alt属性
答案
「第十关」使用锚元素实现链接跳转
关卡名:
Link to External Pages with Anchor Elements
知识点
- 在HTML当中,a (锚) 元素是用于跳转页面,可以是内部页面或者是外部页面。(内部指的是本网站内的页面,外部指的是本网站以外的其他网站的页面。)
- a 元素需要一个网页地址的属性叫href。也需要一个anchor text(锚文字):
例如:
<a href="https://freecodecamp.org">这个链接会跳转到 freecodecamp.org</a>
- 网页地址:https://freecodecamp.org
- 锚文字(其实就是跳转链接的文案):这个链接会跳转到 freecodecamp.org
- 使用以上例子,在浏览器中就会显示一段文字链接 “这个链接会跳转到 freecodecamp.org”,点击该链接就会跳转到https://www.freecodecamp.org这个网址。
额外知识点:
- 以上例子讲说的是跳转外部链接,如果我想跳转当前网址的子页面呢?(所谓的内部跳转,但是其实还可以做到当前页面的位置跳转,这个下一个关卡就会学到咯!)
- 比如现在我们当前的页面是"www.freecodecamp.org",我们的链接想跳转到“www.freecodecamp.org/learn”。
这个时候我们的a元素的href属性可以这么写
<a href="/learn">这个链接会跳转到 freecodecamp.org/learn</a>
过关目标
创建一个a元素,链接文案为“cat photos”,并且指定跳转到http://freecatphotoapp.com
过关条件
a元素的链接文案必须含有“cat photos”
a元素的跳转地址必须是http://freecatphotoapp.com。
a元素必须有结束标签。
学会了什么?
这关卡主要教会我们:
- 如何在网页中添加链接
- 懂得使用href属性
- 懂得如何添加链接文案
答案
「第十一关」使用锚元素跳转内部页面区域
关卡名:
Link to Internal Sections of a Page with Anchor Elements
知识点
- a(锚)元素还可以用于跳转页面内部的特定区域。
- 创建一个内部跳转链接,首先我们需要在href属性的值中绑定一个哈希符号#和一个唯一id属性。
- id属性是在HTML中任何一个元素都可以绑定的唯一标识。id属性可以给予一个元素一个唯一的识别名,让这个元素可以在HTML中被选择到。
以下是一个内部跳转链接的例子,其中的…代表被省略的一段代码。
<a href="#contacts-header">Contacts</a>
...
<h2 id="contacts-header">Contacts</h2>
我们来分析一下这个例子:
- 这里的h2元素被绑定了一个id属性,名字为“contacts-header”。
- 我们的a元素链接的指定href跳转地址为#contacts-header。
- 我们可以看到#后面的名字与h2的id值一致,就是这样点击这个链接的时候,页面就会移动到绑定了同一个名字的元素的位置。
- 我们要注意的是id属性的值,在当前页面中必须是唯一的。
知识点:
在这个例子里面,我们可以看到a元素多了一个target属性。这个属性在链接中是非常常用的。我们经常用的各大电商平台,我们点击一个商品的链接都会打开一个新窗口,但是有一些链接就不会。这种就是用target属性控制的。
target属性的常用值有:
- _blank:在新窗口中打开被链接文档。
- _self:默认。在相同的框架中打开被链接文档。
- _parent:在父框架集中打开被链接文档。
- _top:在整个窗口中打开被链接文档。
- framename:在指定的框架中打开被链接文档。
过关目标
- 修改我们的外部跳转链接的href属性为#footer,并且把链接的文案“cat photos”改为"Jump to Bottom"。
- 移除target="_blank"属性,因为这个属性会让我们的链接在全新的窗口打开这个跳转链接。
- 最后在页面最底部的footer元素中添加id属性,属性值为"footer"。
过关条件
- 页面中必须含有一个锚元素
- 页面中只有一个footer标签
- a元素的href属性值必须是#footer
- a元素必须没有target属性
- a元素的链接文章应该是“Jump to Bottom”
- footer元素的id属性值必须是"footer"
学会了什么?
这关卡主要教会我们:
- 如何在网页中添加内部链接
- 懂得使用id属性
- 懂得使用哈希符号链接跳转
答案
「第十二关」文章中嵌套锚元素
关卡名:
Nest an Anchor Element within a Paragraph
知识点
我们可以在文字中添加链接:
<p>
Here's a <a target="_blank" href="http://freecodecamp.org"> link to freecodecamp.org</a> for you to follow.
</p>
分析一下这个例子的实现原理:
- 首先我们有一个文字段落
<p>Here's a ... for you to follow.</p>
- 在这个文字段落中"…“的部分我们加入a (锚) 元素:
<a href="http://freecodecamp.org"> ... </a>
,这里我们用a元素包裹了”…"这个文字内容,这样这个文字内容就会变成一个链接,并且可点击跳转网页。(记住这里需要我们有开始<a>
与结束</a>
标签,这样才能指定这个链接的开始与结束区域)- 这里
a
元素中加入target="_blank"
可以让链接在新窗口打开,href
属性指定了跳转链接。- 最后"…“的内容在这个例子里面就是” link to freecodecamp.org",也就是链接的文案(锚文字)。
过关目标
- 首先在main元素中加入一个新的p元素。
- p元素中的文案写入"View more cat photos"。
- 使用我们原来的a元素替换这段文案中的“cat photos”,从而把这段文案中的"cat photos"改为一个链接。
过关条件
- a元素的链接需要指定跳转"http://freecatphotoapp.com"
- a元素的链接文案应该是“cat photos”
- a元素需要被p元素包裹着,然后main元素中需要一共有3个p元素
- a元素需要被新的p元素包裹着,不能是其他的p元素
- p元素中必须含有“View more ” (more后面需要含有一个空格)
- a元素中不能含有“View more”等文字
- 所有p元素必须有结束标签
- 所有a元素必须有结束标签
学会了什么?
这关卡主要教会我们:
- 在文章段落中添加链接
答案
「第十三关」使用哈希符号创建死链接
关卡名:
Make Dead Links Using the Hash Symbol