【前端小站】HTML 标签:网页骨架,从空白到惊艳,全靠这些 HTML 标签搞事情

【前端小站】HTML 标签:网页骨架,从空白到惊艳,全靠这些 HTML 标签搞事情

请添加图片描述

半桔个人主页
 🔥 个人专栏: 《前端扫盲》《手撕面试算法》《C++从入门到入土》

🔖为什么有人总是赞美生活的丰富多彩?我想这是因为他们善于品尝生活中随时出现的意外。 ​ -余华-


文章目录

前言

HTML(HyperText Markup Language,超文本标记语言)是构建网页的基石,是每一位前端开发者踏入 Web 世界的关键钥匙。它通过一系列语义化与功能性的标签,为网页搭建起清晰的 “结构骨架”,让文本、图片、表单等各类内容得以有序呈现,是网页与用户交互的 “第一层语言”。

对于想要系统学习 HTML 的初学者,或是需要回顾基础的开发者而言,本文将围绕 HTML 的核心标签体系展开讲解。

我们会从最基础的初始 HTML 结构标签入手,逐步深入到文本标签(标题、段落、强调类等)、媒体与交互标签(图片、超链接)、表格标签列表标签(无序、有序、自定义)、表单标签(容器、输入控件、辅助标签等)的使用方法与场景,最后也会涉及无语义标签的相关知识。通过对这些内容的学习,你将全面掌握 HTML 构建网页结构的核心能力,为后续学习 CSS(美化网页样式)、JavaScript(实现网页交互)奠定坚实的基础。

一. HTML结构

1.1 初始HTML标签

  • HTML代码都是由标签组成的。

标签就是类似于<body>内容</body>,这种形式的字段,比如下面百度的主页:

请添加图片描述

可以看到就是由众多标签组成的。

关于标签可以分为两类:

  1. 双标签:有开始,有结束;比如<body>内容....</body>,其中的<body>就是开始标签,而/body就是结束标签;
  2. 单标签:只有开始,比如,图片标签<img>
  • 在双标签之间放的是标签对应的内容,而在标签内部则可以设置标签的属性;

关于有哪些标签以及如何进行使用,在后面会详细进行介绍。

1.2 标签的层次

标签之间的结构关系,组成了一颗DOM树的结构,就是一颗多叉树。

请添加图片描述
  • 因此多叉树的节点中有哪些关系,标签就有那些关系.

其中有几个规定:

  1. html标签是根标签,所有标签都是它的子标签;
  2. <head>是网页属性,配置标签,<body>是网页主体内容标签,他们是父子标签。

在进行前端编写时,我们通常会采用vscode作为我们的开发工具,此处推荐几个好用的插件:

  1. Auto Rename Tag:可以自动将双标签进行对称修改处理,修改一侧另一侧会自动修改;
  2. Live Server:可以让我们修改后的HTML界面,直接在网页中查看变化,不再需要手动刷新网页了;
  3. view-in-browser:让我们一键打开浏览器,查看HTML网页效果。

通过输入!然后按回车,可以让我们快速自动生成HTML代码框架:

请添加图片描述

下面我将对其中的字段进行一个简单的介绍:

  1. <!DOCTYPE html>:一个文档类型说明,告诉浏览器当前HTML文档使用的是HTML5规范;
  2. <html lang="en">:告诉浏览器,当前文档中主要内容是英文;
  3. <meta charset="UTF-8">:文档的字符编码采用的是UTF-8
  4. <meta name="viewport" content="width=device-width, initial-scale=1.0">:是关于移动设备适配使用的。

二. HTML文本标签

以下是一张关于常见文本标签的列表:

名称说明
标题<h1>标题名</h1>通过修改数字,来指定标签级别
段落<p>内容</p>
加粗<strong>内容</strong><b></b>
倾斜<em>内容</em><i></i>
删除线<del>内容</del><s></s>
下划线<ins>内容</ins><u></u>

2.1 标题标签

  • 语法:<h1>标题名称</h1>:一级标签;
  • <h2>,<h3>...<h6>,最多可以到六级标题。

效果演示:

<body><h1>这是一个一级标题</h1><h2>这是一个二级标题</h2><h3>这是一个三级标题</h3><h4>这是一个四级标题</h4><h5>这是一个五级标题</h5><h6>这是一个六级标题</h6></body>
请添加图片描述

2.2 段落标签

  • 语法:<p>段落内容</p>,段落标签属于块标签,不会和其他标签内容共占一行。
<body><p>这是第一段</p><p>这是第二段</p><p>这是第三段</p></body>
请添加图片描述

如果一个段落中内容过长,可能会导致一个段落占据多行的情况,比如下面:

请添加图片描述

此时如果我们想要在一个段落的中间对内容进行换行操作,此时就可以使用换行标签

<br>/ 

这是一个单标签,专门用来进行换行操作的:

<body><p>这是第一段,这是第一段,这里有一个换行标签<br/>,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段,这是第一段</p><p>这是第二段</p><p>这是第三段</p></body>
请添加图片描述

2.3 强调标签

2.3.1 加粗

  • 语法:<strong>内容</strong><b>内容</b>,该标签属于行内标签;

效果演示:

<body><strong>第一个加粗字段</strong><strong>第二个加粗字段</strong></body>
请添加图片描述
  • <strong><b>标签都能让文本在视觉上呈现 “加粗” 效果,它们的核心区别在于 “语义”(含义)
  • <strong>是对语义化的 “强调重要性”,而<b>仅仅是进行加粗操作;比如:屏幕阅读器(帮助视障用户浏览网页的工具)会通过语调变化强调<strong>包裹的内容,让用户感知到其重要性;

2.3.2 倾斜

  • 语法:<em>内容</em><i>内容</i>,该标签与上面标签一样,也是一个行内标签。

效果演示:

<body><em>第一个倾斜字段</em><em>第二个倾斜字段</em></body>
请添加图片描述

2.3.3 删除线

  • 语法:<del>内容</del><s>内容</s>是一个行内标签。

效果演示:

<body><del>第一个删除线</del><del>第二个删除线</del></body>
请添加图片描述

2.3.4 下划线

  • 语法:<ins>内容</ins><u>内容</u>是一个行内标签。
<body><ins>第一个下划线</ins><ins>第二个下划线</ins></body>
请添加图片描述

三. 媒体与交互标签

此处重点介绍两个:

名称说明
图片<img>
超链接<a></a>

3.1 图片标签

  • 语法:<img src="图片路径">

关于图片标签有很多可以进行设置的属性,下面进行重点介绍:

属性说明
src图片路径
alt图片路径不对时,显示的文案提示
title提示文本,鼠标放在图片上,进行提示
height/width图片的高度/宽度
border图片边框大小
对于alt效果演示:
<body><imgsrc="./"alt="没有找到图片"></body>
请添加图片描述
  • height , width , border的单位都是px,并且对于height, width来说,一般只设置一个,另一个会等比例进行缩放。

对于title , height , width , border效果演示:

<body><imgsrc="./头像.jpg"height="100px"title="这是一个头像"border="1px"></body>
请添加图片描述

3.2 超链接标签

  • 语法:<a>跳转提示</a>.

与图片一样,超链接标签也有一些属性可以进行设置:

属性说明
href超链接跳转的地址
target跳转的方式,_self本页面跳转,_blank新标签页打开
效果演示:
<body><ahref="https://banju.blog.ZEEKLOG.net/"target="_blank">点击,跳转到我的主页</a></body>
  • 关于<a>标签中间的内容,不仅仅可以是文字,也可以是图片。

四. 表格标签

表格标签就是<table></table>但是其内部又衍生出来了,很多标签:

名称说明
表格属于容器,<table>内容</table>
表格中的一行属于容器,<tr>内容</tr>
一个单元格<td>内容</td>
指定表格头部区域属于容器,<thead>内容</thead>
表头单元格默认会居中加粗,<th>内容</th>

4.1 表格的使用

表格标签使用起来,相对复杂一点,一下是一个使用方法演示:

<body><table><thead><th>姓名</th><th>年龄</th><th>性别</th></thead><tr><td>张三</td><td>17</td><td>女</td></tr><tr><td>李四</td><td>34</td><td>男</td></tr><tr><td>王五</td><td>31</td><td>男</td></tr></table></body>

效果演示:

请添加图片描述
  1. 其中的<table></table>表示一个容器,中间存放的内容都属于有一个表格内容;
  2. <thead></thead>表示表格的头部区域,th是表示头部的每一个单元格;
  3. <tr></tr>表示表格的每一行,而<td></td>则是表格一行中的每一单元格。

4.2 表格的属性

对于表格来说,也有一些常用的属性可以进行设置:

属性说明
cellspacing每个单元格之间的距离
cellpadding内容距离边框的距离,默认是1
当然表格也可以设置边框。

效果演示:

<body><tableborder="1px"cellspacing="0"cellpadding="10"><thead><th>姓名</th><th>年龄</th><th>性别</th></thead><tr><td>张三</td><td>17</td><td>女</td></tr><tr><td>李四</td><td>34</td><td>男</td></tr><tr><td>王五</td><td>31</td><td>男</td></tr></table></body>
请添加图片描述

五. 列表标签

名称说明
无序列表容器<ul>...</ul>
有序列表容器<ol>...</ol>
列表项<li>...</li>
自定义列表容器<dl>...</dl>
自定义列表解释项<dt>...</dt>
自定义列表说明项<dd>...</dd>
  • 无序列表:<ul>(容器)+ <li>(列表项)
  • 有序列表:<ol>(容器)+ <li>(列表项)
  • 定义列表:<dl>(容器)+ <dt>(术语)+ <dd>(解释)

5.1 无序列表

  • 无序列表:<ul>(容器)+ <li>(列表项)
    效果演示:
<body><ul><li>内容1</li><li>内容2</li><li>内容3</li></ul></body>
请添加图片描述

对于无序列表,有一个经常设置的属性:

  • type:表示列表项目前面符号的内容,有三个:disc实心圆,square方块,circle空心圆。

5.2 有序列表

  • 有序列表:<ol>(容器)+ <li>(列表项)
    使用方法与上面类似,此处就不进行展示了。
  1. 其中可以对列表起始位置的数值进行设置:start=
  2. 也可以设置顺序列表排列的符号类型:type=,可以选择1使用数字,a使用小写字母,A使用大写字母,i使用小写阿拉伯数字,I使用大写阿拉伯数字。

5.3 自定义列表

  • 定义列表:<dl>(容器)+ <dt>(术语)+ <dd>(解释)
<body><dl><dt>这是一个自定义列表</dt><dd>内容1</dd><dd>内容2</dd><dd>内容3</dd></dl></body>
请添加图片描述

六. 表单标签

可以使用表单标签实现与服务器进行交互。

名称说明
表单域,容器<from>...</from>
输入控件<input>...
下拉菜单<select>...</select>
下拉选项<option>...</option>
多行文本<textarea></textaarea>

6.1 表单容器标签

<form>唯一的表单容器标签,通过属性控制表单行为:

  • action:指定表单数据提交的服务器地址(URL);
  • method:指定提交方式(getpost);

6.2 输入控件标签

6.2.1 输入框

  • 语法:input

其中关于输入,可以输入很多类型,通过type=属性进行控制:

  1. 文本输入:text输入单行文本, password输入密码:
    效果演示:
<body><formaction=""> 账号<inputtype="text"><br/> 密码<inputtype="password"></form></body>
请添加图片描述
  1. 数值输入:type="number"(仅允许数字)、type="range"(滑块选择数值);
<body><formaction=""> 年龄<inputtype="number"><br/> 1<inputtype="range">100 </form></body>
请添加图片描述
  1. 媒体输入:type="file"(文件上传)、type="image"(图片按钮,可提交表单),该属性比较简单,此处就不再进行演示了;
  2. 选择输入:type="radio"(单选按钮,互斥选择),type="checkbox"(复选框,可多选);
<body><formaction=""> 性别:<inputtype="radio">男<inputtype="radio">女 </form></body>
请添加图片描述

此时就可以进行选择了,当时如果直接这样进行设置,两个可以同时进行选择,但是我们希望的是只能选择一个。

  • 此时就需要对数据框进行唯一标识,使用name=来让两个选项具有一个标识;
  • 还可以使用checked来让一个作为默认选项。
<body><formaction=""> 性别:<inputtype="radio"name="gender"checked="checked">男<inputtype="radio"name="gender">女 </form></body>

当然也可以使用ckeckbox表示多选。

6.2.2 多行文本输入

  • 语法:使用<textarea></textarea>

其中可以设置文本框的宽度和高度,使用cols/rows

效果演示:

<body><formaction=""><textareaname=""id=""cols="30"rows="10">请输入内容....</textarea></form></body>
请添加图片描述

6.2.3 下拉选择器

  • 语法:使用<select></select>来进行实现,其中<option></option>表示对应的选项。

效果演示:

<body><formaction=""><selectname=""id=""><optionvalue="">选项1</option><optionvalue="">选项2</option><optionvalue="">选项3</option><optionvalue="">选项4</option></select></form></body>
请添加图片描述

6.3 表单辅助标签

标签关联:<label>

  • 为表单控件绑定文本说明,点击文本可聚焦到对应的控件(尤其适合复选框、单选按钮),通过 for 属性与控件的 id 关联。

例如,上面我们写的性别选择:

<body><formaction=""> 性别:<inputtype="radio"name="gender"checked="checked">男<inputtype="radio"name="gender">女 </form></body>

现在如果我们希望,在点击中文汉字的时候也能进行也能实现选择,就可以使用lable来进行实现。

<body><formaction=""> 性别: <inputtype="radio"name="gender"checked="checked"id="male"><labelfor="male">男</label><inputtype="radio"name="gender"id="female"><labelfor="female">女</label></form></body>

6.4 按钮标签

**<button>**最灵活的按钮,可包含文本、图标等内容,通过 type 属性定义行为:

  • type="submit":默认值,点击提交表单;
  • type="reset":点击重置表单(清空输入);
  • type="button":无默认行为,需配合脚本使用(如弹窗)。

关于按钮标签,要搭配JS进行使用,后续会专门写一篇博客讲JS。

<body><formaction=""><buttontype="button">一个按钮</button><buttontype="submit">现在提交</button><buttontype="reset">重置</button></form></body>

七. 无语义标签

无语义标签分为两种:<div></div><span></span>

其中<div>是块标签,独占一行,而<span>是行内标签,不独占一行。

  • 无语义标签没有固定的用途,可以该标签做任何事情,一般负责网页布局。

下面补充几个HTML中的特殊字符:

  1. &nbsp:空格,在HTML中多个空格相连,浏览器会将其合并为一个,所以可以使用&nbsp来保证多个空格同时显示;
  2. &li:小于符号;
  3. &gt:大于符号;
  4. amp:按位与符号。

Read more

ESP32S3 CameraWebServer避坑指南:从代码烧录到网页访问的全流程解析

ESP32-S3 CameraWebServer 实战避坑:从零到一的图像流媒体搭建全解 最近在折腾合宙的ESP32-S3核心板,想用它配合摄像头做个简单的网络监控或者视频流demo。网上随手一搜,乐鑫官方的CameraWebServer示例看起来是最直接的入门路径。但真动手的时候才发现,从环境配置、代码烧录到最终在网页上看到清晰的图像,中间每一步都可能藏着几个不大不小的“坑”。这篇文章就是把我自己踩过的坑、以及后来找到的解决方案,系统地梳理出来。如果你也是刚接触ESP32-S3,手头有一块合宙的板子和一个OV2640摄像头,想快速跑通这个经典的Web服务器示例,那么接下来的内容应该能帮你省下不少折腾的时间。 我们的目标很明确:让ESP32-S3连接Wi-Fi,驱动OV2640摄像头采集图像,并建立一个可以通过浏览器访问的网页服务器,实时查看视频流或拍摄静态照片。整个过程涉及硬件连接、开发环境搭建、代码修改、固件烧录和网络调试多个环节,任何一个环节出错都可能导致最终失败。别担心,我们会逐一拆解。 1. 硬件准备与环境搭建:万事开头难 在敲下第一行代码之前,正确的硬件连接和稳定

使用rclone将远程的webDav文件共享映射成本地硬盘

#webdav #rclone 一、准备工作 1.1 准备webdav连接 支持webdav的网盘有好多,请自行准备。我做示范的是国外的一个免费网盘,地址是https://infini-cloud.net/en/index.html, 先注册一个账号,就有20GB的免费空间可用。 收到验证邮件,输入验证码或者点击验证链接,注册成功后进入My Page。 免费的20GB空间大小,如果你在主页下方输入我送你的优惠码 L3UV8,你还将多获得5GB的空间 设置允许webDav访问,记住你的密码,如果忘记了,可以Reissue. 记录下以下三个信息(密码只显示一次) WebDAV Connection URLConnection IDApps Password 尝试一下webdav登录,可以正常访问 1.2 下载Rclone和WINFSP 我本机是Win11,我以windows版本为实例,其他操作系统请自行参考查找相关资料。 下载地址: https://rclone.org/downloads/

前端SSE(Server-Sent Events)实现详解:从原理到前端AI对话应用

一、什么是SSE? SSE(Server-Sent Events)是一种服务器向客户端推送数据的技术,它允许服务器主动向客户端发送数据,而不需要客户端频繁轮询。SSE特别适合实时通信场景,比如AI聊天的流式输出、实时通知、股票行情更新等。 SSE的核心特点: * 单向通信 :服务器向客户端单向推送数据 * 基于HTTP :使用标准的HTTP协议,不需要特殊的服务器支持 * 自动重连 :连接断开时会自动尝试重连 * 文本格式 :使用简单的文本格式传输数据 * 轻量级 :实现简单,开销小 二、SSE的工作原理 1. 连接建立 客户端通过向服务器发送一个HTTP请求来建立SSE连接。服务器返回一个特殊的响应,设置 Content-Type: text/event-stream 头,告诉客户端这是一个SSE流。 2. 数据传输 服务器以流的形式持续发送数据,每个数据块都是一个SSE格式的消息。SSE消息格式如下: data: 消息内容\n\n 其中: * data: 是固定前缀 * 消息内容可以是任意文本,

PowerShell中Invoke-WebRequest的正确使用:避免参数匹配错误

1. 从一次报错说起:为什么我的curl命令在PowerShell里不灵了? 那天我正在调试一个本地API接口,很自然地就在PowerShell里敲下了 curl -X POST http://127.0.0.1:8199/api/post。这命令在Linux的Bash终端里我用了无数次,闭着眼睛都能敲对。结果,PowerShell毫不留情地甩给我一个红字报错:Invoke-WebRequest : 找不到与参数名称“X”匹配的参数。 我当时就愣住了,心想:“-X POST”这不是curl的标准写法吗?怎么到你这儿就不认了?相信很多从Linux/macOS转战Windows,或者刚开始接触PowerShell的朋友,都踩过这个坑。这个错误看似简单,背后却藏着PowerShell设计哲学和命令别名的“小心思”。简单来说,在PowerShell里,curl 并不是你熟悉的那个cURL工具,而是 Invoke-WebRequest 这个PowerShell原生Cmdlet的一个别名。这就好比你在北京叫“师傅”可能是在打招呼,在别的地方可能就是在称呼真正的老师傅,语境完全不同。Invoke-