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

群晖NAS断电后IP变了?3步搞定静态IP设置(附Linux挂载指南) 本文针对群晖NAS因断电重启导致IP地址变化的问题,提供了从根源到实践的完整解决方案。核心内容包括如何为NAS配置静态IP以彻底解决连接中断,并详细讲解了在Linux系统中通过NFS协议稳定挂载NAS共享文件夹的步骤与指南,确保网络存储服务持久可靠。 阅读详情

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

导读:本小节讲解 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
【OpenClaw从入门到精通】第07篇:2026实测!零基础开发OpenClaw自定义Skill——招聘外呼自动邀约完整教程 本文聚焦OpenClaw自定义Skill开发全流程,针对现成技能无法满足个性化场景(如专属招聘流程、内部系统对接)的痛点,以“招聘外呼自动邀约”为实战案例,从概念认知、环境搭建、分步开发到测试优化,手把手教读者从零构建自定义Skill。内容涵盖Skill目录结构、SKILL.md核心配置、Python主逻辑实现、API对接、安全配置等关键环节,融入2026年ClawHavoc事件安全警示,强调最小权限、凭证安全等开发原则。所有代码经实测可运行,步骤详尽且兼顾新手友好与进阶需求。 阅读详情

相关推荐

我看MFC的过去、现在和未来

首先说句题外话,虽然我现在的“主业”是Qt,但自己扪心自问,对MFC的熟悉程度要超过Qt。正是由于有了对MFC的熟悉,才能在使用Qt时,比较清醒的认清两者的优劣之处,在此暂且不提。 这个话题也可以说是由来已久,众说纷纭,今时我也谈谈自己的感悟。 一、对MFC的总体看法 首先看看云风在其《游戏之旅-我的编程感悟》一书中对MFC的看法: “我所见到的程序员中,很多把C+

qter_wd007的专栏 6115

打印样式设计

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

weixin_33851604的博客 771

保姆级教程:在LKD3588开发板上为RK3588添加SC2210摄像头驱动(含完整DTS配置)

本文提供了一份详细的教程,指导如何在LKD3588开发板上为RK3588处理器添加SC2210摄像头驱动,包括完整的DTS配置和内核编译步骤。教程涵盖了环境准备、驱动文件添加、DTS配置详解、内核编译与烧录、驱动测试以及常见问题排查,帮助开发者快速实现SC2210传感器在RK3588平台上的集成与优化。

weixin_42641741的博客 480

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

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

大叔的私享课 147

【OpenBMC 系列】4.启动流程 使用qume模拟ast2600-evb

1.安装openbmc适配的qume 2.启动bmc 3.使用bmc web

AiFool的博客 4459

Oracle迁移至华为GaussDB SQL语法和存储过程转换

在将Oracle数据库迁移至GaussDB时,SQL语法和存储过程的转换是确保应用程序正常运行和数据完整性的关键环节。由于两者在数据类型、函数、过程语言等方面存在差异,必须系统化地进行转换和测试。正则表达式脚本:批量替换常见的语法差异。SQL解析工具:解析SQL脚本,生成GaussDB兼容的语法。代码审查工具:自动检查转换后的代码,确保语法和逻辑正确。将Oracle迁移至GaussDB涉及到SQL语法和存储过程的全面转换。通过系统化的转换步骤、使用合适的工具并结合手动调整,可以确保迁移过程的顺利进行。

weixin_38428874的博客 2398

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

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

余正源的博客 650

LSCM最小二乘保角参数化

LSCM最小二乘保角参数化 最小二乘思想 已知一组点的数据(x,y) x x1x_1x1​ x2x_2x2​ x3x_3x3​ … xnx_nxn​ y y1y_1y1​ y2y_2y2​ y3y_3y3​ … yny_nyn​ 可以近似为线性关系 y=ax+by=ax+by=ax+b ,目标为确定常数 aaa , bbb ; 解法:找到 aaa , bbb ,使得所有 yiy_iyi​ 与 axi+bax_i+baxi​+b 偏差的平方和 Q=∑i=1n(yi−axi−b)2 Q=\s

weixin_49732532的博客 4253

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

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

2201_75604580的博客 695

从2D到3D地图开发:手把手教你用Cesium+Three.js实现卫星轨迹可视化(含代码片段)

本文详细介绍了如何结合Cesium与Three.js实现从2D到3D的卫星轨迹可视化。通过对比传统Web GIS框架的局限,阐述了Cesium处理三维地理与轨道数据、Three.js负责高级图形渲染的分工优势,并提供了从环境搭建、坐标同步到动态粒子效果实现的完整代码实战指南。

nut55的博客 672

educoder中Hive综合应用案例 — 用户搜索日志分析

Hive综合应用案例 — 用户搜索日志分析

weixin_46026136的博客 4779

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

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

2401_84297796的博客 785

Java 部分笔试题解析

合法的 try 语句块必须包含 try 块,并且至少包含一个 catch 块或一个 finally 块。给定一个长度为n的数组,数组中的每个元素,表示一根水管的长度,水管可以在任意位置锯开。调用 sleep() 方法、创建新线程、高优先级线程进入就绪状态只会暂停或抢占线程的执行,而不会终止线程的运行。A.抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法。接口中的成员变量必须是常量(static final),而抽象类可以有普通成员变量。

博客 2579

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

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

2401_84302796的博客 758

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

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

java1234的博客 215

STM32F407中文手册

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

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

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

java1234的博客 216

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

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

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

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

java1234的博客 207

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

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

bjzhang75的博客 242

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

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

handsome_sai的博客 282

Web 版翻译者资料库

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

howard2005的专栏 144

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、付费专栏及课程。

余额充值