HTML5与CSS3基础语法自学教程(二十二)

手把手教你用89C52单片机驱动0.96寸OLED(IIC接口,附完整代码) 本文详细介绍了如何使用89C52单片机通过I2C接口驱动0.96寸OLED显示屏,包括硬件连接、I2C通信原理、SSD1306驱动芯片的初始化及显存管理技巧,并提供了完整的代码示例和常见问题排查方法,帮助电子爱好者快速掌握OLED显示技术。 阅读详情

本文首发于【前端课湛】微信公众号。可以在微信里搜索【前端课湛】关注,第一时间看文章!

导读:本小节讲解 CSS 中的计数器,其中包含了计数器的概念,以及计数器中所包含的属性和函数等内容。计数器的应用场景主要集中在复杂编号的列表中,但涉及内容比较难懂。

什么是计数器

CSS 中的计数器本质上来说就是由 CSS 维护的变量,计数器的值可以通过 CSS 规则递增来跟踪计数器的使用次数,例如可以使用计数器来自动为网页中的标题编号。

简单来说,有序列表就是一个比较简单的计数器,但计数器可以实现编号更为复杂的情况。如下示例代码展示了 CSS 中的计数器的用法:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>计数器示例</title>
  <style>
    #demo ol {
      counter-reset: section;
      list-style-type: none;
    }

    #demo ol li {
      counter-increment: section;
    }

    #demo ol li:before {
      content: counters(section, ".") ". ";
    }
  </style>
</head>

<body>
  <div id="demo">
    <ol>
      <li>进风口的爽肤水
        <ol>
          <li>非进口商的</li>
          <li>非进口商的</li>
          <li>非进口商的</li>
        </ol>
      </li>
      <li>进风口的爽肤水
        <ol>
          <li>非进口商的</li>
          <li>
            非进口商的
            <ol>
              <li>将咖啡色的开发商</li>
              <li>将咖啡色的开发商</li>
              <li>将咖啡色的开发商</li>
              <li>将咖啡色的开发商</li>
            </ol>
          </li>
          <li>非进口商的</li>
        </ol>
      </li>
      <li>进风口的爽肤水</li>
    </ol>
  </div>
</body>

</html>

上述示例代码运行效果如下图所示:

355bd7f0fdf8dd6cc58e50dda374ba66.jpeg
03-01.png

提示:上述示例代码仅做展示作用,不需要掌握。有关计数器的内容后续会详细讲解。

如上述示例所示,操作计数器的值是通过如下 2 个属性实现:

  • counter-reset 属性

  • counter-increment 属性

在 HTML 页面中显示计数器是通过如下 2 个函数实现:

  • counter() 函数

  • counters() 函数

counter-reset 属性

CSS counter-reset 属性用来将计数器重置为给定的值。该属性的默认值为 none,其值的类型具有如下 3 种情况:

  • 要重置为计数器的名称。该名称可以是字母(A-Z,a-z)、十进制数字(0-9)、连接符(-)、下划线(_)以及转义字符。

  • 要在元素每次出现时将计数器重置为的值。如果没有指定,默认值为 0。

  • none:不执行计数器复位。

如下示例代码展示了 counter-reset 属性为 none 值的情况:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>counter-reset属性</title>
  <style>
    #chapters {
      counter-reset: chapter-count;
    }

    h2 {
      counter-increment: chapter-count;
      font-size: 1em;
    }

    h2::before {
      content: "Chapter "counter(chapter-count) ": ";
    }

    #example-element {
      background-color: #add8e6;
      counter-reset: none;
    }
  </style>
</head>

<body>
  <div id="chapters">
    <h2>什么是计数器</h2>
    <h2 id="example-element">coutner-reset属性</h2>
    <h2>counter-increment属性</h2>
    <h2>counter()和counters()函数</h2>
  </div>
</body>

</html>

上述示例代码运行效果如下图所示:

bfd5ea1f8a545f0b479ac35fc544cd74.jpeg
03-02.png

如上图所示,当 counter-reset 属性的值为 none 值时,计数器没有执行复位,而是继续增加操作。如果将 counter-reset 属性值设置为 chapter-count 的话,会如下图所示:

975c6f74a3224a3d612ad030876eb4c4.jpeg
03-03.png

如上图所示,当 counter-reset 属性值为 chapter-count 时,会将计数器重新复位为 0。这种情况下,与将 counter-reset 属性值为 chapter-count 0 的情况是相同的。

如果将 counter-reset 属性值设置为 chapter-count 5 的话,会如下图所示:

83b2a02b0aff80c0848a3a051f54b8f0.jpeg
03-04.png

如上图所示,当 counter-reset 属性值设置为 chapter-count 5 时,会将计数器重新复位为 5。

注意:counter-reset 属性必须配合 counter() 函数和 counter-increment 属性使用。

计数器的个数不一定是一个,也可以是多个。如果 counter-reset 属性的值是多个计数器的话,则计数器之间使用空格分隔。如下示例代码展示了 counter-reset 属性设置多个计数器:

h1 {
  counter-reset: chapter section 1 page;
}

上述示例代码的含义是:

  • 将 chapter 和 page 两个计数器复位为 0。

  • 将 section 计数器复位为 1。

counter-increment 属性

CSS counter-increment 属性用来设置计数器每次增加的值。该属性的默认值为 none,其值的类型具有如下 3 种情况:

  • 要增加为计数器的名称。该名称可以是字母(A-Z,a-z)、十进制数字(0-9)、连接符(-)、下划线(_)以及转义字符。

  • 要在元素每次出现时将计数器增加为的值。如果没有指定,默认值为 1。

  • none:任何计数器都不能递增。

如下示例代码展示了 counter-increment 属性为 none 值的情况:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>counter-increment属性</title>
  <style>
    #chapters {
      counter-reset: chapter-count;
    }

    h2 {
      counter-increment: none;
      font-size: 1em;
    }

    h2::before {
      content: "Chapter "counter(chapter-count) ": ";
    }
  </style>
</head>

<body>
  <div id="chapters">
    <h2>什么是计数器</h2>
    <h2 id="example-element">coutner-reset属性</h2>
    <h2>counter-increment属性</h2>
    <h2>counter()和counters()函数</h2>
  </div>
</body>

</html>

上述示例代码运行效果如下图所示:

ca689356764bbd314e67e76b92eee85b.jpeg
03-05.png

如上图所示,当 counter-increment 属性值为 none 值时,计数器没有任何递增。而当 counter-increment 属性值为 chapter-count 时,会如下图所示:

59f946fe74b07b7c1e4b3200112066b5.jpeg
03-06.png

如上图所示,当 counter-increment 属性值为 chapter-count 时,计数器每次递增为 1。与将 counter-increment 属性值设置为 chapter-count 1 是相同的。

如果将 counter-increment 属性值设置为 chapter-count 5 的话,则如下图所示:

0b2fb2f390463a2a60869a3eefe7fbd0.jpeg
03-07.png

如上图所示,当 counter-increment 属性值为 chapter-count 5 时,计数器每次递增为 5。

说明:如果将 counter-increment 属性值设置为 chapter-count -1 则表示递减。

如果 counter-increment 属性设置多个计数器的递增值的话,计数器之间使用空格进行分隔。如下示例代码展示了 counter-increment 属性设置多个计数器:

h1 {
  counter-increment: chapter section 2 page;
}

上述示例代码的含义是:

  • 将 chapter 和 page 两个计数器递增为 1。

  • 将 section 计数器递增为 2。

counter() 函数

CSS counter() 函数用来简单地将计数器的内容显示在 HTML 页面中。counter() 函数返回一个字符串,该字符串表示指定的计数器的当前值。

counter() 函数的语法结构如下所示:

conter(custom-ident, counter-style)

上述语法结构具体说明如下:

  • custom-ident 参数:表示计数器的名称。

  • counter-style 参数:表示显示的样式。

如下示例代码展示了 counter() 函数的用法:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>counter()函数</title>
  <style>
    ol {
      counter-reset: listCounter;
    }

    li {
      counter-increment: listCounter;
    }

    li::after {
      content: "["counter(listCounter) "] == ["
        counter(listCounter, upper-roman) "]";
    }
  </style>
</head>

<body>
  <ol>
    <li></li>
    <li></li>
    <li></li>
  </ol>
</body>

</html>

上述示例代码运行效果如下图所示:

9818869906dcaf4806b7f203530309a7.jpeg
03-08.png

counter() 函数经常与 ::before 和 ::after 伪元素选择器配合使用。

counters() 函数

CSS counters() 函数支持计数器的嵌套情况。counters() 函数返回一个字符串,该字符串表示指定的计数器的当前值。

counters() 函数的语法结构如下所示:

conter(custom-ident, string, counter-style)

上述语法结构具体说明如下:

  • custom-ident 参数:表示计数器的名称。

  • string 参数:表示计数器嵌套的分隔符,可以是任意数量的文本字符。

  • counter-style 参数:表示显示的样式。

如下示例代码展示了 counters() 函数的用法:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>counters()函数</title>
  <style>
    ol {
      counter-reset: listCounter;
    }

    li {
      counter-increment: listCounter;
    }

    li::marker {
      content: counters(listCounter, '.', upper-roman) ') ';
    }

    li::before {
      content: counters(listCounter, ".") " == "counters(listCounter, ".", lower-roman);
    }
  </style>
</head>

<body>
  <ol>
    <li>
      <ol>
        <li></li>
        <li></li>
        <li></li>
      </ol>
    </li>
    <li></li>
    <li></li>
    <li>
      <ol>
        <li></li>
        <li>
          <ol>
            <li></li>
            <li></li>
            <li></li>
          </ol>
        </li>
      </ol>
    </li>
  </ol>
</body>

</html>

上述示例代码运行效果如下图所示:

2f7829afea16e77450b5ad33846aaf23.jpeg
03-09.png

总结

本小节主要讲解了有关 CSS 中的计数器的内容,其中包含了 counter-reset 属性、counter-increment 属性、counter() 函数以及 counters() 函数,并且讲解了简单的计数器案例以及带有嵌套的计数器案例等内容。

预告:下一章,我们将讲解表格内容。

如要转载本文,请先加作者微信(2080954535,与 QQ 同号),获得转载许可。原创不易,请尊重作者劳动!

216e4cbf85b9f634863291b44ca86a41.jpeg
作者二维码.png
Skynet 框架面试题 本文整理了游戏服务端开发面试中 Skynet 框架的高频考点,涵盖底层架构、消息派发、协程调度、网络 I/O、harbor 跨机通信、内存管理、socket 处理、阻塞操作、错误处理等核心内容。全面覆盖 Skynet 框架的原理、使用和实战问题,追求深入准确,拒绝八股文。 阅读详情

相关推荐

UE4游戏开发:GameInstance与GameMode的实战应用与避坑指南

本文深入解析了UE4中GameInstance与GameMode的核心差异与实战应用。GameInstance作为贯穿游戏进程的全局单例,负责跨关卡数据持久化与系统管理;而GameMode则定义特定关卡内的游戏规则与逻辑,随关卡加载销毁。文章通过数据存储、动态模式切换及网络游戏等场景,提供了清晰的应用指南与常见避坑方案,帮助开发者构建更健壮的UE4游戏架构。

kubernetes8ctl的博客 230

打印样式设计

如果你对许多从事网页开发的人提起打印样式,他们第一反映会想到使用打印CSS。当网页文档需要被打印时,我们已经习惯于创建一个打印样式表。这些样式表确保打印版本清晰并且保证用户不会打印出巨幅图像。然而,CSS也被用来排版图书,商品目录以及宣传册 - 这些内容在以前可能从来没有被设计成网页。 在这篇文章里,我们将探索一些已有的CSS模块,它们不是在网页浏览器中使用,而是为了解决打印和分页的问题。我将解...

weixin_33851604的博客 771

NC数据预处理避坑指南:从MATLAB读取到GeoTIFF导出,解决坐标翻转与值域异常

本文详细解析了NC数据预处理中的常见问题,包括MATLAB读取时的坐标翻转与GeoTIFF导出时的值域异常。通过实战案例,介绍了如何解决矩阵方向错乱、处理FillValue与scale_factor、精准移植空间参考等关键问题,帮助研究者高效完成气象数据的批量处理与GIS兼容性验证。

weixin_30788619的博客 654

HTML5与CSS3基础语法自学教程(二十)

本文首发于【前端课湛】微信公众号。可以在微信里搜索【前端课湛】关注,第一时间看文章!导读:本小节主要讲解 HTML 中的列表元素,其中包含了什么是列表元素、有序列表、无序列表以及定义列表...

大叔的私享课 147

Elsevier投稿实战:从ESWA模板到录用通知的全流程拆解

本文详细拆解了Elsevier旗下期刊ESWA(Expert Systems With Applications)的投稿全流程,从模板选择、投稿系统操作到审稿意见回复和录用后注意事项。重点分享了单栏LaTeX模板调整、APA文献格式处理、Highlights撰写技巧等实战经验,帮助研究者高效完成投稿并提升录用概率。

weixin_32715349的博客 241

CMap数据库学习及结果可视化

CMap是一个生物信息学数据库和工具,旨在通过比较基因表达谱来揭示药物、基因和疾病之间的潜在关联。CMap数据库主要用于寻找药物、化合物和生物过程之间的关系,并用于药物重定位(drug repurposing)和疾病机制研究。

zfyyzhys的博客 5600

HTML5基础加强css样式篇(css过渡属性的隐式过渡问题)(二十二)

1.隐式过渡属性: 使用火狐浏览器时会出现宽度高度随字体大小一起出现过渡:(原因主要是因为高度和宽度使用了em单位,em随字体大小改变而改变导致) 尚硅谷HTML5 初级阶段 .box { width: 5em; height: 5em; background-color:

余正源的博客 650

Hermes Agent 对阵 OpenClaw:自我改进的 AI 队友

但在 2026 年 2 月,Nous Research 发布了 Hermes Agent,它带来了不同的愿景:一个不仅能够运行,还能学习的代理。在完成复杂的多步骤任务后,它会分析自己的操作并创建一个可复用的技能。对于已在使用 OpenClaw 的澳大利亚企业而言,这意味着您可以试用 Hermes Agent,而无需丢失数月的配置和自定义成果。最重要的区别在于理念:OpenClaw 是一个需要配置的工具,而 Hermes Agent 则是一个会学习的队友。OpenClaw 的技能是静态的。

xiaoshun007的专栏 1571

css基础教程【学习笔记】,2024年最新面试阿里巴巴运营自我介绍

元素显示模式就是元素(标签)以什么方式进行显示,比如div自己占一行,比如一行可以放多个span。网页的标签非常多,在不同地方会用到不同类型的标签,了解他们的特点可以更好的布局我们的网页。​ 在 CSS 中,可以根据选择器的类型把选择器分为***基础选择器***和***复合选择器***,复合选择器是建立在基础选择器之上,对基本选择器进行组合形成的。​ 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的,可以更准确、更高效的选择目标元素(标签)后代选择器、子选择器、并集选择器、伪类选择器。

2201_75604580的博客 695

搭建一个简单的 Django + Vue 项目

在本文中,我将为您详细介绍如何搭建一个简单的 Django + Vue 项目。Django 是一个使用 Python 编写的高级 Web 框架,而 Vue 是一个流行的 JavaScript 框架,用于构建用户界面。通过结合 Django 和 Vue,我们可以创建强大的全栈 Web 应用程序。创建 Django 项目设置 Django 后端创建 Vue 前端连接 Django 和 Vue让我们开始吧!

JfpBlockchain的博客 352

自动驾驶领域自动化数据标注应用

自动驾驶领域自动化数据标注应用 1. 背景介绍 1.1 自动驾驶技术的发展 自动驾驶技术近年来取得了长足的进步,吸引了众多科技公司和传统车企的投入。自动驾驶系统需要感知周围环境、做出决策并控制车辆,是一个极具挑战的任务。其中,环境感知是自

AI天才研究院 2214

2024年网络安全最新VMware虚拟机win7安装教程_vmware安装windows7 csdn

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察。

2401_84297796的博客 785

基于Python的智能动漫更新监控爬虫系统:从原理到实战

本文详细介绍了如何使用Python构建一个智能化的动漫更新监控系统,涵盖从基础爬虫到高级自动化监控的全套解决方案。文章将深入探讨最新的网络爬虫技术,包括异步请求、反反爬策略、智能解析算法等,并提供完整的代码实现和性能优化方案。通过本系统,用户可以实时获取多个动漫平台的更新信息,并通过多种渠道接收通知。关键词:Python爬虫、动漫监控、自动化通知、异步爬虫、反反爬策略。

2201_76125261的博客 902

JavaScript学习笔记(二十二)原型及原型链_1小时掌握javascript原型与原型链 qianfeng

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察。

2401_84302796的博客 758

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【技术专题】HTML5 网页技术 - HTML5 地理定位 API & Web Workers

Java1234_小锋老师推出《一天学会 HTML5 视频教程(无废话版)》,涵盖HTML5核心知识点,包括语义化标签、音频视频、Canvas动画、SVG、Web Storage、File API、拖放与地理定位API,以及关键的Web Workers多线程技术。通过实战示例详解navigator.geolocation获取位置信息及Worker后台执行耗时任务,实现页面流畅交互。配套课件、源码打包下载,助力快速掌握现代Web开发技能。

java1234的博客 215

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【技术专题】CSS3 网页技术 - CSS3 工程化与最佳实践

小锋老师全新推出《一天学会 CSS3 视频教程(无废话版)》,涵盖从基础到工程化实践的完整知识体系。课程内容包括选择器、盒模型、布局、动画、响应式设计及最佳实践,重点讲解 BEM 命名规范、CSS 模块化组织、变量主题切换、性能优化与可访问性。配套提供视频、课件与源码,支持百度网盘下载,助力开发者高效掌握现代 CSS3 核心技能。

java1234的博客 216

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【技术专题】CSS3 网页技术 - CSS3 响应式与移动端适配

小锋老师全新推出《一天学会 CSS3 视频教程(无废话版)》,涵盖从基础到进阶的12大核心模块,重点讲解响应式布局与移动端适配。内容包括媒体查询、移动优先设计、视口单位、rem动态适配、弹性图片/视频、srcset/sizes、clamp()函数及常见兼容问题解决方案。配套视频+课件+源码打包下载,助你高效掌握现代CSS开发技能。

java1234的博客 207

使用HTML+CSS+JavaScript实现文件上传弹窗

使用HTML+CSS+JavaScript实现文件上传弹窗

bjzhang75的博客 242

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 144

Jackson 序列化 / 反序列化注解 完整版笔记

Jackson 序列化 / 反序列化注解 完整版笔记

handsome_sai的博客 282

MCP 协议会成为前端 AI 工程的标准接口吗?

MCP(Model Context Protocol)正在成为连接 AI 模型与外部工具、数据源的一层通用协议。本文从 MCP 的核心机制出发,分析它在浏览器与前端工程中的落地边界,讨论它能否成为前端 AI 工程的标准接口,并给出当下更务实的架构选择建议。

m0_62937412的博客 358

LangGraph 本地 build 频频翻车,最终在服务器跑通流式对话

先说结论:我本地那个,一次都没成功过。三次,三次,全挂在拉镜像上。而顺得像刚上过油。这就很像我高中那辆自行车:骑着能走,一上锁就坏。那天晚上我盯着终端里那行红字看了很久,想的不是技术方案,想的是——为什么同一个工具,可以一边让我觉得自己很行,一边让我觉得自己不太行。

人工智能AI技术 119

海外平台频繁弹验证?从 DNS、WebRTC 到浏览器指纹的环境异常排查清单

在运营多地区海外平台账号时,即使代理节点通畅、TCP 握手成功,仍可能遇到频繁人机验证、地区限制、播放失败等异常。核心结论是:这类问题往往不在网络传输层,而在浏览器环境参数与网络出口之间的逻辑自洽性。本文从 DNS 泄漏、WebRTC 穿透、时区与语言匹配、Canvas/WebGL 指纹、TLS 特征五个维度,给出一份可复现的环境异常排查清单,并对比个人手动配置与工程化环境管理方案的适用边界。适用于跨境运营、多账号运维团队。

P1Browser【p1指纹浏览器】的博客 186

智能问诊的流程

本文介绍基于FastAPI构建的医疗多Agent系统MediAgent,通过症状分析、诊断推理与治疗建议等模块协同,实现从问诊到报告生成的完整工作流。系统采用前后端分离架构,结合MySQL、RabbitMQ与Docker实现工程化部署,支持异步化验结果接入。虽当前状态暂存于内存,但已具备可扩展性,未来可通过Redis持久化、消息队列联动及医疗安全机制完善,应用于慢病管理、辅助决策等场景,推动AI在医疗流程中的落地应用。

Joey 的工作空间~ 780

信号链电路怎么选运放?奥特四款信号链运放解析【选型参考】

在模拟电路设计中,运放作为信号链的“第一道门槛”,其微小误差往往决定了整个系统的成败。

naNa_1120的博客 192

流式输出 SSE:实现 AI 对话打字机效果后端开发

摘要解决传统 HTTP 请求在 LLM 长文本生成时导致的客户端长时间阻塞与 TTFT 极高的问题。适用于需为 AI 应用提供打字机效果、优化交互体验的后端开发工程师。读完可获得基于 FastAPI 与 SSE(Server-Sent Events)技术的流式响应实现代码、协议规范及生产环境避坑指南。关键词SSE、流式输出、FastAPI、打字机效果、TTFT、大模型推理背景与问题大模型(LLM)生成完整回复通常耗时数秒至数十秒,传统请求-响应模型导致用户界面长时间无响应,体验极差。

2402_85729970的博客 184
上一篇: HTML5与CSS3基础语法自学教程(二十一)
下一篇: HTML5与CSS3基础语法自学教程(二十四)
不想成熟的大叔
博客等级 码龄9年 58粉丝 48原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值