开关电源DCM模式:轻载啸叫与低频纹波的根源分析与应对策略
1. 项目概述从一次电源啸叫说起前段时间我接手了一个老项目的电源故障排查。现象很典型一个12V转5V的DC-DC降压模块在轻载时总会发出“滋滋”的高频啸叫声同时用示波器测量输出电压能看到明显的、频率远低于开关频率的低频纹波。负载一加大啸叫和低频纹波就消失了。当时团队里有人怀疑是电感饱和有人觉得是反馈环路不稳定换了一堆元件效果都不明显。最后我们把目光锁定在了电源的工作模式上——它很可能长时间运行在断续导通模式下。这个案例让我深刻意识到对于很多电源工程师尤其是刚入行的朋友来说DCM模式就像房间里的大象大家都知道它的存在但往往低估了它可能带来的麻烦或者不知道如何系统性地应对。简单来说DCM和CCM是开关电源中电感电流的两种基本工作状态。连续导通模式下电感电流在整个开关周期内从不归零波形是连续的三角波。而断续导通模式下电感电流在每个周期内会有一段时间下降到零波形像一个个被拉开的锯齿。很多教科书和芯片数据手册会告诉你DCM模式在轻载时效率可能更高因为它减少了开关损耗。这没错但这只是故事的一面。故事的另一面是DCM模式会引入一系列“不利影响”包括但不限于输出电压纹波增大、反馈环路特性剧变导致难以补偿、容易引发次谐波振荡和噪声、对负载瞬变的响应变差等等。我那个啸叫的电源其低频纹波正是DCM模式下环路增益变化、穿越频率降低所导致的。所以这篇文章我不想再重复教科书上关于DCM/CCM边界条件的计算而是想结合我踩过的坑和调试经验系统地聊聊当你的电源不可避免地要进入DCM时有哪些实实在在的“不利影响”以及我们作为设计者可以采取哪些具体、可操作的策略来规避或减轻这些影响。无论你是在设计一个宽负载范围的适配器还是一个对噪声极其敏感的射频供电电路理解并驾驭DCM模式都至关重要。2. DCM模式的核心特征与潜在问题拆解要解决问题首先得看清问题。DCM模式之所以会带来麻烦根源在于其工作机理与CCM模式有本质不同。这不仅仅是“电流有没有到零”那么简单它引发了一连串的连锁反应。2.1 功率传输的“空窗期”与输出电压纹波在CCM模式下输出电容在每个周期内由电感和负载电流共同充放电但电感电流始终存在为电容提供了相对平滑的充放电电流。而在DCM模式下当电感电流降到零后直到下一个周期开始前存在一段“死区时间”。在这段时间里输出电容独自承担为负载供电的任务。这就导致了一个直接后果输出电压的跌落。这个跌落的幅度取决于负载电流、输出电容的容量及其等效串联电阻。因此DCM模式下的输出电压纹波通常会比同等条件下的CCM模式大得多而且其频率成分除了开关频率及其谐波还可能包含因“死区时间”引入的低频分量。这就是我开头案例中用示波器看到的低频纹波。它不仅仅是美观问题对于一些对电源噪声敏感的模拟或射频电路这种低频纹波可能是致命的。注意测量这种纹波时建议使用带宽限制功能如20MHz并使用接地弹簧探头以避免拾取开关噪声本身从而更清晰地观察这种由工作模式引起的低频跌落。2.2 小信号模型的剧变与环路补偿挑战这是DCM模式最棘手的问题之一。在CCM模式下降压Buck、升压Boost等基本拓扑的小信号传递函数具有标准的二阶特性有一个固定的双极点由电感和输出电容构成右半平面零点对于Boost和Buck-Boost的位置也相对明确。工程师可以基于这套模型用Type II或Type III补偿网络进行相对标准的环路设计。然而在DCM模式下系统的阶数降低了。功率级的小信号模型从二阶系统近似变为一阶系统。这意味着原有的双极点消失了取而代之的是一个主导极点。更关键的是这个主导极点的频率即环路带宽与负载电流直接相关负载越轻DCM程度越深极点频率越低环路带宽就越窄。想象一下你按照CCM满载情况设计了一个相位裕度60度的漂亮环路。一旦负载变轻进入DCM环路增益曲线会整体下移且带宽急剧收缩。这可能导致两个问题一是穿越频率过低系统动态响应变慢负载瞬变时电压跌落/过冲会更大二是相位裕度可能变得过高比如超过90度虽然系统稳定但响应会显得“迟钝”。许多电源在轻载时输出电压“软绵绵”的对负载跳变反应慢根源就在于此。如果补偿网络没考虑到这种变化甚至可能在某个负载点出现相位裕度不足引发振荡。2.3 次谐波振荡与噪声激发的风险在峰值电流模式控制的电源中CCM模式下需要添加斜率补偿来避免次谐波振荡当占空比50%时。而在DCM模式下由于每个周期电流都从零开始理论上不存在次谐波振荡问题。但这并不意味着高枕无忧。DCM模式下的“空窗期”和变化的环路特性使得系统更容易被外部噪声干扰。例如开关节点上的高频振铃由寄生电感和电容引起可能在电流为零期间通过寄生电容耦合到反馈端导致控制器误触发。此外如果布局不当DCM模式下变化的di/dt和dv/dt可能会产生更强的电磁干扰。我遇到的那个啸叫案例有一部分原因就是DCM下环路增益降低导致系统对某些特定频率比如陶瓷电容的压电效应产生的音频频率的抑制能力变差从而引发了可闻噪声。2.4 对负载瞬态响应的影响如前所述DCM模式下环路带宽变窄这直接牺牲了系统的瞬态响应性能。当负载突然加大时由于环路响应慢输出电压会有一个更大的跌落需要更长的时间才能恢复。反之负载突然减小时过冲也会更严重。对于为CPU、FPGA等动态负载供电的电源这是一个需要重点评估的指标。你不能只测试满载和静态轻载的性能必须在典型的负载跳变场景如从10%负载跳到50%负载下测试DCM状态时的表现。3. 规避策略一从拓扑与控制模式上根本性改善最彻底的规避方法就是让电源在目标工作范围内尽量不进入DCM或者让进入DCM后的行为更可控。这需要在设计初期就从拓扑和控制模式上进行选择。3.1 选用专为轻载优化的控制模式传统的电压模式或峰值电流模式在应对宽负载范围时对于DCM的适应性是较差的。现代电源芯片提供了更多高级模式突发模式这是最常见的轻载效率优化技术。当负载极轻时控制器会完全停止开关动作若干周期让输出电压缓慢下降直到跌至某个阈值以下再重新启动进行一组密集的开关脉冲将电压快速拉升。如此循环。这种模式实际上让系统在“小功率CCM脉冲串”和“休眠”之间切换完全避开了传统的DCM工作区从而避免了DCM带来的环路问题同时获得了极高的轻载效率。TI的“Eco-mode”ADI的“脉冲跳跃模式”本质都属于此类。谷值电流模式/边界导通模式这种模式通常用于反激或PFC电路。它控制开关管在电感电流下降到零即“谷底”时立即开启使得电路始终工作在DCM和CCM的边界BCM。虽然严格说仍是DCM但由于每个周期都从零开始且开关频率随负载变化其小信号特性比传统DCM更简单、更可预测环路设计相对容易。许多QR反激控制器就采用这种模式。恒定导通时间/恒定关断时间模式这些变频控制模式在负载变化时通过调节频率来维持导通或关断时间不变。在轻载时它们会自动降低开关频率这有助于减小开关损耗同时由于频率降低电感电流的峰值和平均值关系发生变化有时可以延缓进入深度DCM或者让进入DCM后的特性变化不那么剧烈。选型建议在设计宽输入电压、宽负载范围的应用时优先选择集成突发模式或高级恒定导通时间控制的电源芯片。仔细阅读数据手册中关于轻载工作模式的描述并关注其提供的轻载效率曲线和纹波特性。3.2 调整关键元件参数改变DCM/CCM边界如果已经选定了芯片和控制模式我们可以通过调整外围元件来改变临界负载电流点即让电源在更轻的负载下才进入DCM。增大电感值这是最直接的方法。根据公式I_critical (V_out * (1 - V_out/V_in)) / (2 * L * F_sw)对于Buck电路临界电流与电感值L成反比。增大L可以将临界电流向更小的方向移动扩展CCM的工作范围。但代价是电感体积和成本增加电流爬升斜率变慢可能影响重载瞬态响应。降低开关频率同样从上述公式看临界电流与开关频率F_sw成反比。降低频率也能扩展CCM范围。许多芯片允许通过外部电阻调节频率。但降低频率通常意味着需要更大的电感和输出电容来维持相同的纹波水平这会增大尺寸。这里需要一个权衡。我的经验是首先确定你的应用中最常见的典型负载点是什么。如果设备大部分时间处于中等负载那么应该优先保证这个负载点处于CCM以获得最优的稳态和动态性能。可以牺牲一点极轻载如待机状态的效率因为此时对动态响应要求不高突发模式可以弥补效率问题。实操心得不要盲目追求全负载范围CCM。对于一款消费电子产品如果80%的使用时间负载在30%-70%之间那就确保这个区间是CCM。对于10%以下的待机负载果断交给突发模式去处理这样能在性能、效率和成本间取得最佳平衡。4. 规避策略二针对性的环路补偿与滤波设计当电源不可避免地要在DCM区间工作时我们的补偿网络必须“知己知彼”针对DCM的特性进行设计。4.1 “双模”补偿思路一种实用的方法是将你的补偿网络设计成在CCM和DCM下都能提供可接受的性能而不是仅在CCM最优点上优化。识别最恶劣的DCM工况通常是在临界负载点附近刚刚进入DCM以及极轻载点。使用仿真工具如SIMPLIS或芯片厂商提供的PSIM/TINA模型或通过计算估算出这两个点对应的功率级传递函数参数如极点、零点位置。补偿器设计以CCM满载条件作为主设计点确保足够的相位裕度和带宽。然后将DCM轻载条件作为“检查点”。将设计好的补偿网络参数代入到DCM的模型中进行验证。关注DCM下的穿越频率和相位裕度。穿越频率在DCM下它会下降。确保下降后的穿越频率仍然能满足系统动态响应的最低要求例如不低于开关频率的1/20。相位裕度在DCM下它可能变得很大。只要系统稳定高相位裕度是可以接受的尽管响应会变慢。需要警惕的是如果补偿网络在CCM下引入了过多的相位超前在DCM下可能导致相位裕度反而不足。这时可能需要减少补偿网络中的零点使其相位曲线更平缓。优先使用Type II补偿对于电压模式控制的Buck电路在DCM下Type II补偿网络一个积分器一个零点通常比Type III两个零点更鲁棒。因为DCM本身近似一阶系统不需要Type III提供的第二个零点来抵消LC双极点。Type II结构更简单参数更少在两种模式下的行为差异更小更容易实现折中。4.2 输出滤波电容的优化选择DCM下输出电容的作用更加凸显因为它要独立支撑“空窗期”的负载电流。容量与ESR的权衡为了抑制DCM特有的低频跌落纹波需要足够大的电容容量。但大容量电容如电解电容通常具有较高的等效串联电感。在负载瞬变时ESL会阻碍电流的快速变化反而影响瞬态响应。因此一个经典的组合是一个或多个中等容量、低ESR的陶瓷电容如X7R/X5R材质10uF-100uF并联一个较大容量的聚合物铝电解电容或钽电容100uF以上。陶瓷电容负责提供高频响应抵消ESL影响大容量电容提供电荷库维持“空窗期”的电压稳定。电容的偏压效应特别注意陶瓷电容的容量会随其两端的直流偏压升高而急剧下降。一个标称22uF/25V的X5R电容在施加12V直流电压后其有效容量可能只剩下5-6uF。在设计时必须查阅电容厂商提供的“容量-直流偏压”曲线按照实际工作电压下的有效容量来计算纹波和动态响应否则实际性能会大打折扣。4.3 布局与噪声抑制的特别考量DCM模式对噪声更敏感因此PCB布局需要格外小心。热回路最小化对于Buck电路热回路指输入电容、上管、下管构成的快速开关电流路径。这个回路的面积必须尽可能小以降低寄生电感和电磁辐射。在DCM下这个回路中的电流变化率di/dt从有到无其产生的噪声频谱更复杂良好的布局是基础。反馈走线的屏蔽将反馈电阻的分压节点直接布置在输出电容两端并使用“ Kelvin连接 ”方式用独立的细走线直接连接到控制器的FB引脚远离任何开关节点、电感或二极管。最好用地线包围这组反馈走线防止噪声耦合。VCC供电的稳定性给控制芯片供电的VCC引脚其旁路电容必须紧贴引脚放置。一个不稳定的VCC电源会直接导致内部基准和误差放大器波动在DCM这种敏感状态下极易引发异常。5. 实测验证与调试技巧让理论落地设计完成之后真正的挑战在于调试和验证。以下是我在实验室里验证DCM性能时常用的步骤和方法。5.1 如何准确判断电源工作模式首先你得确认电源是否真的进入了DCM以及在何种负载下进入。电流探头法最直接使用电流探头直接测量电感电流波形。这是黄金标准。观察电流是否在每个周期内都回到零并保持一段时间。注意探头夹的方向要正确且需要良好的接地以减小噪声。观察开关节点电压法间接但常用对于非同步整流的Buck电路使用续流二极管当电感电流断续时在关断期间由于电感电流已为零二极管停止导通开关节点LX/SW的电压会从地电位二极管导通时振铃到输出电压Vout附近。这是因为电感和寄生电容形成了一个LC谐振电路。如果你在轻载时看到开关节点电压在二极管导通阶段结束后出现高频衰减振铃并且其中心电压在Vout上下这强烈暗示电路进入了DCM。对于同步整流电路这个方法不适用因为下管MOSFET可能反向导通。听声音与测纹波如前所述可闻啸叫和特定的低频纹波是DCM的伴随现象可以作为辅助判断。5.2 环路响应测试与优化使用网络分析仪或具有环路注入功能的电子负载如Venable Omicron的Bode 100等在关键负载点进行环路增益测试。选择注入点与注入电阻通常在反馈电阻分压网络的上臂电阻处注入扰动信号。注入电阻值一般为10-100欧姆远小于分压电阻值以避免影响直流工作点。扫描频率范围从远低于预期穿越频率如10Hz扫到开关频率的1/2或更高。重点关注两个点满载CCM和临界负载附近DCM。分析曲线对比两个负载点的曲线。DCM下的增益曲线整体应低于CCM且0dB穿越点穿越频率明显左移频率变低。检查相位裕度。在DCM下相位曲线通常更“平”相位裕度可能很大80度。只要大于45度一般认为是稳定的但需要结合瞬态测试。如果发现DCM下相位裕度急剧下降例如低于30度说明补偿网络需要调整。可能需要减小补偿网络中的零点电阻让零点频率提高从而在更宽的频率范围内提供相位提升。5.3 负载瞬态测试这是检验DCM下电源动态性能的终极测试。设置测试条件使用电子负载设置一个从轻载DCM区到中等负载CCM区的阶跃跳变以及反向跳变。跳变的斜率slew rate应模拟实际应用中最快的情况如CPU的负载阶跃。测量与评估用示波器高分辨率采集输出电压波形。关注几个关键指标最大电压跌落/过冲ΔV这直接反映了环路的响应速度。DCM下的ΔV通常会比CCM下大。恢复时间T_settling电压恢复到稳态值±1%或±2%范围内所需的时间。DCM下恢复时间会变长。振铃次数恢复过程中是否有持续的振荡。过多的振铃表明相位裕度不足即使在DCM下也可能存在稳定性问题。优化方向如果DCM下的瞬态响应不达标首先回头检查补偿网络。如果补偿网络已无优化空间则可能需要考虑增大输出电容或者如前所述调整电感值或开关频率来改变临界点让电源在典型瞬态负载范围内尽量不进入DCM。电源设计从来都是在折中中寻找最优解。DCM模式带来的挑战是真实存在的但绝非不可克服。通过理解其机理在拓扑选型、参数设计、补偿策略和布局验证等环节进行有针对性的处理我们完全可以让电源在全部工作范围内都表现得稳定可靠。记住没有“最好”的设计只有“最适合”当前应用需求的设计。下次当你面对一个轻载噪声大、动态响应慢的电源时不妨先从它的工作模式入手分析或许就能找到问题的钥匙。

相关新闻

深入C++对象模型:构造、拷贝、析构与内存布局全解析

深入C++对象模型:构造、拷贝、析构与内存布局全解析

1. 项目概述:为什么我们需要深入C对象模型?如果你写过一段时间的C,尤其是经历过一些稍复杂的项目,大概率遇到过这样的场景:你定义了一个类,里面有一些指针成员,然后你写了个拷贝构造函数&#x…

2026/10/13 8:40:24 阅读更多 →
Llama 3.1本地部署与Spring AI集成实战

Llama 3.1本地部署与Spring AI集成实战

1. 项目概述:Llama 3.1本地部署的技术价值在AI技术快速迭代的当下,能够自主掌控大语言模型的本地运行环境正成为开发者的核心能力。Llama 3.1作为Meta推出的开源模型,其70亿参数版本在消费级硬件上已具备实用价值。不同于云端API调用&#xf…

2026/10/9 20:02:44 阅读更多 →
Android APK安装失败全解析:从“无效”到“不兼容”的深度排查指南

Android APK安装失败全解析:从“无效”到“不兼容”的深度排查指南

1. 项目概述:当APK安装失败时,我们在面对什么?“安装包无效”或“安装包不兼容”,这两个弹窗对于任何一个Android开发者或热衷于折腾手机的用户来说,都堪称是噩梦般的提示。它不像闪退那样给你一个运行的机会&#xff…

2026/10/12 11:37:11 阅读更多 →

最新新闻

Agent技能拆解与编排实战:从碎片化到体系化

Agent技能拆解与编排实战:从碎片化到体系化

1. 技能碎片化:Agent落地的头号瓶颈这段时间在折腾智能体项目,我最大的体会就是:真正卡住进度的往往不是模型选型,不是推理框架,而是“技能”这层皮。模型再聪明,碰到实际任务时还是靠一个个具体技能去接活…

2026/10/13 8:39:55 阅读更多 →
reactor-core 基准测试实战:JMH 任务使用指南(benchmarks 模块)

reactor-core 基准测试实战:JMH 任务使用指南(benchmarks 模块)

后端异步编程 【免费下载链接】reactor-core Non-Blocking Reactive Foundation for the JVM 项目地址: https://gitcode.com/gh_mirrors/re/reactor-core 点击查看 免费下载 导读 本文以 benchmarks/README.md 为核心,系统讲解 reactor-core 仓库中 b…

2026/10/13 8:39:55 阅读更多 →
SonarQube报告解读:常见质量问题排查与修复实践

SonarQube报告解读:常见质量问题排查与修复实践

工作里接触到越来越多的团队把白盒测试和代码评审绑在一起做,而 SonarQube 几乎是绕不开的那道坎。它不直接帮你跑测试用例,却能在你每次提交代码后,从静态分析的角度告诉你“这里可能会炸”“那里是一个隐患”。我最初接触 SonarQube 时&…

2026/10/13 8:39:55 阅读更多 →
基于Vue与Node.js的同城民宿管理系统设计与实现

基于Vue与Node.js的同城民宿管理系统设计与实现

接手这类偏业务的开发项目,往往不是因为技术本身有多难,而是需求背后那堆"说不清道不明"的日常琐碎。去年夏天,一位做短租的经营者找到我,手里管着十几套分布在不同小区的民宿,订单、房态、保洁排班全靠Exce…

2026/10/13 8:39:55 阅读更多 →
报错别直接丢给AI:最小复现示例让AI改代码不再越改越乱

报错别直接丢给AI:最小复现示例让AI改代码不再越改越乱

先问一句:你有没有经历过这种场景——让AI改一段代码,第一次报错A,它给你改了;跑一下变成报错B,再让它改,变成报错C;改到第五轮,你发现项目里多了好几个没用的函数、几处重复的逻辑&…

2026/10/13 8:39:55 阅读更多 →
LiteLLM实战:统一大模型API网关的部署、路由与预算控制

LiteLLM实战:统一大模型API网关的部署、路由与预算控制

做AI应用这一年多,我最大的感受是:模型本身其实不是瓶颈,真正让人头大的是怎么把一堆杂七杂八的模型接入、路由、计费、限流这些东西收拾利索。LiteLLM这个开源项目,说白了就是帮你把这件事打包干完——它把市面上主流的大模型API…

2026/10/13 8:38:54 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →