一文学会HTML编程之视频+图文详解详析

前言

本文涵盖了html的所有核心知识点,因为篇幅非常长,故题主将本教程分为七个层次,师傅们结合自身的时间安排,灵活调整即可。

视频教程

哔哩哔哩(B站)搜索框中输入"uid=3546393096489381"即可

用户:star010_

图文教程

第一阶段

html介绍

**概念:**html是超文本标记语言的缩写,其英文全称为HyperText Markup Language,是用来搭建网站结构的语言,比如网页上的文字,按钮,图片,视频等。html的版本分为1.0、2.0、3.0、4.0、5.0(目前使用最广泛的就是5.0版本),所以html也称为html5

**例子:**比如下面的网站中,按钮"pikachu"就是由html语言中<a>标签构成的,标签的介绍后面会详细展开,这里就做一个简单的了解

同样的,文字部分"STAR'web"也是由<h1>标签构成的

css介绍

**概念:**层叠样式表,英文全称为Cascading Style Sheets,用来控制网页样式和布局的语言。通过CSS,你可以为网页的文字、颜色、大小、间距、背景、边框等元素添加样式,使网页变得更加美观和用户友好。

**例子:**如下图所示,其中的style属性就是css语言,用来将文字"STAR'web"设置为深红色

总结:html和css不分家,它们之间是相辅相成的关系

第二阶段

互联网原理

前言

**互联网原理:**上网即请求数据

**上网过程:**用户通过客户端发送http请求到服务端,服务端将请求对应的数据找到后,通过http响应回传给本地计算机,计算机加载网页

**总结:**根据上面所示的信息,上网需要浏览器、服务器、传输数据需要用到http协议,这些将在下面做出详细的讲解

服务器

**概念:**是一种计算机,有自己的内存和处理器

**作用:**用来存储网页上的所有文件,比如html、css、js、图片、视频、音频等这些

浏览器

**作用:**发送http请求,接收回传的数据,渲染网页

工作原理:在网址栏输入网址后向服务器发送请求,服务器响应后返回数据到浏览器后渲染

-第一次加载一个网页,时间较长,从第二次以后打开同一个网站的速度变快,原因就是因为第一次浏览时,已经将大部分文件存储到了本地,会先从本地进行查找

http协议

**概念:**超文本传输协议,是一种用于分布式、协作式、超媒体信息系统的应用层协议

**用途:**主要用来传输如视频、音频、图片等这些的网络资源

**特性:**无连接的(因为每次都需要断开tcp连接,所以重新连接需要重新请求)

-但需要注意的是从http1.1版本开始http协议就不再是无连接的,在这之前的http建立连接都需要重新请求,如下图所示

-渲染相应页面:客户端与服务器断开连接,由客户端解析从服务端发过来的html文档,在屏幕上渲染图形结果

纯文本和超文本

纯文本文件类型:不含特殊格式的文本文件,如.txt .html .css .js

超文本文件类型:含有特殊格式的文本文件(比如字体加粗等),如.doc .ppt

其中我们正在学习的html就是纯文本文件类型,并且所有纯文本编辑器都可以用来编写html

第三阶段

html骨架与基本语法

基本骨架

举个例子,下图所展示的为html的源代码

**-!DOCTYPE:**表示文档类型(后边写的html表示文档类型是html);其中"!"表示声明

只要是加这个声明标签的,浏览器就会把下边的源代码当作html解析

<html>:整个网页都需要被<html></html>包裹

**-lang:**表示网站的主体语言,如下图所示

-<head></head>: 表示网页配置,比如配置字符类型为utf8类型(字符类型的区别如下图所示,需要补充的是若网页是面向国际化的用utf-8 ,如果是面对国内的用gbk字符集

**-meta:**表示基本配置,写在<head>标签内
<meta name="viewport" content="width=device-width, initial-scale=1.0">

这段代码是用于设置网页的视口(viewport)属性,主要是为了让网页在移动设备上能够自适应屏幕大小并正常显示。(对应了网页的基本配置)效果对比如下

不加这段代码

加了这段代码(明显针对手机开启了自适应的模式)

**-<title>标签:**用来管理浏览器选项卡的名称

**-<body>标签:**设置我们在浏览器能看到区域的网页内容,比如我们之前举例的"pikachu"按钮

补充

keywords关键字:<meta>标签中的keywords关键字的用途:搜索引擎抓取页面的原理(通过下面的关键词搜索进行抓取网站)

description关键字:同样的也是meta标签中的,用来描述网站的信息

基本语法

标签格式规则
  1. 标签名必须书写在一对尖括号<>内部
  2. 标签分为单标签和双标签,双标签必须成对存在,有开始标签和结束标签
  3. 结束标签必须有关闭符号/
  4. 根据标签内部存放的内容不同,将不同的标签划分为两个级别

其中双标签必须成对存在,有开始标签和结束标签

|-----|-------|
| 单标签 | 双标签 |
| img | h1-h6 |
| br | div |
| hr | span |
| | p |
| | a |
| | ul+li |

**<br>:**换行

**<hr>:**表示水平分割线,用于分割内容

**<div>:**定义页面中的块级元素,用于分组或布局

<ul>: 创建无序列表 **<li>:**列表项,用于放置具体内容

无序列表如下图所示

<p>:换行

<span> :改变字体颜色、字体大小、字体样式,添加特定的标记,使用JavaScript来操作元素,实现一些动态效果或交互功能

根据标签的种类区分两个等级:容器级,文本级

容器级:元素内部除了可以存放文本外,还可以嵌套各种类型的标签

文本级:元素内部只能存放文本或文本标签

|-----------------------------|----------------|
| 容器级标签 | 文本级标签 |
| div,ol,ul,li,dl,dt,dd,h1-h6 | span,img,b,u,i |

标签属性

概念 :赋予标签一些特殊性质,给标签加上某些性质就相当于给标签赋予了职能(前提是标签必须具备这些职能)------------比如:<a></a>标签具备链接性质,后边的属性value可以填上一些网址链接,这样用户可以通过页面点击链接,当然就算不填网址,这个标签依然具备链接属性,只不过并不会跳转网页

书写位置:在开始标签或单标签的标签名后面,添加一个空格,空格后边书写属性(href=x)

--href是键(key),x是属性值(value)

href: 指定超链接目标的URL,是<a></a>标签专属属性

实例:


<a href="www.baidu.com" title="我是title"></a>

像上句这样连续写两个属性,要用空格隔开

注意:文字的位置是根据标签种类决定

  1. 标签与其他标签之间对空白、换行、缩进等不敏感,有没有空白不影响浏览器加载效果
  2. 在上传代码过程中,为了提高传输速度,可以将代码进行压缩,删除多余的空白,目的就是为了压缩文件的大小
  3. 标签之间还有嵌套关系

空白折叠现象 :不会因为一直空格而显示很多空白(除非用标签&nbsp进行空格留白)

第四阶段

html常用标签

常用标签

1. 文档结构

  1. <!DOCTYPE html>:声明HTML文档类型。
  2. <html>:定义HTML文档的根元素。
  3. <head>:定义文档头部,包含元数据。
  4. <title>:设置网页标题,浏览器标签页显示。
  5. <body>:定义网页的主体内容。

2. 文本格式化

  1. <h1> ~ <h6>:定义标题,<h1>是最高级,<h6>是最低级。

-注意:标题系列标签有助于浏览器搜索的优化,搜索引擎抓取标题的内容 ,h1标签的权重最大,但一个页面只能使用一个h1标签 ,如果使用多个h1标签那么搜索优先级会降低

  1. <p>:定义段落。
  2. <br>:换行。
  3. <strong>:加粗文本,语义上表示强调。
  4. <em>:斜体文本,语义上表示强调。
  5. <b>:加粗文本(只是样式,语义不如<strong>)。
  6. <i>:斜体文本(只是样式,语义不如<em>)。
  7. <u>:下划线文本。

3. 链接与图片

  1. <a>:定义超链接。
  2. <img>:插入图片,需设置 src 属性指向图片地址。
  3. 格式: <img src="hello/ma.jpg" alt="">

-src属性:图片源;

-alt属性:图片替换文本(当图片不显示的时候会显示我们写上去的文本)

注意:hello文件和ma.jpg要放在此源代码文件夹下才会显示出来
<img src="images/1.jpg" title="鸟巢的远景">

其中title属性的作用是设置鼠标悬在图片上时看到的文本

  1. <link>:连接外部资源,通常用于外部样式表。
  2. <meta>:定义网页的元数据,如字符集、描述、关键字等。

4. 列表

  1. <ul>:无序列表。
  2. <ol>:有序列表。
  3. <li>:列表项。
  4. <dl>:定义定义列表。
  5. <dt>:定义定义列表项的标题。
  6. <dd>:定义定义列表项的描述。

5. 表格

  1. <table>:定义表格。
  2. <tr>:定义表格的行。
  3. <td>:定义表格的单元格。
  4. <th>:定义表格头部单元格,通常为加粗居中的文本。
  5. <caption>:定义表格的标题。

相对路径和绝对路径

(还是以上边的图片嵌入为例)

--相对路径:从当前文件或目录的位置出发,指定目标文件或目录的路径。

--绝对路径:从文件系统的根目录开始,完整指定文件或目录的位置路径。

比如相对hello文件夹(文件路径为F:\hello),ma.jpg的相对路径为hello/ma.jpg,ma.jpg的绝对路径为F:\hello\ma.jpg

--html源代码文件:就是包括这行代码的源代码文件

锚点

锚点:HTML中的一种标记,用于在同一页面内或不同页面之间创建可跳转的链接位置。

<a></a>(在指定位置添加一个超级链接);需要注意的是锚点中的锚和点的使用方法不同。

--a标签的几个属性:

1.href:可以跳转链接;也可以跳转html文件

2.target属性(要搭配_blank关键词):是否在新标签页打开链接(点击链接后会打开一个新标签页然后加载内容)

【页面内跳转锚点的设置有两种方法】

关于页面内锚点的概述:如下图所示,就是我们看一些网页上面的索引

++方法一++:通过设置标签a的name属性达到页面跳转锚点的方法

,href属性,后面一定要加#号
<a href="#jbxx">基本信息</a>

锚点的点,name属性设置成跳转的链接
<a name="jbxx"></a>

++方法二++:设置锚点的点为标签的id属性


<a href="#jbxx">基本信息</a>

锚点的点由原来的a标签的name属性变为了其他标签id属性,使用方法跟href一致
<h3 id="jbxx">基本信息</h3>

这种方法是直接在我们的<h3>标签标题中直接引入id属性(id属性适配所有html标签)

第五阶段

html标签的基本使用

无序列表

**作用:**定义一个没有顺序的列表结构

由两个标签组成<ul> 以及**<li>(** 两个标签都属于容器级标签,其中ul只能嵌套li标签,但li标签能嵌套任何标签,甚至ul标签**)**

**ul:**ulordered list(无序列表)

**li:**list item(列表项)

基本使用格式:


<h2>古典四大名著</h2>

<ul>

<li>三国演义</li>

<li>西游记</li>

<li>红楼梦</li>

<li>水浒传</li>

</ul>

有序列表

**作用:**定义一个有序列表的列表结构

需要两个标签:<ol>和<li>标签

**ol:**ordered list(有序列表)

ol内部只能嵌套li标签,而li标签内部可以嵌套任何标签包括ol标签(跟ul基本一致)

定义列表

**作用:**定义一个自定义标题和内容的列表结构

**组成:**dl,dt,dd

**dl:**definition list 表示创建一个自定义列表结构

**dt:**definition term 表示创建一个自定义主题

**dd:**defination description 表示对前面主题的描述说明

【使用格式】


<h2>国内女明星</h2>

<dl>

<dt>杨幂</dt>

<dd>作品:《三生三世》、《宫》、《仙剑奇侠传》等</dd>

<dt>赵丽颖</dt>

<dd>作品:《花千骨》、《楚乔传》、《陆贞传奇》等</dd>

<dt>刘诗诗</dt>

<dd>作品:《步步惊心》、《仙剑奇侠传》、《女医明妃传》等</dd>

</dl>

注意:dd标签内也可以嵌套许多标签

第六阶段

表格

表格主要有三个标签组成

table:作用是定义了一个表格的结构

tr:table rows(定义了表格的行)

td :table dock(定义表格的单元格),是左对齐普通文字文本

嵌套关系:table嵌套tr嵌套td

格式如下(示例为构造一个三行四列表格)


<table border="1" style="border-collapse:collapse">

<tr>

<td>第1行,第1列</td>

<td>第1行,第2列</td>

<td>第1行,第3列</td>

<td>第1行,第4列</td>

</tr>

<tr>

<td>第2行,第1列</td>

<td>第2行,第2列</td>

<td>第2行,第3列</td>

<td>第2行,第4列</td>

</tr>

<tr>

<td>第3行,第1列</td>

<td>第3行,第2列</td>

<td>第3行,第3列</td>

<td>第3行,第4列</td>

</tr>

</table>

table标签有两个属性border 以及style

**-border属性:**是用来设置表格的边框宽度

**-style属性:**用于内联CSS样式,可以用来定义表格的样式,包括边框、颜色、合并单元格等

设置表头代码

tr嵌套th

其中设置的文字自动加粗

格式


<table border="1" style="border-collapse:collapse">

<tr>

<td>第1行,第1列</td>

<td>第1行,第2列</td>

<td>第1行,第3列</td>

<td>第1行,第4列</td>

</tr>

<tr>

<td>第2行,第1列</td>

<td>第2行,第2列</td>

<td>第2行,第3列</td>

<td>第2行,第4列</td>

</tr>

<tr>

<td>第3行,第1列</td>

<td>第3行,第2列</td>

<td>第3行,第3列</td>

<td>第3行,第4列</td>

</tr>

<tr>

<th>1</th>

<th>2</th>

<th>3</th>

<th>4</th>

</tr>

</table>

单元格合并

colspan:左右跨列合并

rowspan:上下跨行合并

其中后边的数字就是我们要跨几行或几列合并的几个

步骤:

  1. 确定一行有多少列
  2. 然后我们再看一共有几行
  3. 观察哪个单元格有合并,设置对应属性

案例:

|----|----|----|----|---|---|----|
| 1 || 2 | 3 ||| 4 |
| 5 | 6 | 2 | 7 | 8 | 9 | 10 |
| 5 | 11 | 12 | 13 || 9 | 14 |
| 15 | 11 | 16 | 17 | 18 || 14 |

这个表格的代码如下:
<table border="1" style="border-collapse: collapse;">

<tr>

<td colspan="2">1</td>

<td rowspan="2">2</td>

<td colspan="3">3</td>

<td>4</td>

</tr>

<tr>

<td rowspan="2">5</td>

<td>6</td>

<td>7</td>

<td>8</td>

<td rowspan="2">9</td>

<td>10</td>

</tr>

<tr>

<td rowspan="2">11</td>

<td>12</td>

<td colspan="2">13</td>

<td rowspan="2">14</td>

</tr>

<tr>

<td>15</td>

<td>16</td>

<td>17</td>

<td colspan="2">18</td>

</tr>

</table>

<td rowspan="2">11</td>

<td>12</td>

<td colspan="2">13</td>

<td rowspan="2">14</td>

</tr>

<tr>

<td>15</td>

<td>16</td>

<td>17</td>

<td colspan="2">18</td>

</tr>

</table>

表格分区

一个完整的表格主要包含三个部分:表格标题、表格表头、表格的主题

一个table内部实际还有三个分区标签组成

**caption:**定义表格的主题

**thead:**定义表格的头部,内部嵌套tr>th

**tbody:**定义表格主题,内部嵌套tr>td

例如下图所示


<table border="1">

<!-- 主题分区 -->

<caption>各地区资产投资情况</caption>

<!-- 表头分区 -->

<thead>

<tr>

<th rowspan="2">地区</th>

<th colspan="2">按总量分</th>

<th colspan="2">按比重分</th>

</tr>

<tr>

<th>自年初累计(亿元)</th>

<th>去年同期增长(%)</th>

<th>自年初累计(%)</th>

<th>自年同期(%)</th>

</tr>

</thead>

<!-- 主体分区 -->

<tbody>

<tr>

<td>全国</td>

<td>234234</td>

<td>9.8</td>

<td>100.0</td>

<td>100.0</td>

</tr>

<tr>

<td>全国</td>

<td>234234</td>

<td>9.8</td>

<td>100.0</td>

<td>100.0</td>

</tr>

<tr>

<td>全国</td>

<td>234234</td>

<td>9.8</td>

<td>100.0</td>

<td>100.0</td>

</tr>

<tr>

<td>全国</td>

<td>234234</td>

<td>9.8</td>

<td>100.0</td>

<td>100.0</td>

</tr>

<tr>

<td>全国</td>

<td>234234</td>

<td>9.8</td>

<td>100.0</td>

<td>100.0</td>

</tr>

</tbody>

</table>

上面代码中,caption标签在table标签中就是标题的书写

form表单

基本属性

容器级标签,涉及到input标签

示例

其中action属性:数据提交的位置

-type属性:text意思是输入进去的是明文,

如果换成password那么输入进去的就会变成掩码,如下图

input标签涉及两个属性:value,placeholder

--value **:**设置默认显示内容(就是进入输入框页面后看到的内容)

--placeholder **:**没有value内容,提示用户的文字占位符

实现效果如下图所示

placeholder与value的区别:前者只是会显示文本而不占用我们输入的内容,后者其实就相当于我们输进去的文本,可以删除和修改

单选框

**方法:**通过type值的radio属性设置

示例


<p>

性&nbsp;别:

<input type="radio" name='sex'>男

<input type="radio" name='sex'>女

<input type="radio" name='sex'>保密

</p>

**注意:**其中name后边的属性可以随便写,但需要注意的是如果三个name属性写的一样的话,那么在这三个单选框中每次只能选择一个(单选框互斥)

多选框

**方法:**通过type值中的checkbox属性设置

**性质:**可以通过对自身进行多次点击实现选择或者取消

样式:


<p>

爱&nbsp;好:

<input type="checkbox" name="hobby"> 运动

<input type="checkbox" name="hobby"> 绘画

<input type="checkbox" name="hobby"> 音乐

<input type="checkbox" name="hobby"> 阅读

<input type="checkbox" name="hobby"> 其他

</p>

关于复选框为什么还要加name属性:

name属性的性质是唯一标识,我们在前端写的代码传入后端进行处理如果有name属性的话会更加方便快捷一些,分类也更加清晰,跟单选框我们用name属性的用途不太一样,但name属性的性质不变,都是唯一标识。

单选框与复选框共同选择

示例


<p>

性&nbsp;别:

<input type="radio" name='sex' checked="checked">男

<input type="radio" name='sex'>女

<input type="radio" name='sex'>保密

</p>

<p>

爱&nbsp;好:

<input type="checkbox" name="hobby"> 运动

<input type="checkbox" name="hobby" checked="checked"> 绘画

<input type="checkbox" name="hobby"> 音乐

<input type="checkbox" name="hobby"> 阅读

<input type="checkbox" name="hobby"> 其他

</p>

其中涉及的是checked属性

实现框的点击范围扩大的方法

现象:前面的这些,只能点击其中的框进行选择,我们如果想要点击文字进行选择,那么需要使用label标签

代码实现
<label>

<input type="radio" name='sex' checked="checked">男

</label>

在我们的输入框上下加一个label标签即可

文本域

textarea标签:双标签,文本级

**属性值包括:**rows,cols

**rows:**定义文本域的可视区域有几行

**cols:**当前行显示的字节数量(以英文为准),单位是数字

代码实现
<textarea rows="4s" cols="50" placeholder="请输入自我介绍" style="resize:none"></textarea>

其中style="resize:none"的意思是去掉可拖拽区域(因为文本域默认是能进行拖拽放大和缩小的,如下图所示)

不加style="resize:none"

加了style="resize:none",注意右下角的变化

下拉菜单

效果

标签:select,option

关系:select<option(select嵌套option)

代码实现

如果想要实现某个内容为页面显示的,可以将其<option>提到最上边或者用select属性

代码实现

效果

第七阶段

html注释

注释符号:<!-- -->

快捷键:ctrl+/

div标签 :定义HTML文档中的一个分隔区块 或者一个区域部分

**--div标签中属性:**class(自定义一个类,类名可以随便写)

字符实体

当我们使用h1标签的时候,<h1>会直接加粗文字,如果用&lt;代替<,那么文字就不会加粗,而是在页面直接显示<h1>

相关推荐
寻星探路42 分钟前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
崔庆才丨静觅2 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60613 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了3 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅3 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅4 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
盟接之桥4 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
崔庆才丨静觅4 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment4 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅4 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端