当前位置: 首页 > article >正文

ESP32-Web-Server编程-CSS 基础 2

ESP32-Web-Server编程-CSS 基础 2

概述

如上节所述,可以使用外部 CSS 文件来修饰指定的 HTML 文件。

  • 外部引用 - 使用外部 CSS 文件

    当样式需要被应用到很多页面的时候,外部样式表将是理想的选择。使用外部样式表,就可以通过更改一个文件来改变所有包含该 CSS 文件的 HTML 的外观。在 HTML 文件中使用 href=XXX,来导入对应的 CSS 文件到该文件。就像 C 语言的头文件、或者 python 语言的 import 一样。

    <head>
    <link rel="stylesheet" type="text/css" href="mystyle.css">
    </head>
    

网页内容不复杂时,可以使用内联样式,网页内容复杂的话,最好的方式是通过外部引用CSS文件。

需求及功能解析

与上节 的后台代码类似,本节主要演示如何使用外部 CSS 文件,来让读者了解并体会其基本语法与作用。

如果你是第一次学习该系列的博客,请参考 A 博客来熟悉编程使用的方法。

示例解析

目录结构

├── CMakeLists.txt
├── main
│   ├── CMakeLists.txt
│   └── main.c                 User application
├── components
│   └── fs_image
		└── index.html
		└── css
			└── stylesheet.css
|	└── url_handlers
		└── url_handlers.c
		└── ...
└── README.md                  This is the file you are currently reading
  • 目录结构主要包含主目录 main,以及组件目录 components. 与前述章节不同的是,在 components/fs_image/css 目录定义了一个 stylesheet.css 文件。该css 文件定义了一些样式类别:
.box { 
    background-color: rgb(66, 138, 148);
  }
  
  .mygrid { 
    max-width: 800px; 
    margin: 0 auto; 
    display: grid; 
    grid-gap: 2rem; 
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  }
  
  html {
    font-family: Arial, Helvetica, sans-serif; 
    display: inline-block; 
    text-align: center;
  }
  
  p {
    font-size: 16px;
  }

然后在 components/fs_image/index.html 中通过外部引用关键字 link 引入该 css 文件,如此该 css 文件可以作用于该 HTML 中的元素:

<head>
    <title>IOT LAO WANG</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="stylesheet.css">
  </head>

读者可以删除或在屏蔽 <link rel="stylesheet" type="text/css" href="stylesheet.css"> 这行代码,对比包含该代码和去掉该部分代码后的异同,增加对这部分内容的理解。

最后在后端代码中为了让浏览器加载到 <link rel="stylesheet" type="text/css" href="stylesheet.css"> 这行代码时客户端浏览器能能正确从 web 服务器接收到对应的 css 文件,因此在 url_handlers/url_handlers.c 中增加对应的 handler 函数css_get_handler()

/* Handler to respond with CSS.
 * Browsers expect to GET website icon at URI /stylesheet.css.*/
static esp_err_t css_get_handler(httpd_req_t *req)
{
    extern const unsigned char css_start[] asm("_binary_stylesheet_css_start");
    extern const unsigned char css_end[]   asm("_binary_stylesheet_css_end");
    const size_t css_size = (css_end - css_start);
    httpd_resp_set_type(req, "text/css");
    httpd_resp_send(req, (const char *)css_start, css_size);
    return ESP_OK;
}

httpd_uri_t httpd_uri_array[URL_HANDLERS_MAX] = {
    {"/", HTTP_GET, index_html_get_handler, NULL},
    {"/favicon.ico", HTTP_GET, favicon_get_handler, NULL},
    {"/stylesheet.css", HTTP_GET, css_get_handler, NULL}, // 浏览器请求时通过该函数发送 CSS 文件
};

示例输出:

在这里插入图片描述

讨论

读者朋友可以自己更改 CSS 文件中的一些属性的值来查看对网页的外观的影响。

总结

1)本节主要演示如何使用外部 CSS 文件,在前端代码 html 中通过 link 标签引用指定的 CSS 文件,然后在后端代码中通过增加发送 CSS 文件的 handler 就可以正确应用外部的 CSS 文件。

资源链接

1)ESP32-Web-Server ESP-IDF系列博客介绍
2)对应示例的 code 链接 (点击直达代码仓库)

3)下一篇:ESP32-Web-Server编程-JS 基础 1

(码字不易感谢点赞或收藏)


http://www.kler.cn/a/153841.html

相关文章:

  • 记录———封装uni-app+vant(u-upload)上传图片组件
  • 【C#】C#编程入门指南:构建你的.NET开发基础
  • JAVA中CountDownLatch使用方法
  • 汽车安全再进化 - SemiDrive X9HP 与环景影像系统 AVM 的系统整合
  • 每日OJ题_牛客_天使果冻_递推_C++_Java
  • 技术速递|Microsoft.Extensions.VectorData 预览版简介
  • Vim多行编辑
  • Python生成器:优雅而高效的迭代器
  • OpenCV数字图像处理——检测出图像中的几何形状并测量出边长、直径、内角
  • 基于SpringBoot自定义线程池实现多线程执行方法,以及多线程之间的协调和同步
  • HuggingFace学习笔记--利用API实现简单的NLP任务
  • 经济思想的起源
  • RocketMQ主从同步原理
  • 什么是CAS, 什么是AQS
  • 如何解决 Python ModuleNotFoundError 错误
  • C 标准库函数
  • 避免20种常见Selenium自动化测试异常,让你的测试更加稳定和可靠!
  • Python---文件操作综合案例
  • 4个Pycharm高效插件
  • 计算机视觉(OpenCV+TensorFlow)
  • 【linux】日志有哪些
  • 鸿蒙(HarmonyOS)应用开发——容器组件(List组件)
  • python 加马赛克
  • clickhouse -- clickhouse解析复杂JSON数组
  • 【开源】基于JAVA的超市账单管理系统
  • Java核心知识点整理大全26-笔记