一文学会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>

相关推荐
马立杰3 分钟前
H3CNE-23-vlan间路由
网络·智能路由器·h3cne
Along丶WG1 小时前
解决国内服务器 npm install 卡住的问题
前端·npm·node.js
prince_zxill1 小时前
Node.js 和 npm 安装教程
前端·javascript·vue.js·npm·node.js
是Dream呀1 小时前
Python从0到100(八十六):神经网络-ShuffleNet通道混合轻量级网络的深入介绍
网络·python·神经网络
弄不死的强仔2 小时前
可被electron等调用的Qt截图-录屏工具【源码开放】
前端·javascript·qt·electron·贴图·qt5
霸王蟹2 小时前
el-table组件样式如何二次修改?
前端·javascript·vue.js·笔记·学习·前端框架
山楂树の2 小时前
计算机网络 性能指标相关
网络·计算机网络
泪不是Web妳而流3 小时前
【HTML入门】Sublime Text 4与 Phpstorm
网络·经验分享·编辑器·html·学习方法·sublime text·phpstorm
star010-3 小时前
【视频+图文详解】HTML基础3-html常用标签
前端·css·网络安全·html·html5·学习方法