【前端】HTML 基础

一、什么是 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 来设定。

注意:

  1. 属性可以有多个,不能写到标签之前。
  2. 属性之间用空格分割,可以是多个空格,也可以是换行。
  3. 属性之间不分先后顺序
  4. 属性使用 "键值对" 的格式来表示。

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"

步骤:

  1. 先确定跨行还是跨列
  2. 找好目标单元格(跨列合并,左侧是目标单元格;跨行合并,上方是目标单元格)
  3. 删除的多余的单元格

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 文件中是不能直接表示的,例如:

  • 空格: &nbsp;
  • 小于号:&lt;
  • 大于号:&gt;
  • 按位与:&amp;

html 标签就是用 < > 表示的,因此内容里如果存在 < >,就会发生混淆

参考内容:HTML特殊字符编码对照表