ESP32教程(基于Arduino IDE)7-Web Server③ HTML&CSS基础

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>之间的话,则可以看到如下画面。

在这里插入图片描述

以上内容,如有错误,欢迎指正交流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值