一、什么是 HTML
1、含义
HTML:HyperText Markup Language,超文本标记语言是一种用于创建网页的标准标记语言。
- 超文本:支持文本、声音、图片、视频、表格、链接...
- 标记:由许许多多的标签组成。
HTML 页面是运行到浏览器上面的。
以下案例学习可以选择在 VSCode 上进行,先安装如下插件,提高开发效率且方便调试查看效果:


二、HTML 结构
1、认识 HTML 标签
HTML 代码是由 "标签" 构成的。
形如:
html
<body>hello</body>
- 标签名(body)放到 < > 中
- 大部分标签成对出现,称为 "双标签"。<body> 为开始标签,</body> 为结束标签
- 少数标签只有开始标签,称为 "单标签"
- 开始标签和结束标签之间,写的是标签的内容(hello)
- 开始标签中可能会带有 "属性"。id 属性相当于给这个标签设置了一个唯一的标识符(身份证号码)
html
<body id="myId">hello</body>
2、HTML 文件基本结构
html
<html>
<head>
<title>第一个页面</title>
</head>
<body>
hello world
</body>
</html>
- html:整个 html 文件的根标签(最顶层标签)
- head:编写页面相关的属性
- title:页面标题
- body:页面内容展示信息
3、标签层次结构
- 父子关系
- 兄弟关系
html
<html>
<head>
<title>第一个页面</title>
</head>
<body>
hello world
</body>
</html>
其中:
- head 和 body 是 html 的子标签(html 就是 head 和 body 的父标签)
- title 是 head 的子标签,head 是 title 的父标签
- head 和 body 之间是兄弟关系
++可以使用 chrome 的开发者工具查看页面的结构++
++F12 或者右键审查元素,开启开发者工具,切换到 Elements 标签,就可以看到页面结构细节++

标签之间的结构关系,构成了一个 DOM 树,DOM 是 Document Object Mode(文档对象模型)的缩写。每一个标签相当于是一个对象。


4、快速生成代码框架
在 IDEA 中创建文件 xxx.html,直接输入 !,按 tab 键,此时能自动生成代码的主体框架。
快速生成代码框架:! + 回车



如果存在:<meta http-equiv="X-UA-Compatible" content="IE=edge">, content="IE=edge" 表示 IE 浏览器渲染效果按照 IE 浏览器最高版本展示。
- <!DOCTYPE html> 称为 DTD(文档类型定义),描述当前的文件是一个 HTML5 的文件
- <html lang="en"> 其中 lang 属性表示当前页面是一个 "英语页面"(有些浏览器会根据此处的声明提示是否进行自动翻译)
- <meta charset="UTF-8"> 描述页面的字符编码方式,没有这一行可能会导致中文乱码
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- name="viewport" 其中 viewport 指的是设备的屏幕上能用来显示网页的那一块区域
- content="width=device-width, initial-scale=1.0" 在设置可视区和设备宽度等宽,并设置初始缩放为不缩放(这个属性对于移动端开发更重要)
- width:可视区域的宽度,值可为数字或关键词 device-width
- height:同 width
- intial-scale:页面首次被显示是可视区域的缩放级别,取值 1.0 则页面按实际尺寸显示,无任何缩放
- maximum-scale=1.0, minimum-scale=1.0; 可视区域的缩放级别,maximum-scale 用户可将页面放大的程序,1.0 将禁止用户放大到实际尺寸之上。
- user-scalable:是否可对页面进行缩放,no 禁止缩放
三、HTML 常见标签
1、注释标签
注释不会显示在界面上,目的是提高代码的可读性。
html
<!-- 我是注释 -->
ctrl + / 快捷键可以快速进行注释/取消注释。
注释的原则:
- 要和代码逻辑一致
- 尽量使用中文
- 不要传递负能量



2、标题标签:h1-h6
有六个,从 h1 - h6。数字越大,则字体越小,字体越细。


3、段落标签:p
把一段比较长的文本粘贴到 html 中,会发现并没有分成段落。例如以下文本:

展示结果:

- p 标签表示一个段落
html
<p>这是一个段落</p>
通过 p 标签改进上述代码,每个段落放到 p 标签中。

展示结果:

注意:
- p 标签之间存在一个空隙
- 当前的 p 标签描述的段落,前面还没有缩进
- 自动根据浏览器宽度来决定排版
- html 内容首尾处的换行,空格均无效
- 在 html 中文字之间输入的多个空格 只相当于一个空格
- html 中直接输入换行 不会真的换行,而是相当于一个空格
4、换行标签: br
br 是 break 的缩写,表示换行。
- br 是一个单标签(不需要结束标签)
- br 标签不像 p 标签那样带有一个很大的空隙
- <br/> 是规范写法,不建议写成 <br>

展示结果:

换行标签换行之后间隙比段落标签间隙小
5、格式化标签
- 加粗:strong 标签 和 b 标签
- 倾斜:em 标签 和 i 标签
- 删除线:del 标签 和 s 标签
- 下划线:ins 标签 和 u 标签

展示效果:

使用 CSS 也可以完成类似的效果. 实际开发中以 CSS 方式为主。
6、图片标签: img
img 标签必须带有 src 属性,表示图片的路径(相对路径/绝对路径,包含网络上的图片资源)。


img 标签的其他属性:
- alt:替换文本。当文本不能正确显示的时候,会显示一个替换的文字。alt 后面的文案,只有当图片加载错误的时候才会展示,如果图片加载成功,则该文案不会展示。
- title:提示文本。鼠标放到图片上,就会有提示。
- width /height :控制宽度高度。高度和宽度一般改一个就行,另外一个会等比例缩放,否则就会图片失衡。
- border:边框,参数是宽度的像素。但是一般使用 CSS 来设定。



注意:
- 属性可以有多个,不能写到标签之前。
- 属性之间用空格分割,可以是多个空格,也可以是换行。
- 属性之间不分先后顺序。
- 属性使用 "键值对" 的格式来表示。
7、超链接标签:a
- href:必须具备,表示点击后会跳转到哪个页面。
- target :打开方式。默认是 _self ,如果是 _blank则用新的标签页打开。


链接的几种形式:
- 外部链接:href 引用其他网站的地址
html
<a href="http://www.baidu.com">百度</a>
- 内部链接:网站内部页面之间的链接,写相对路径即可。
在一个目录中,先创建一个 html1.html,再创建一个 html2.html。
在 html2.html 中,跳转到 html1.html:
html
<a href="html1.html">跳转到html1.html</a>
- 空链接:使用 # 在 href 中占位。
- 下载链接:href 对应的路径是一个文件(可以使用 zip 文件)
- 网页元素链接:可以给图片等任何元素添加链接(把元素放到 a 标签中)
- 锚点链接:可以快速定位到页面中的某个位置
html
<a href="#one">第一集</a>
<a href="#two">第二集</a>
<a href="#three">第三集</a>
<p id="one">
第一集剧情 <br>
第一集剧情 <br>
...
</p>
<p id="two">
第二集剧情 <br>
第二集剧情 <br>
...
</p>
<p id="three">
第三集剧情 <br>
第三集剧情 <br>
...
</p>
禁止 a 标签跳转:<a href="javascript:void(0);"> 或者 <a href="javascript:;">
8、表格标签
(1)基本使用
- table 标签:表示整个表格
- tr:表示表格的一行
- td:表示一个单元格
- th:表示表头单元格 ,会居中加粗
- thead:表格的头部区域(注意和 th 区分,范围是比 th 要大的)
- tbody:表格得到主体区域
table 包含 tr,tr 包含 td 或者 th
表格标签有一些属性,可以用于设置大小边框等,但是一般使用 CSS 方式来设置。
这些属性都要放到 table 标签中:
- align 是表格相对于周围元素的对齐方式,align="center"(不是内部元素的对齐方式)
- border 表示边框,1 表示有边框(数字越大,边框越粗),"" 表示没边框
- cellpadding:内容距离边框的距离,默认 1 像素
- cellspacing:单元格之间的距离,默认为 2 像素
- width / height:设置尺寸
注意:这几个属性,vscode 都提示不出来


(2)合并单元格
跨行合并:rowspan="n"
跨列合并:colspan="n"
步骤:
- 先确定跨行还是跨列
- 找好目标单元格(跨列合并,左侧是目标单元格;跨行合并,上方是目标单元格)
- 删除的多余的单元格


9、列表标签
主要使用来布局的,整齐好看。
- 无序列表:ul、li
- 有序列表:ol、li
- 自定义列表:dl(总标签)、dt(小标题)、dd(围绕标题来说明),上面有个小标题,下面有几个围绕着标题来展开的






注意:
- 元素之间是并列关系
- ul/ol 中只能放 li 不能放其他标签,dl 中只能放 dt 和 dd
- li 中可以放其他标签
- 列表带有自己的样式,可以使用 CSS 来修改(例如前面的小圆点都会去掉)
10、表单标签
表单是让用户输入信息的重要途径。
分成两个部分:
- 表单域 :包含表单元素的区域,重点是 form标签。
- 表单控件 :输入框,提交按钮等,重点是 input 标签。
(1)form 标签
action 属性的值可以是一个绝对 URL 或相对 URL。
html
<form action="test.html">
... [form 的内容]
</form>
描述了要把数据按照什么方式,提交到哪个页面中。
form 标签需要结合服务器 和网络编程来进一步理解。
(2)input 标签
各种输入控件,单行文本框、按钮、单选框、复选框。
- type(必须有):取值种类很多,button、checkbox、text、file、image、password、radio 等
- name:给 input 起了个名字,尤其是对于单选按钮,具有相同的 name 才能多选一
- value:input 中的默认值
- checked:默认被选中(用于单选按钮和多选按钮)
- maxlength:设定最大长度


注意:单选框之间必须具备相同的 name 属性,才能实现多选一效果。
点击重置,则会清空所有内容。
如果没有添加 onclick 属性,那么当前点击了没有反应,需要搭配 JS 使用。
- 提交按钮必须放到 form 标签内,点击后就会尝试给服务器发送。
- 清空按钮必须放在 form 中,点击后会将 form 内所有的用户输入内容重置。
- 点击选择文件,会弹出对话框,选择文件。


(3)label 标签
搭配 input 使用。点击 label 也能选中对应的单选/复选框,能够提升用户体验。
- for 属性:指定当前 label 和哪个相同 id 的 input 标签对应(此时点击才是有用的)


(4)select 标签
下拉菜单
- option 中定义 selected="selected" 表示默认选中。


注意:可以给的第一个选项,作为默认选项。
(5)textarea 标签


文本域中的内容就是默认内容。注意:空格也会有影响。
rows 和 cols 也都不会直接使用,都是用 css 来改的。
11、无定义标签
div 标签,division 的缩写,含义是分割。span 标签,含义是跨度。
就是两个盒子,用于网页布局
- div 是独占一行的,是一个大盒子。
- span 不独占一行,是一个小盒子。


四、综合案例
1、展示简历信息


2、填写简历信息




提示:
- 通过表格完成页面布局
- 使用各种 input 标签 + textarea 实现页面中的输入控件
- input 标签搭配合适的 label 提升用户体验
- 针对下拉框这种选项较多的,使用 Emmet 快捷键提高输入效率
- 图标图片可以去阿里巴巴矢量图标库:https://www.iconfont.cn/ 找,通过属性控制图片大小,最终展示到页面
五、常见 Emmet 快捷键
- 快速输入标签:inputtab
- 快速输入多个标签:div*3tab
- 标签带id:div#sextab
- 标签带类名:div.sextab
- 标签带子元素:ul>li*3tab
- 标签带兄弟元素:span+span
- 标签带内容:div{hello}
- 标签带内容(带编号):div{$.hello}
六、HTML 特殊字符
有些特殊的字符在 html 文件中是不能直接表示的,例如:
- 空格:
- 小于号:<
- 大于号:>
- 按位与:&


html 标签就是用 < > 表示的,因此内容里如果存在 < >,就会发生混淆
参考内容:HTML特殊字符编码对照表
