ESP32教程系列
1 - 认识ESP32
2 - Arduino IDE安装&配置
3 - 基本操作
4 - WiFi配网
5 - WebServer①
6 - Web Server②控制输出
7 - Web Server③ HTML&CSS基础
8 - Web Server④ 在Arduinio中添加HTML&CSS
9 - 异步网页服务器 Asynchronous Web Server(DHT11)
10 - OTA ESP32无线升级,告别数据线
ESP32实战系列
WiFi遥控小车
ESP32 Homekit系列
Homekit & Homespan介绍
点亮一颗LED
调节LED亮度
前言
在ESP32教程(基于Arduino IDE)6 - Web Server②控制输出中使用到了HTML&CSS的技术,这里做一些简单的介绍,方便大家自行修改。需要深入了解者,可自行学习相关知识。
一、HTML 介绍
0. 什么是HTML
HTML 是超文本标记语言(Hypertext Markup Language)的缩写,是用于创建网页的主要标记语言。用于创建网页。网络浏览器就是为读取 HTML 文件而创建的–HTML 标签告诉网络浏览器如何显示网页上的内容。
1. 基本框架
<!DOCTYPE html><!--任何HTML文档的第一行,用于这就告诉网络浏览器此文档是HTML文件。-->
<html><!--网页结构应位于 <html> 和 </html> 之间。<html> 标记表示网页的开头,</html> 标记表示网页的结尾。-->
<!--HTML 文档分为两个主要部分:头部和主体。头部位于 <head> 和 </head> 标记内,主体位于 <body> 和 </body> 标记内。-->
<head>
</head><!--头部是插入 HTML 文档数据的地方,这些数据对最终用户来说并不直接可见,但可以为网页增加功能,如标题、脚本、样式等-->
<body><!--主体包含正文包括网页内容,如标题、文本、按钮、表格等。-->
</body><!-- -->
</html><!-- -->
<!-- HTML 中的注释以<!-- 开头,以 --> 结尾-->
2. 丰富网页内容
①标签
网页标签是网页浏览器标签中显示的文字。网页标签应位于<title>
和 </title>
标记之间,而 <title>
和 标记应位于 <head>
和 </head>
标记之间。在 <title>
和 </title>
标记之间输入标签,为网页添加标签,如下所示。
<!DOCTYPE html>
<html>
<head>
<title>ESP32 Web Server</title><!-- 追加一个名叫《ESP32 Web Server》的标签-->
</head>
<body>
</body>
</html>
②标题
标题
标题用于构建网页文本的结构。标题以 “h ”开头,后面跟一个表示标题强度的数字。例如,<h1>
和 </h1>
是标题 1 的标记,<h2>
和 </h2>
是标题 2 的标记,直到标题 6。标题标记应位于 <body>
和 </body>
标记之间。
<!DOCTYPE html>
<html>
<head>
<title>ESP32 Web Server</title><!-- 追加一个名叫《ESP32 Web Server》的标签-->
</head>
<body>
<h1>ESP32 Web Server</h1><!-- 追加一个名叫《ESP32 Web Server》的标题-->
</body>
</html>
段落
段落用于放置文本。每个段落都应位于 <p>
和</p>
标记之间。添加一些段落来显示 GPIO 26 和 GPIO 27 的状态。(此处是以上一个代码为例)
<!DOCTYPE html>
<html>
<head>
<title>ESP32 Web Server</title><!-- 追加一个名叫《ESP32 Web Server》的标签-->
</head>
<body>
<h1>ESP32 Web Server</h1><!-- 追加一个名叫《ESP32 Web Server》的标题-->
<p>GPIO 26 - State</p><!--追加显示GPIO26的状态-->
<p>GPIO 27 - State</p><!--追加显示GPIO27的状态-->
</body>
</html>
按钮
在网页中添加按钮时,使用<button>
和</button>
标签。在标签之间输入您想要在按钮中显示的文本。为每个GPIO添加一个“ON”和“OFF”按钮。我们已在<p>
和</p>
之间的代码中插入了<button>
和</button>
标签。
<!DOCTYPE html>
<html>
<head>
<title>ESP32 Web Server</title><!-- 追加一个名叫《ESP32 Web Server》的标签-->
</head>
<body>
<h1>ESP32 Web Server</h1><!-- 追加一个名叫《ESP32 Web Server》的标题-->
<p>GPIO 26 - State</p><!--追加显示GPIO26的状态-->
<p><button>ON</button></p><!--追加ON按钮-->
<p><button>OFF</button></p><!--追加OFF按钮-->
<p>GPIO 27 - State</p><!--追加显示GPIO27的状态-->
<p><button>ON</button></p><!--追加ON按钮-->
<p><button>OFF</button></p><!--追加OFF按钮-->
</body>
</html>
拷贝上述代码至文本文件中,另存为后缀名是"html"的文件,用网页浏览器打开则可以看到以下画面。
超链接
HTML链接称为超链接。可以向文本、图像、按钮或任何其他HTML元素添加超链接。要添加超链接,可以使用和标记。
语法如下:
<a href="url">element</a>
在<a>
和</a>
标记之间,应该放置要应用链接的HTML元素。例如,要将链接应用于其中一个“OFF”按钮,则可以这么写。
<a href="url"><button>OFF</button></a>
href 属性指定了链接的指向。当您点击 GPIO 26 ON 按钮时,您希望被重定向到根页面,然后是 /26/on。为此,应将该 URL 添加到 href 属性中,如下所示:
<a href="/26/on"><button>ON</button></a>
完整的含有超链接的代码如下。
<!DOCTYPE html>
<html>
<head>
<title>ESP32 Web Server</title><!-- 追加一个名叫《ESP32 Web Server》的标签-->
</head>
<body>
<h1>ESP32 Web Server</h1><!-- 追加一个名叫《ESP32 Web Server》的标题-->
<p>GPIO 26 - State</p><!--追加显示GPIO26的状态-->
<p><a href="/26/on"><button>ON</button></a></p>
<p><a href="/26/off"><button>OFF</button></a></p>
<p>GPIO 27 - State</p><!--追加显示GPIO27的状态-->
<p><a href="/27/on"><button>ON</button></a></p>
<p><a href="/27/off"><button>OFF</button></a></p>
</body>
</html>
上述代码若保存到刚才的txt文件中再次用网页浏览器打开的话,遇到报错是正常的。因为href="/26/on"
并没有相应的文件可以超链接;但在ESP32里的话不会有这问题,因为ESP32会发送这些相关信息给Web服务器。
类属性
class 属性为元素指定一个或多个类名。类名对于在 CSS 中定义样式非常有用。例如,如果要为一组 HTML 元素设置相同的样式,我们可以为它们设置相同的类名。
使用下面的语法添加类属性
<element class="classname">
一个 HTML 元素可以有多个类名,类名之间必须用空格隔开。在上一个教程中,我们为《开启》按钮指定了类名 “button”。对于《关闭》按钮,我们同时指定了 “button ”和 “button2 ”两个类名。因此,GPIO 26 按钮的类名如下
<p><a href="/26/on"><button class="button">ON</button></a></p>
<p><a href="/26/off"><button class="button button2">OFF</button></a></p>
那么,完整代码则为
<!DOCTYPE html>
<html>
<head>
<title>ESP32 Web Server</title><!-- 追加一个名叫《ESP32 Web Server》的标签-->
</head>
<body>
<h1>ESP32 Web Server</h1><!-- 追加一个名叫《ESP32 Web Server》的标题-->
<p>GPIO 26 - State</p><!--追加显示GPIO26的状态-->
<p><a href="/26/on"><button class="button">ON</button></a></p>
<p><a href="/26/off"><button class="button button2">OFF</button></a></p>
<p>GPIO 27 - State</p><!--追加显示GPIO27的状态-->
<p><a href="/26/on"><button class="button">ON</button></a></p>
<p><a href="/26/off"><button class="button button2">OFF</button></a></p>
</body>
</html>
元数据
在 index.html 文件的头部,添加了 <meta>
标签,它能使网页在任何网络浏览器中都能响应。
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta>
标签提供有关 HTML 文档的元数据。元数据不会在页面上显示,但会向浏览器提供有用的信息,例如,如何显示内容。
防止浏览器向 ESP32 发送有关收藏夹的请求追加如下代码
<link rel="icon" href="data:,">
二、 CSS介绍
0. 什么是CSS
CSS 是层叠样式表的缩写,用于描述网页中元素的外观。它描述网页的某一部分,如特定标签或特定标签集。CSS 可以添加到 HTML 文件中,也可以添加到 HTML 文件引用的单独文件中。把 CSS 添加到 HTML 文件中是因为它更容易添加到 Arduino IDE 中。
CSS 应放在 <style>
和 </style>
标记之间,应放在 HTML 文件的head部。
如:
<!DOCTYPE html>
<html>
<head>
<title>ESP32 Web Server</title><!-- 标签 -->
<style>CSS代码<\style><!-- CSS部分-->
</head>
CSS 使用选择器来设置 HTML 内容的样式。选择器指向你想要样式化的 HTML 元素。选择器具有属性,而属性具有值。
selector {
property: value;
}
1. 设计页面样式
html {
font-family: Helvetica; /* 字体:Helvetica */
display: inline-block; /* 内容显示为一个块 */
margin: 0px auto; /* 页边距:0 */
text-align: center; /* 对齐方式:居中 */
}
截至目前为止,完整代码如下
<!DOCTYPE html>
<html>
<head>
<title>ESP32 Web Server</title><!-- 追加一个名叫《ESP32 Web Server》的标签-->
<meta name="viewport" content="width=device-width, initialscale=1">
<link rel="icon" href="data:,">
<style>
html {
font-family: Helvetica; /* 字体:Helvetica */
display: inline-block; /* 内容显示为一个块 */
margin: 0px auto; /* 页边距:0 */
text-align: center; /* 对齐方式:居中 */
}
</style>
</head>
<body>
<h1>ESP32 Web Server</h1><!-- 追加一个名叫《ESP32 Web Server》的标题-->
<p>GPIO 26 - State</p><!--追加显示GPIO26的状态-->
<p><a href="/26/on"><button class="button">ON</button></a></p>
<p><a href="/26/off"><button class="button button2">OFF</button></a></p>
<p>GPIO 27 - State</p><!--追加显示GPIO27的状态-->
<p><a href="/26/on"><button class="button">ON</button></a></p>
<p><a href="/26/off"><button class="button button2">OFF</button></a></p>
</body>
</html>
在网页端的整体效果如下:
2. 设计按键样式
要选择具有特定类别的元素,我们可以在类别名称后使用英文的句号(.),如下所示。
/*
.button 是一个类选择器,下面的样式规则将应用于所有具有 "button" 类的 HTML 元素。
*/
.button {
background-color: #4CAF50;/* 设置按钮的背景颜色为绿色 */
border: none; /* 移除按钮的边框 */
color: white; /* 设置按钮文本颜色为白色 */
padding: 16px 40px; /* 设置按钮内部的内边距,上下为16px,左右为40px */
text-decoration: none;/* 移除按钮文本的下划线*/
font-size: 30px;/* 设置按钮文本的字体大小为30px */
margin: 2px; /* 设置按钮的外边距为2px */
cursor: pointer; /* 当鼠标悬停在按钮上时,鼠标指针变为指针形状(通常是手型),表示可点击 */
}
button2为关闭按钮的配置,比如用灰色显示,则可以这么写
.button2 {
background-color: #555555
}
background-color
: 用于设置按钮(button)的背景颜色,可通过颜色名称、十六进制值、RGB 等方式来指定颜色。
border
: 控制按钮(button)的边框样式,包括边框宽度、样式(如实线、虚线)和颜色等,设置为 “none” 时可移除边框。
color
:用来确定按钮(button)上文本的颜色,使文字以指定的颜色显示。
padding
: 定义按钮(button)内部内容(如文本)与按钮边框之间的间距,可分别设置上下和左右的间距。
text-decoration
: 主要用于控制按钮(button)文本是否有下划线、删除线等装饰效果,“none” 表示无装饰。
font-size
: 规定按钮(button)文本的字体大小,以像素(px)、点数(pt)等单位来衡量。
margin
: 设置按钮(button)与相邻元素之间的外边距,用于控制按钮在页面布局中的间隔。
cursor
: 当鼠标指针悬停在按钮(button)上时,改变指针的形状,例如变为手型来提示用户该按钮可以点击。
把.button以及.button2的代码加到<style>
和</style>
之间的话,则可以看到如下画面。