FreeCodeCamp - HTML5 and CSS

FreeCodeCamp - HTML5 and CSS

发现原来在另外一台电脑学 FreeCodeCamp 的时候代码会不见。。。真的是无语了。

算了,我自己整理答案给自己看吧。

Say Hello to HTML Element

欢迎来到FreeCodeCamp的第一个编码挑战!

整个课程的设计围绕两个原则:所见即所得、循序渐进。

界面简洁直观,左边是课程区、中间是编辑区、右边是显示区。

HTML是英文Hyper Text Markup Language(超文本标记语言)的缩写。

你看到

Hello

了吗?

h1就是一个HTML元素h1header1的简写,意思是一级标题。

大部分元素都有一个开始标记和一个结束标记

开始标记像这样:

结束标记像这样:

开始标记和结束标记的唯一区别就是结束标记多了一个/

每个挑战都有测试,当你写完代码后可以点击Run tests,如果代码通过测试,你将获得学习积分。

如果你点击Run tests后没反应,说明测试没通过,用鼠标拖动课程区的滚动条到最下面,可以看到你没有通过测试的详细原因。

任务:请更改h1标签中的Hello为Hello World,然后点击Run tests

Hello World

Headline with the h2 Element

接下来我们会设计一个类似于下图的页面:

FreeCodeCamp - HTML5 and CSS_第1张图片
A screen shot of our finished Cat Photo App

h是英文header标题的缩写,标题无处不在,它的应用范围十分广泛:网站结构、写作文、PPT等。h1是主标题,h2是副标题,h3、h4、h5、h6依次递减字体的大小。

在主标题下面创建一个副标题,标题内容是:CatPhotoApp。

Hello World

CatPhotoApp

Inform with the Paragraph Element

p是英文paragraph段落的缩写,经常被用来创建一个段落,就和你写作文一样。

任务:在副标题下面新增一个段落,段落内容是:Hello Paragraph

Hello World

我家的猫咪

hello paragraph

Uncomment HTML

注释有两个功能:

1、想让某一段代码不起作用,但你又不想删除这一段代码。

2、就是给代码添加一些说明,方便团队合作或日后自己查看,但又不想影响代码本身。

我们先学习如何删除注释,再学习如何添加注释。

提示:可以通过删除``来删除注释。

任务:试着先把一级标题、二级标题、段落的注释都删除掉。


Hello World

我家的猫咪

Hello Paragraph

Comment out HTML

任务:把主标题和段落都注释掉,但把副标题留着。


我家的猫咪

Fill in the Blank with Placeholder Text

Web开发者通常用lorem ipsum text来做占位符,占位符就是占着位置的一些文字,没有实际意义。

为什么叫lorem ipsum text呢?

是因为lorem ipsum是古罗马西塞罗谚语的前两个单词。

从公元16世纪开始lorem ipsum text就被当做占位符了,这种传统延续到了互联网时代。

于此同时,孙悟空也在五指山下压了500年,然后就进化成程序猿了,是不是很巧合,哈哈。

任务:把段落中的文本替换为:Monkey code 猴哥猴哥,你真了不得,金箍棒在手,问世间谁是英雄。

西游记

齐天大圣

孙悟空

Monkey code 猴哥猴哥,你真了不得,金箍棒在手,问世间谁是英雄。

Delete HTML Elements

手机的屏幕空间是有限的。

让我们删除不必要的元素,开始设计我们的CatPhotoApp。

任务:删除你的h1元素以简化视图。



我家的猫咪

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

Change the Color of Text

现在让我们来改变某些文本的颜色。

我们可以通过修改h2元素的style(样式)来达到目的。

样式的属性有很多,其中color用来指定颜色。

以下是将你的h2元素的文本颜色设置为蓝色的示例代码:

CatPhotoApp

任务:修改你的h2元素的style,让文本的颜色变为红色。

我家的猫咪

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

Use CSS Selectors to Style Elements

样式的属性多达几千个,但别担心,按照80-20原则,常用的也就几十个,你完全可以掌握它。

当你键入

CatPhotoApp

,你就给h2元素添加了inline style(内联样式)

内联样式是为元素添加样式的最简单有效的方式,但是更易于维护的方式是使用层叠样式表CSS(Cascading Style Sheets)。

在代码的最顶端,创建一个如下的style元素:

在这个style元素内, 你可以为所有的h2元素创建一个元素选择器。比如,如果你想要将所有的h2元素设置为红色, 你的代码应该看起来像这样:

注意:一定要在属性值的后面加上分号;

任务:删除你的h2元素的内联样式,然后创建一个style元素。添加必要的CSS,使所有h2元素变为蓝色。

  

我家的猫咪

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

Use a CSS Class to Style an Element

上节课我们学习了元素选择器,这节课我们学习类选择器。

我们先声明一个类选择器:

上面的代码在

我家的猫咪

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

Style Multiple Elements with a CSS Class

你可以在 HTML 元素的开始标记中通过使用class="your-class-here"来将 class 附加到相关元素中。

CSS 类选择器必须添加.为前缀,如下:

.blue-text {
color: blue;
}

但在HTML中class属性的值不需要添加.为前缀,如下:

CatPhotoApp

red-text类应用到h2p元素中。



我家的猫咪

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

Change the Font Size of an Element

字号是由样式属性font-size来控制的, 如下:

h1 {
font-size: 30px;
}

用下面的文本来创建第二个p元素:
养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。

任务:让第一个段落和第二个段落的font-size都为16px

请不要为第二个段落添加 class 属性。



我家的猫咪

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。

Set the Font Family of an Element

font-family属性来设置元素的字体。

如果你想把副标题的字体设置为Sans-serif,你可以使用下面的CSS:

h2 {
font-family: Sans-serif;
}

任务:让所有的p元素都使用Monospace字体。



CatPhotoApp

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。

Import a Google Font

现在,让我们来导入谷歌字体。

首先,你需要用link标签来引入谷歌Lobster字体。

复制下面的代码片断并将其粘贴到你的代码编辑器的顶部:

现在你可以将Lobster作为 font-family属性 的值应用到你的h2元素上了。

为你的h2元素应用font-family属性,值为Lobster

当你遇到困难时可以参考wiki




CatPhotoApp

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。

Specify How Fonts Should Degrade

有几种默认的字体是所有浏览器都可用的,包括MonospaceSerifSans-Serif

当某种字体不可用时,你可以让浏览器自动降级到另一种字体。

例如,如果你想让段落的字体为Helvetica,但你同时想在Helvetica字体不可用时自动降级使用Sans-Serif字体,你可以使用如下CSS样式:

p {
font-family: Helvetica, Sans-Serif;
}

现在注释掉link标签,以使Lobster字体不可用。请仔细观察浏览器是如何降级到Monospace字体的。




CatPhotoApp

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。

Add Images to your Website

使用img元素来为你的网站添加图片,使用src属性指向一个图片的具体地址。

举例如下:

[图片上传失败...(image-791300-1510046527278)]

注意:img元素是自关闭元素,不需要结束标记。

用以下图片来测试:

/images/relaxing-cat.jpg




我家的猫咪

![](/images/relaxing-cat.jpg)

猫咪猫咪我就喜欢你

深深地爱上你

没有理由没有原因

从见到你的那一天起

你知道我在等你吗?

你如果真的在乎我

又怎会让无尽的夜陪我度过

猫咪猫咪我就喜欢你

深深地爱上你

在黑夜里倾听你的声音

Size your Images

CSS包含一个控制元素宽度的width属性。像控制字体一样,我们使用px(像素)来指定图片的宽度。

例如,如果我们想要创建一个名为larger-image的类选择器,把HTML元素的宽度设定为500像素,我们使用:

任务:创建一个名为smaller-image的类选择器,然后用它来改变图片尺寸,使图片仅有100像素宽。




CatPhotoApp

![](/images/relaxing-cat.jpg)

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。

Add Borders Around your Elements

CSS 边框的属性有style(样式)、color(颜色)、width(宽度)、height(高度)等。

举个例子,如果我们想要让一个HTML元素的边框颜色为红色、边框宽度为5像素(px)、边框样式为固体(solid),代码如下:

任务:创建一个叫thick-green-border的class,让它的边框宽度为10像素、边框样式为solid(固体)、边框颜色为绿色(green),然后把这个class应用到你的猫咪照片上。

提示:你可以应用多个class到一个元素,只需要在多个class之间用空格分开即可。例如:




CatPhotoApp

![](/images/relaxing-cat.jpg)

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。

Add Rounded Corners with a Border Radius

猫咪图片的边框现在是尖尖的,不够可爱,我们可以通过CSS的一个叫border-radius(边框半径)的属性来让它的边框变成圆的。

你同样可以使用像素来指定border-radius的属性值,现在让你的猫咪图片的边框半径为10px吧。

注意:这个任务有多种解决方案。你可以添加border-radius到.thick-green-border类选择器,也可以添加到.smaller-image类选择器.




我家的猫咪

![](/images/relaxing-cat.jpg)

我家两岁的小公猫哈哈是个收藏家,臭鱼烂虾,鸡头猪手,无所不爱。清晨我还在睡梦中,突然觉得胸口一沉,恍惚中意识到哈哈又跑到我身上来撒娇,心里不由得滚起温暖的热流,拉过哈哈一把从头摸过背,小家伙顺势想往被子里钻,我一边拒绝着一边往上拉被子,突然脚下一凉,烂泥一样挂在我的大脚趾上的是一块垃圾箱里的鱼头!我顿时睡意全无,换床单洗被罩,天光放亮才勉强收拾妥当。害得我带着熊猫眼跑去上班,一天都没有好心情。实在搞不懂它为什么爱把垃圾叼上床,是故意恶作剧?还是我给的猫粮不够吃?

有时候猫会把主人当成自己的孩子(听起来有点令人窝心),这种行为是在给家里带来猎物。它把自己看成是家里的顶梁柱,有责任给不争气的主人找来食物——猫咪通过长时间对你的观察,沉痛地发现你不会打猎。经常出门的猫咪会把它逮到的老鼠、小鸟带回家里,不出门的就经常翻翻垃圾箱找点东西给你。这个时候,主人可不要责骂它,不然它会认为你对它带回来的食物不满意,下次去找更了不起的东西带回来,放在房间里最显眼的地方。但如果你看见它往家里运输死老鼠,最好也别谢它,别让它觉得你对这种猎物很满意,下次照单带回来。最好的办法是心里感念着猫咪所为你做的,并默默地收拾好一切。

Make Circular Images with a Border Radius

除了像素,你还可以使用百分比来指定border-radius边框半径的值。

给你的猫咪图片一个50%border-radius




CatPhotoApp

![](/images/relaxing-cat.jpg)

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。

Link to External Pages with Anchor Elements

a元素,也叫anchor(锚点)元素,既可以用来链接到外部地址实现页面跳转功能,也可以链接到当前页面的某部分实现内部导航功能。

下面是一张a元素的图示。a元素位于段落元素的中间,这意味着链接会出现在段落的中间。

FreeCodeCamp - HTML5 and CSS_第2张图片
a diagram of how anchor tags are composed with the same text as on the following line

这有一个例子:

Here's a link to FreeCodeCamp中文社区 for you to follow.

任务:创建一个链接到http://freecatphotoapp.coma元素,并用cat photos作为其anchor text(锚点文本)



cat photos

CatPhotoApp

![](/images/relaxing-cat.jpg)

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。

Nest an Anchor Element within a Paragraph

作为参考,再次看一看a元素的图示:

FreeCodeCamp - HTML5 and CSS_第3张图片
a diagram of how anchor tags are composed with the same text as on the following line

例如:

Here's a link to FreeCodeCamp中文社区 for you to follow.

Nesting(嵌套)就是把一个元素放在另一个元素里面。

任务:把你的a元素嵌套进一个新的p元素(紧邻已有的h2元素之后),让段落的文本为View more cat photos,但是其中仅cat photos是一个链接,其余的是普通文本。




CatPhotoApp

View more cat photos

![](/images/relaxing-cat.jpg)

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。

Make Dead Links using the Hash Symbol

有时你想为你的网站添加一个a元素,但此时你还不知道要将它们链接到哪儿,此时可以使用固定链接。

把你的a元素的href属性的值替换为一个#,别名hash(哈希)符号,将其变为一个固定链接。




CatPhotoApp

Click here for cat photos.

![](/images/relaxing-cat.jpg)

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。

Turn an Image into a Link

你可以通过把某元素嵌套进a元素使其变成一个链接。

把你的图片嵌套进a元素。举例如下:

[图片上传失败...(image-65ea48-1510046527278)]

任务:把你的小猫图片插入到一个新的锚点元素中,并把锚点元素的href属性设置为#

一旦完成,把你的光标悬停在你的图片上。你的光标此时应该由光标指针变成手形指针。图片现在是一个链接了。




CatPhotoApp

Click here for cat photos.

![](/images/relaxing-cat.jpg)

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。

Add Alt Text to an Image for Accessibility

alt属性,也被称为alt text, 是当图片无法加载时显示的替代文本。alt属性对于盲人或视觉损伤的用户理解一幅图片中所描绘的内容非常重要,搜索引擎也会搜索alt属性。

简而言之,每一张图片都应该有一个alt属性!

你可以像下面例子中一样为img元素添加一个alt属性:

[图片上传失败...(image-4bb944-1510046527278)]

为你的猫咪图片添加一个alt属性,内容为A cute orange cat lying on its back




CatPhotoApp

Click here for cat photos.

![](/images/relaxing-cat.jpg)

在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。

养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。

Create a Bulleted Unordered List

HTML有一个特殊元素,用于创建unordered lists(无序列表), 或带项目符号的列表。

无序列表以

    元素开始,并包含一个或多个
  • 元素。

    例如:


    • milk

    • cheese

    将会创建一个带项目符号的"milk"和"cheese"列表。

    删除最后两个p元素,然后在页面底部创建一个有关猫咪喜欢的三件事情的无序列表。

    
    
    
    

    CatPhotoApp

    Click here for cat photos.

    ![](/images/relaxing-cat.jpg)
    • 吃饭
    • 睡觉
    • 抓老鼠

    Create an Ordered List

    HTML有一个特殊元素,用于创建ordered lists(有序列表), 或数字编号列表。

    有序列表以

      元素开始,并包含一个或多个
    1. 元素。

      例如:


      1. Garfield

      2. Sylvester

      将创建一个包含"Garfield"和"Sylvester"的数字编号列表。

      创建一个有关猫咪最痛恨的三件事情Top 3 things cats hate:的有序列表。

      
      
      
      

      CatPhotoApp

      Click here for cat photos.

      ![](/images/relaxing-cat.jpg)

      Things cats love:

      • cat nip
      • laser pointers
      • lasagna

      Top 3 things cats hate:

      1. cat nip
      2. laser pointers
      3. lasagna

      Create a Text Field

      现在让我们来创建一个form(表单)。

      Text input(文本输入框)是用来获得用户输入的绝佳方式。

      你可以用如下方法创建:

      注意,input元素是自关闭的。

      任务:在有序列表下面创建一个type(类型)为textinput元素。

      
      
      
      

      CatPhotoApp

      Click here for cat photos.

      ![](/images/relaxing-cat.jpg)

      Things cats love:

      • cat nip
      • laser pointers
      • lasagna

      Top 3 things cats hate:

      1. flea treatment
      2. thunder
      3. other cats

      Add Placeholder Text to a Text Field

      占位符(placeholder text)是用户在input(输入)框输入任何东西之前放置在input(输入)框中的预定义文本。

      你可以用如下方式创建占位符:

      把你的input(输入)框的placeholder的值设置为"cat photo URL"。

      
      
      
      

      CatPhotoApp

      Click here for cat photos.

      ![](/images/relaxing-cat.jpg)

      Things cats love:

      • cat nip
      • laser pointers
      • lasagna

      Top 3 things cats hate:

      1. flea treatment
      2. thunder
      3. other cats

      Create a Form Element

      使用HTML来构建可以跟服务器交互的Web表单(form),通过给你的form元素添加一个action属性来达到此目的。

      action属性的值指定了表单提交到服务器的地址。

      例如:

      把你的文本框嵌套进form元素,并为此form元素添加action="/submit-cat-photo"

      
      
      
      

      CatPhotoApp

      Click here for cat photos.

      ![](/images/relaxing-cat.jpg)

      Things cats love:

      • cat nip
      • laser pointers
      • lasagna

      Top 3 things cats hate:

      1. flea treatment
      2. thunder
      3. other cats

      Add a Submit Button to a Form

      让我们来为你的form添加一个submit(提交)按钮,点击这个按钮,表单中的数据将会被发送到你通过action属性指定的地址上。

      下面是submit按钮的例子:

      为你的form元素添加一个type为submit的提交按钮,用"Submit"作按钮文本。

      
      
      
      

      CatPhotoApp

      Click here for cat photos.

      ![](/images/relaxing-cat.jpg)

      Things cats love:

      • cat nip
      • laser pointers
      • lasagna

      Top 3 things cats hate:

      1. flea treatment
      2. thunder
      3. other cats

      Use HTML5 to Require a Field

      当你设计表单时,你可以指定某些选项为必填项(required),只有当用户填写了该选项后,用户才能够提交表单。

      例如,如果你想把一个文本输入字段设置为必填项,在你的input元素中加上required属性就可以了,你可以使用:

      任务:给你的输入框添加required属性,这样用户不填写输入框就无法提交表单。

      试试输入框不填写任何文本,然后点击Submit提交表单,看看浏览器如何提示你该字段为必填项。

      注意:required属性在Safari浏览器中不起作用,请用其他浏览器来学习,推荐使用Chrome。

      
      
      
      

      CatPhotoApp

      Click here for cat photos.

      ![](/images/relaxing-cat.jpg)

      Things cats love:

      • cat nip
      • laser pointers
      • lasagna

      Top 3 things cats hate:

      1. flea treatment
      2. thunder
      3. other cats

      Create a Set of Radio Buttons

      类比是最好的学习方式,当你搞不清一个概念时,最好在生活中找到对应的案例。

      单选就是你只能在多个选项中选择一个,就好比你有很多追求者,但却只能选择一个结婚。

      多选一的场景就用radio button(单选按钮)

      单选按钮只是input输入框的一种类型。

      每一个单选按钮都应该嵌套在它自己的label(标签)元素中。

      注意:所有关联的单选按钮应该使用相同的name属性。

      下面是一个单选按钮的例子:

      给你的表单添加两个单选按钮,一个叫indoor,另一个叫outdoor

      
      
      
      

      CatPhotoApp

      Click here for cat photos.

      ![](/images/relaxing-cat.jpg)

      Things cats love:

      • cat nip
      • laser pointers
      • lasagna

      Top 3 things cats hate:

      1. flea treatment
      2. thunder
      3. other cats

      Create a Set of Checkboxes

      当你在大学选课时,面对几百门课程,而因为时间和精力,你只能从中选择十几门。

      这样的场景就用checkboxes(复选按钮)

      复选按钮是input的输入框的另一种类型。

      每一个复选按钮都应该嵌套进label元素中。

      所有关联的复选按钮应该具有相同的name属性。

      下面是复选按钮的例子:

      任务:为你的表单添加三个复选按钮,每个复选按钮都应该嵌套进它自己的label元素,所有复选按钮的name属性必须为personality

      
      
      
      

      CatPhotoApp

      Click here for cat photos.

      ![](/images/relaxing-cat.jpg)

      Things cats love:

      • cat nip
      • laser pointers
      • lasagna

      Top 3 things cats hate:

      1. flea treatment
      2. thunder
      3. other cats

      Check Radio Buttons and Checkboxes by Default

      使用checked属性,你可以设置复选按钮和单选按钮默认被选中。

      为此,只需在input元素中添加属性checked

      把你的第一个radio button和第一个checkbox都设置为默认选中。

      
      
      
      

      CatPhotoApp

      Click here for cat photos.

      ![](/images/relaxing-cat.jpg)

      Things cats love:

      • cat nip
      • laser pointers
      • lasagna

      Top 3 things cats hate:

      1. flea treatment
      2. thunder
      3. other cats

      Nest Many Elements within a Single Div Element

      div元素,也被称作division(层)元素,是一个盛装其他元素的通用容器。

      所以可以利用CSS的继承关系把div上的CSS传递给它所有子元素。

      你可以用

      来标记一个div元素的开始,然后用
      来标记一个div元素的结束。

      试着在你的"Things cats love" p元素之前放置div的开始标记,在你的ol结束标记之后放置div的结束标记,这样你的两个列表就都嵌套在div中了。

      把"Things cats love"和"Things cats hate"两个列表都嵌套进同一个div元素中。

      
      
      
      

      CatPhotoApp

      Click here for cat photos.

      ![](/images/relaxing-cat.jpg)

      Things cats love:

      • cat nip
      • laser pointers
      • lasagna

      Top 3 things cats hate:

      1. flea treatment
      2. thunder
      3. other cats

      Give a Background Color to a Div Element

      你可以用 background-color 属性来设置一个元素的背景颜色。

      例如,如果你想把一个元素的背景颜色设置为green,你应该把这些加到你的 style 元素中:

      .green-background {
      background-color: green;
      }

      创建一个叫做 gray-background 的类选择器,设置其 background-color 为 gray,最后应用到 div 元素。

      
      
      
      

      CatPhotoApp

      Click here for cat photos.

      ![](/images/relaxing-cat.jpg)

      Things cats love:

      • cat nip
      • laser pointers
      • lasagna

      Top 3 things cats hate:

      1. flea treatment
      2. thunder
      3. other cats

      Set the ID of an Element

      除了 class属性之外,每一个 HTML 元素还可以使用 id 属性。

      使用 id 属性有若干好处,一旦当你开始使用 jQuery 的时候你会有更深的体会。

      id 属性应该是唯一的,虽然浏览器并不强制唯一,但基于最佳实践,这一点是被广泛认可的,所以请不要给一个以上的元素设置相同的 id 属性。

      下面举例说明了如何设置h2 元素的id属性为cat-photo-app

      任务:设置 form 元素的id属性为 cat-photo-form

      
      
      
      

      CatPhotoApp

      Click here for cat photos.

      ![](/images/relaxing-cat.jpg)

      Things cats love:

      • cat nip
      • laser pointers
      • lasagna

      Top 3 things cats hate:

      1. flea treatment
      2. thunder
      3. other cats

      Use an ID Attribute to Style an Element

      和类选择器一样,你也可以使用ID选择器来声明样式。

      声明一个叫cat-photo-element的ID选择器 ,并设置背景色为绿色。:

      #cat-photo-element {
      background-color: green;
      }

      注意:在你的 style 元素内部,定义类选择器必须添加 . 为前缀,定义ID选择器必须添加 # 为前缀。

      任务:试着给你的表单,添加一个值为 cat-photo-form的 id 属性,一个绿色的背景。

      
      
      
      

      CatPhotoApp

      Click here for cat photos.

      ![](/images/relaxing-cat.jpg)

      Things cats love:

      • cat nip
      • laser pointers
      • lasagna

      Top 3 things cats hate:

      1. flea treatment
      2. thunder
      3. other cats

      Adjusting the Padding of an Element

      现在让我们把 Cat Photo App 暂时搁置,以学习更多的 HTML 样式。

      你可能早已经注意到了这点,所有的 HTML 元素本质上是小的矩形块,代表着某一小块区域。

      有三个影响HTML元素布局的重要属性:padding(内边距)margin(外边距)border(边框)

      元素的 padding 控制元素内容 content和元素边框 border之间的距离。

      在这儿,我们可以看到绿方块和红方块都位于黄方块之中,但是红方块比绿方块具有更大的 padding

      当你加大绿方块的 padding, 它将扩大元素内容和元素边框的距离。

      任务:修改绿方块的 padding 以使它与红方块相匹配。

      
      
      margin
      padding
      padding

      Adjust the Margin of an Element

      元素的外边距 margin 控制元素边框 border 和元素实际所占空间的距离。

      在这儿,我们可以看到绿方块和红方块都位于黄方块之中,注意红方块比绿方块具有更大的外边距 margin,使得它看起来更小。

      当你增大绿方块的 margin 时,将会增加元素边框和元素实际所占空间之间的距离。

      修改绿方块的 margin 以使它与红方块匹配。

      
      
      margin
      padding
      padding

      Add a Negative Margin to an Element

      元素的 margin 控制元素的 border 和元素实际所占空间的距离。

      如果你将一个元素的 margin 设置为负值,元素将会变大。

      具体可以看看红方块的 margin 值。

      任务:把绿方块的 margin 设置为 -15px,以使它将父容器(黄方块)的横向宽度填满。

      
      
      
      padding
      padding

      Add Different Padding to Each Side of an Element

      有时你想要自定义元素,使它的每一个边具有不同的 padding

      CSS 允许你使用 padding-toppadding-rightpadding-bottompadding-left来控制元素上右下左四个方向的 padding

      使你的绿方块的顶部和左侧具有 40pxpadding,而底部和右侧则是 20px

      
      
      margin
      padding
      padding

      Add Different Margins to Each Side of an Element

      有时你想要自定义元素,使它的每一个边具有不同的 margin

      CSS 允许你使用 margin-topmargin-rightmargin-bottommargin-left 来控制元素上右下左四个方向的 margin

      使你的绿方块的顶部和左侧具有 40pxmargin,而底部和右侧则是 20px

      
      
      margin
      padding
      padding

      Use Clockwise Notation to Specify the Padding of an Element

      除了分别指定元素的 padding-toppadding-rightpadding-bottompadding-left 属性外,你还可以集中起来指定它们,举例如下:

      padding: 10px 20px 10px 20px;

      这四个值以顺时针方式排列:顶部、右侧、底部、左侧,简称:上右下左。

      使用顺时针方式设置 ".green-box" class,使其顶部和左侧具有 40pxpadding,而底部和右侧具有 20pxpadding

      
      
      margin
      padding
      padding

      Use Clockwise Notation to Specify the Margin of an Element

      让我们再试一次,但这次是用于 margin

      除了分别指定元素的 margin-topmargin-rightmargin-bottommargin-left 属性外,你还可以集中起来指定它们,举例如下:

      margin: 10px 20px 10px 20px;

      这四个值以顺时针方式排列:顶部、右侧、底部、左侧,简称:上右下左。

      使用顺时针表示法设置含有 ".green-box" class 的元素,使其顶部和左侧具有 40pxmargin,而底部和右侧具有 20pxmargin

      
      
      margin
      padding
      padding

      Style the HTML Body Element

      现在让我们来一个全新的开始,讲一讲 CSS 继承。

      每一个 HTML 页面都有一个 body 元素。

      通过将其 background-color 设置为黑色,我们可以证明 body 元素的存在。

      我们可以通过将下面的代码添加到我们的 style 元素来做到这一点:

      body {
      background-color: black;
      }

      
      
      

      Inherit Styles from the Body Element

      现在我们证明了每一个 HTML 页面都有一个 body 元素,并且其 body 元素同样能够应用样式。

      记住,你可以像对其他 HTML 元素一样对你的 body 元素应用样式,并且所有其他元素将继承你的 body 元素的样式。

      首先,创建一个文字为 Hello Worldh1 元素。

      然后,让我们通过向 body 元素的样式声明部分添加 color: green; 使页面上的所有元素的颜色为 green

      最后,通过向 body 元素的样式声明部分添加 font-family: Monospace;body 元素的 font-family(字体)设置为 Monospace

      
      

      Hello World

      Prioritize One Style Over Another

      有时你的 HTML 元素会得到相互冲突的多个样式。

      例如,你的 h1 元素不能同时为绿色和粉色。

      让我们来看看当我们创建一个使其文字为粉色的 class 时会发生什么,然后将其应用到某元素。我们的 class 会 override(覆盖) body 元素的 color: green; CSS 属性吗?

      创建一个使元素颜色成为粉色的名为 pink-text 的 CSS class。

      设置 h1 元素的 class 为 pink-text

      
      

      Hello World!

      Override Styles in Subsequent CSS

      我们的 "pink-text" class 覆盖了 body 元素的 CSS 声明!

      我们刚刚证明了我们的 class 会覆盖 body 元素的 CSS,那么下一个合乎情理的问题就是,我们怎样才能覆盖我们的 pink-text class 呢?

      再创建一个把元素设置为蓝色的名为 blue-text 的 CSS class,确保它在你的 pink-text class 声明的下面。

      除了 pink-text class 之外,再把 blue-text class 应用到你的 h1 元素,让我们来看看谁会赢。

      如下例,通过用空格分隔多个 class 属性,可对 HTML 元素应用多个 class 属性:

      class="class1 class2"

      注意:在 HTML 中这些 class 如何排序是无所谓的。

      然而,在

      Hello World!

      Override Class Declarations by Styling ID Attributes

      我们刚刚证明了浏览器读取 CSS 的顺序是从上到下,这意味着,在发生冲突时,浏览器会使用最后的 CSS 声明。

      但是并非只有这些,还有其他覆盖 CSS 的方法。你还记得 id 属性吗?

      让我们来覆盖你的 pink-textblue-text 两个 class,通过为 h1 元素添加 id 并设置 id 的样式,使你的 h1 元素变成 orange(橙色)。

      给你的 h1 元素添加名为 orange-textid 属性。记住,id 样式看起来是这样的:

      在你的 h1 元素中保留 blue-textpink-text 两个 class。

      在你的 style 元素中为你的 orange-text id 创建一个 CSS 声明,就像下面例子中的样子:

      #brown-text {
      color: brown;
      }

      注意:你声明的这个 CSS 在 pink-text类选择器的上面还是下面是无所谓的,因为 id 属性总是具有更高的优先级。

      
      

      Hello World!

      Override Class Declarations with Inline Styles

      我们证明了无论在 style 元素 CSS 的哪个位置进行声明,id 声明都会覆盖 class 声明。

      还有其他覆盖 CSS 的方法。你还记得行内样式吗?

      试着用 in-line style(行内样式) 使 h1 元素变为白色。记住,行内样式看起来是这样的:

      保留 h1 元素中的 blue-textpink-text 两个 class。

      
      

      Hello World!

      Override All Other Styles by using Important

      耶!我们刚刚证明了行内样式将覆盖style 中定义的所有 CSS。

      但是等一下,还有最后一种覆盖 CSS 的方法,这是所有方法中最强大的,但是在讲它之前,我们先讲讲为什么你要覆盖 CSS。

      很多情况下,你会使用 CSS 库,这些库可能会意外覆盖掉你自己的 CSS。所以当你需要确保某元素具有指定的 CSS 时,你可以使用 !important

      让我们再回到我们的 pink-text class 声明。还记得不?我们的 pink-text class 被随后的 class 声明、id 声明和行内样式所覆盖了。

      让我们来给 pink-text 元素的 color 声明加上关键字 !important,以便 100% 确保你的 h1 元素是粉色的。

      举例如下:

      color: pink !important;

      
      

      Hello World!

      Use Hex Code for Specific Colors

      你是否知道在 CSS 中还有其他表示颜色的方法?其中的一种方法称作 hexadecimal code(十六进制编码),简写为 hex code

      我们通常使用 decimals,也就是十进制数字,它对每一位数字使用符号0到9来表示。Hexadecimals (或 hex)是十六进制数字,这意味着它使用十六个不同的符号。像十进制那样,符号 0-9 代表数值零到九,再使用 A、B、C、D、E、F 代表数值十到十五。合在一起,用 0 到 F 可以代表 hexadecimal 中的每一位数字,共为我们提供 16 个可能的数值。你可以在 这儿 找到更多关于十六进制数字的信息。

      在 CSS 中,我们可以使用 6 位十六进制数字来表示颜色,每 2 位分别表示红色 (R)、绿色 (G) 和蓝色 (B) 成分。例如,#000000 是黑色,同时也是可能的数值中最小的。你可以在 这儿 找到更多关于 RGB 颜色系统的信息。

      body 元素的 background-color 由 black 替换成其 hex code 表示,即#000000

      
      
      

      Use Hex Code to Color Elements White

      0 是 hex code(十六进制编码)中最小的一个,它代表颜色的完全缺失。

      F 是 hex code(十六进制编码)中最大的一个,它代表最大可能的亮度。

      让我们通过把 background-color 的 hex code 修改为 #FFFFFF,以把 body 元素的背景改为白色。

      
      
      

      Use Hex Code to Color Elements Red

      你可能会疑惑为什么我们使用6位数来表示一种颜色而不是只用一位或二位,答案是使用6位数可提供给我们巨大数量的颜色变化。

      会有多少种可能的颜色?16 个值和 6 个位置意味着我们有 16 的 6 次方,或者说超过 1600 万种可能的颜色。

      Hex code 遵循 red-green-blue(红-绿-蓝),或者叫 rgb 格式。hex code 中的前两位表示颜色中红色的数量,第三四位代表绿色的数量,第五六位代表蓝色的数量。

      所以要得到绝对的纯红色,你只需要在第一和第二位使用 F (最大可能的数值),且在第三、第四、第五和第六位使用 0 (最小可能数值)。

      通过对 background-color 应用 hex code 值 #FF0000以把 body 元素的背景色设置为红色。

      
      
      

      Use Hex Code to Color Elements Green

      记住 hex code 遵循 red-green-blue(红-绿-蓝),或称为 rgb 格式。hex code 中的前两位表示颜色中红色的数量,第三四位代表绿色的数量,第五六位代表蓝色的数量。

      所以要得到绝对的纯绿色,你只需要在第三和第四位使用 F(最大可能的数值),且在其它位使用 0 (最小可能数值)。

      通过对 background-color 应用 hex code 值 #00FF00 以把 body 元素的背景色设置为绿色。

      
      
      

      Use Hex Code to Color Elements Blue

      hex code 遵循 red-green-blue(红-绿-蓝),或称为 rgb格式。hex code 中的前两位表示颜色中红色的数量,第三四位代表绿色的数量,第五六位代表蓝色的数量。

      所以要得到绝对的纯蓝色,你只需要在第五和第六位使用 F(最大可能的数值),且在其它位使用 0 (最小可能数值)。

      通过对 background-color 应用 hex code 值 #0000FF 以把 body 元素的背景色设置为蓝色。

      
      
      

      Use Hex Code to Mix Colors

      从这三种纯色(红、绿、蓝),我们能得到 1600 万种其它的颜色。

      例如,橙色是纯红,混合一些绿,没有蓝。

      通过对 background-color 应用 hex code 值 #FFA500 以把 body 元素的背景色设置为橙色

      
      
      

      Use Hex Code to Color Elements Gray

      从这三种纯色(红、绿、蓝),我们能得到 1600 万种其它的颜色。

      我们也可以通过平均混合所有三种颜色得到不同灰度等级的灰色。

      通过对 background-color 应用 hex code 值 #808080 以把 body 元素的背景色设置为灰色。

      
      
      

      Use Hex Code for Specific Shades of Gray

      通过平均混合所有三种颜色,我们还可以得到其他色度等级的灰色,这样我们可以非常接近纯黑色。

      通过对 background-color 应用 hex code 值 #111111 以把 body 元素的背景色设置为深灰色。

      
      
      

      Use Abbreviated Hex Code

      许多人对超过 1600 万种颜色感觉十分地抓狂,并且 hex code 非常难以记忆。幸运的是,你可以缩短它。

      例如,红,hex code 是 #FF0000 ,可被缩写成 #F00。也就是说,一位表示红,一位表示绿,一位表示蓝。

      这会把所有可能的颜色数减少至大约 4000 种,但是浏览器会把 #FF0000#F00 解释为完全相同的颜色。

      继续前进,尝试使用 #F00body 元素的背景色改为红色。

      
      
      

      Use RGB values to Color Elements

      在 CSS 中表示颜色的另一个方法是使用 rgb 值。

      代表黑色的 RGB 值看起来是下面的样子:

      rgb(0, 0, 0)

      代表白色的 RGB 值看起来是下面的样子:

      rgb(255, 255, 255)

      使用 rgb,你通过 0 至 255 之间的一个数字来指定每种颜色的亮度,而不是像 hex code 那样使用六个十六进制数字。

      如果你做个算术,16 乘以 16 总共有 256 个值,所以从零开始计数的 rgb,和 hex code 一样有完全相同数量的可能数值。

      让我们用黑色的 RGB 值 rgb(0, 0, 0) 替换掉 body 元素背景色的 hex code。

      
      
      

      Use RGB to Color Elements White

      代表黑色的 RGB 值看起来是下面的样子:

      rgb(0, 0, 0)

      代表白色的 RGB 值看起来是下面的样子:

      rgb(255, 255, 255)

      使用 rgb,你通过 0 至 255 之间的一个数字来指定每种颜色的亮度,而不是像 hex code 那样使用六个十六进制数字。

      body 元素的背景色从黑色的 RGB 值修改为白色的 rgbrgb(255, 255, 255)

      
      
      

      Use RGB to Color Elements Red

      和使用 hex code 一样,你可以通过不同数值的组合来表示 RGB 中不同的颜色。

      这些数值遵循 RGB 顺序模式:第一位表示红色,第二位表示绿色,第三位表示蓝色。

      body 元素的背景色修改为红色的 RGB 值:rgb(255, 0, 0)

      
      
      

      Use RGB to Color Elements Green

      现在将body 元素的背景色修改为绿色的 rgb 值:rgb(0, 255, 0)

      
      
      

      Use RGB to Color Elements Blue

      将你的 body 元素的背景色修改为蓝色的 RGB 值:rgb(0, 0, 255)

      
      
      

      Use RGB to Mix Colors

      就像使用 hex code 一样,你可以使用不同数值的组合在 RGB 中混合出各种颜色。

      body 元素的背景色修改为橙色的 RGB 值:rgb(255, 165, 0)

      
      
      

你可能感兴趣的:(FreeCodeCamp - HTML5 and CSS)