HTML 代码是由 “标签” 构成的
形如:
<body>hellobody>
为开始标签, 为结束标签.在记事本写下如下内容:
<h1>一级标题h1>
<h2>二级标题h2>
<h3>三级标题h3>

把这个文件的后缀改成html,它就变成这样了(浏览器的图标)

双击打开就变成了一定的格式

<html>
<head>
<title>第一个页面title>
head>
<body>
hello world
body>
html>
上面代码的标签层次结构,其中:
可以使用浏览器的开发者工具查看页面的结构.
F12 或者右键检查, 开启开发者工具, 切换到 Elements 标签, 就可以看到页面结构细节
标签之间的结构关系, 构成了一个 DOM 树
DOM 是 Document Object Mode (文档对象模型) 的缩写
在 vscode 中创建文件 xxx.html , 直接输入 ! + tab 键 或者 ! + enter 键, 此时能自动生成代码的主体框架(vscode不会自动保存,需要手动保存)
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
head>
<body>
body>
html>
细节解释:
称为 DTD (文档类型定义), 描述当前的文件是一个 HTML5 的文件.
其中 lang 属性表示当前页面是一个 “英语页面” (有些浏览器会根据此处的声明提示是否进行自动翻译).
描述页面的字符编码方式. 没有这一行可能会导致中文乱码.
name=“viewport” 其中 viewport 指的是设备的屏幕上能用来显示我们的网页的那一块区域. content=“width=device-width, initial-scale=1.0” 在设置可视区和设备宽度等宽, 并设置初始缩放为不缩放. (这个属性对于移动端开发更重要一些).
我们在body 标签中写hello html(记得保存)

找文件位置

双击运行

就表示标题

注释不会显示在界面上. 目的是提高代码的可读性
ctrl + / 快捷键可以快速进行注释/取消注释
有六个, 数字越大, 则字体越小.
<h1>helloh1>
<h2>helloh2>
<h3>helloh3>
<h4>helloh4>
<h5>helloh5>
<h6>helloh6>
在HTML中,换行符,空格都会失效,如果需要分成段落,需要使用专门的标签
p 标签表示一个段落.
<p>这是一个段落p>
注意:
br 是 break 的缩写. 表示换行.
是规范写法. 不建议写成
加粗: strong 标签 和 b 标签
倾斜: em 标签 和 i 标签
删除线: del 标签 和 s 标签
下划线: ins 标签 和 u 标签
<strong>strong 加粗strong>
<b>b 加粗b>
<em>倾斜em>
<i>倾斜i>
<del>删除线del>
<s>删除线s>
<ins>下划线ins>
<u>下划线u>

使用 CSS 也可以完成类似的效果. 实际开发中以 CSS 方式为主
img 标签必须带有 src 属性. 表示图片的路径
我的d:/v2-bad1aafb65629536a2461e366cf62bf6_r.jpg路径下有这样一张照片

DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
head>
<body>
<img src="d:/v2-bad1aafb65629536a2461e366cf62bf6_r.jpg">
body>
html>

如果代码中的路径是这样的相对路径,此时要把这个图片文件放到和 
hello.html(写代码的这个文件) 的同级目录中
保存在本地的图片可以用文件路径,网上的图片也可以用网上的地址
img 标签的其他属性
注意:
href: 必须具备, 表示点击后会跳转到哪个页面.
target: 打开方式. 默认是 _self。 如果是 _blank 则用新的标签页打开.
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
head>
<body>
<a href="http://www.baidu.com">百度a>
body>
html>

点击这个超链接就会跳转到百度
链接的几种形式:
外部链接: href 引用其他网站的地址
<a href="http://www.baidu.com">百度a>
内部链接: 网站内部页面之间的链接. 写相对路径即可.
在一个目录中, 先创建一个 1.html
我是 1.html
<a href="2.html">点我跳转到 2.htmla>
再创建一个 2.html
我是 2.html
<a href="1.html">点我跳转到 1.htmla>
空链接: 使用 # 在 href 中占位
<a href="#">空链接a>
下载链接: href 对应的路径是一个文件. (可以使用 zip 文件)
<a href="test.zip">下载文件a>
网页元素链接: 可以给图片等任何元素添加链接(把元素放到 a 标签中)
<a href="http://www.sogou.com">
<img src="rose.jpg" alt="">
a>
锚点链接: 可以快速定位到页面中的某个位置
<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:;">
table 包含 tr , tr 包含 td 或者 th.
假设表格是3行2列的,vscode的快捷写法是这样的:

DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
head>
<body>
<table>
<tr>
<td>td>
<td>td>
tr>
<tr>
<td>td>
<td>td>
tr>
<tr>
<td>td>
<td>td>
tr>
table>
body>
html>

我们发现页面上啥都没有,因为我们的表格没有边框。接着我们加上内容
<table>
<tr>
<td>姓名td>
<td>IDtd>
tr>
<tr>
<td>张三td>
<td>01td>
tr>
<tr>
<td>李四td>
<td>02td>
tr>
table>

表格标签有一些属性, 可以用于设置大小边框等. 但是一般使用 CSS 方式来设置
这些属性都要放到 table 标签中.
"" 表示没边框.注意, 这几个属性, vscode 都提示不出来
接着加上边框
<table border="1px">
<tr>
<td>姓名td>
<td>IDtd>
tr>
<tr>
<td>张三td>
<td>01td>
tr>
<tr>
<td>李四td>
<td>02td>
tr>
table>

合并单元格
跨行合并: rowspan=“n”
跨列合并: colspan=“n”
步骤
<table align="center" border="10" cellpadding="20" cellspacing="0" width="500" height="500">
<tr>
<td>姓名td>
<td>性别td>
<td>年龄td>
tr>
<tr>
<td>张三td>
<td colspan="2">男td>
tr>
<tr>
<td>李四td>
<td>女td>
<td>11td>
tr>
table>

主要是用来布局的
注意:
<h3>无序列表h3>
<ul>
<li>希儿li>
<li>芙宁娜li>
<li>流萤li>
ul>
<h3>有序列表h3>
<ol>
<li>希儿li>
<li>芙宁娜li>
<li>流萤li>
ol>
<h3>自定义列表h3>
<dl>
<dt>我的老婆们dt>
<dd>希儿dd>
<dd>芙宁娜dd>
<dd>流萤dd>
dl>
以下是效果:
表单是让用户输入信息的重要途径
分成两个部分:
<form action="test.html">
...
form>
描述了要把数据按照什么方式, 提交到哪个页面中,这个代码是提交到test.html
关于 form 需要结合 服务器 & 网络编程 来进一步理解
各种输入控件, 单行文本框, 按钮, 单选框, 复选框.
属性:
下面介绍一些常用的类型:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>表单标签title>
head>
<body>
<form>
<input type="text">
form>
body>
html>

vscode中,的快捷方式是input:t
<form>
用户名:<input type="text"><br/>
密码:<input type="password">
form>

性别:
<input type="radio">男
<input type="radio">女

两个都可以选,这样不是单选,我们给这两个选项加上同一个name属性
注意: 单选框之间必须具备相同的 name 属性, 才能实现 多选一 效果
性别:
<input type="radio" name="gender">男
<input type="radio" name="gender">女
还可以指定默认选哪个
性别:
<input type="radio" name="gender">男
<input type="radio" name="gender" checked="checked">女
<form>
兴趣爱好:
<input type="checkbox" name="" id=""> 唱
<input type="checkbox" name="" id=""> 跳
<input type="checkbox" name="" id=""> rap
<input type="checkbox" name="" id=""> 篮球
form>

<input type="button" value="我是个按钮">
当前点击了没有反应. 需要搭配 JS 使用
<input type="button" value="我是个按钮" onclick="alert('hello')">
提交按钮必须放到 form 标签内. 点击后就会尝试给服务器发送
<form action="hello.html">
用户名:<input type="text" name="username"><br/>
密码: <input type="password" name="password"><br/>
<input type="submit" value="提交">
form>

点击提交就会跳转到hello.html页面

<form action="hello.html">
<input type="text" name="username">
<input type="submit" value="提交">
<input type="reset" value="清空">
form>
清空按钮必须放在 form 中. 点击后会将 form 内所有的用户输入内容重置
<input type="file">
点击选择文件, 会弹出对话框, 选择文件
搭配 input 使用, 点击 label 也能选中对应的单选/复选框, 提升用户体验
for 属性: 指定当前 label 和哪个相同 id 的 input 标签对应
性别:
<input type="radio" name="gender" id="male"><label for="male">男label>
<input type="radio" name="gender" id="female"><label for="female">女label>
这样点字也可以选中了
下拉菜单
option 中定义 selected=“selected” 表示默认选中.
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>selecttitle>
head>
<body>
<form action="hello.html">
省市:
<select name="area">
<option value="1">北京option>
<option value="2" selected>上海option>
<option value="3">广州option>
<option value="4">深圳option>
select>
<br/>
<input type="submit" value="提交">
form>
body>
html>

点击提交就会跳转到hello.html页面

如果不指定默认选项,那么第一个选项作为默认选项
<select>
<option>--请选择城市--option>
<option>北京option>
<option>上海option>
<option>广州option>
<option>深圳option>
select>
个人简介:
<br/>
<textarea rows="5" cols="20">textarea>

文本域中的内容, 就是默认内容, 注意, 空格也会有影响.
rows 和 cols 不会直接使用, 都是用 css 来改的大小.
div 标签, division 的缩写, 含义是 分割
span 标签, 含义是跨度
就是两个盒子. 用于网页布局
<div>divdiv>
<div>divdiv>
<div>divdiv>
<span>spanspan>
<span>spanspan>
<span>spanspan>

<table>
<thead>
<h3>请填写简历信息h3>
thead>
<tbody>
<tr>
<td>
<label for="name">姓名label>
td>
<td>
<input type="text" id="name">
td>
tr>
<tr>
<td>
性别
td>
<td>
<input type="radio" name="sex" id="male" checked="checked">
<label for="male">男label>
<input type="radio" name="sex" id="female">
<label for="female">女label>
td>
tr>
<tr>
<td>
出生日期
td>
<td>
<select>
<option>--请选择年份--option>
<option>1998option>
<option>1999option>
<option>2000option>
<option>2001option>
select>
<select>
<option>--请选择月份--option>
<option value="">1option>
<option value="">2option>
<option value="">3option>
<option value="">4option>
<option value="">5option>
<option value="">6option>
<option value="">7option>
<option value="">8option>
<option value="">9option>
<option value="">10option>
<option value="">11option>
<option value="">12option>
select>
<select>
<option>--请选择日期--option>
<option value="">1option>
<option value="">2option>
<option value="">3option>
<option value="">4option>
<option value="">5option>
<option value="">6option>
<option value="">7option>
<option value="">8option>
<option value="">9option>
<option value="">10option>
<option value="">11option>
<option value="">12option>
<option value="">13option>
<option value="">14option>
<option value="">15option>
<option value="">16option>
<option value="">17option>
<option value="">18option>
<option value="">19option>
<option value="">20option>
<option value="">21option>
<option value="">22option>
<option value="">23option>
<option value="">24option>
<option value="">25option>
<option value="">26option>
<option value="">27option>
<option value="">28option>
<option value="">29option>
<option value="">30option>
<option value="">31option>
select>
td>
tr>
<tr>
<td>
<label for="school">就读学校label>
td>
<td>
<input type="text" id="school">
td>
tr>
<tr>
<td>
应聘岗位
td>
<td>
<input type="checkbox" id="frontend">
<label for="frontend">前端开发label>
<input type="checkbox" id="backend">
<label for="backend">后端开发label>
<input type="checkbox" id="qa">
<label for="qa">测试开发label>
<input type="checkbox" id="op">
<label for="op">运维开发label>
td>
tr>
<tr>
<td>
<label for="ability">掌握的技能label>
td>
<td>
<textarea cols="30" rows="10" id="ability">textarea>
td>
tr>
<tr>
<td>td>
<td>
<input type="checkbox" id="lisence">
<label for="lisence">我已仔细阅读过公司的招聘要求label>
td>
tr>
<tr>
<td>td>
<td>
<h4>请应聘者确认: h4>
<ul>
<li>以上信息真实有效li>
<li>能够尽早去公司实习li>
<li>能接受公司的加班文化li>
ul>
td>
tr>
<tr>
<td>td>
<td>
<a href="#">查看我的状态a>
td>
tr>
tbody>
table>

快速输入标签
input[tab]
快速输入多个标签
div*3[tab]
标签带id
div#sex[tab]
标签带类名
div.sex[tab]
标签带子元素
ul>li*3[tab]
标签带兄弟元素
span+span
标签带内容
div{hello}
标签带内容(带编号)
div{$.hello}
有些特殊的字符在 html 文件中是不能直接表示的, 例如:
空格:
小于号: <
大于号: >
按位与: &
html 标签就是用 < > 表示的. 因此内容里如果存在 < > , 就会发生混淆